diff --git a/app/Router.coffee b/app/Router.coffee index 47dadc52b..09e24287a 100644 --- a/app/Router.coffee +++ b/app/Router.coffee @@ -156,7 +156,6 @@ module.exports = class CocoRouter extends Backbone.Router './lib/services/facebook' './lib/services/google' './lib/services/twitter' - './lib/services/linkedin' ] for service in services diff --git a/app/application.coffee b/app/application.coffee index fe13be467..828a042f2 100644 --- a/app/application.coffee +++ b/app/application.coffee @@ -1,6 +1,5 @@ FacebookHandler = require 'lib/FacebookHandler' GPlusHandler = require 'lib/GPlusHandler' -LinkedInHandler = require 'lib/LinkedInHandler' GitHubHandler = require 'lib/GitHubHandler' locale = require 'locale/locale' # TODO: don't require all of these? Might be slow. (Haven't checked.) {me} = require 'lib/auth' @@ -45,7 +44,6 @@ Application = initialize: -> @gplusHandler = new GPlusHandler() @githubHandler = new GitHubHandler() $(document).bind 'keydown', preventBackspace - @linkedinHandler = new LinkedInHandler() preload(COMMON_FILES) $.i18n.init { lng: me.get('preferredLanguage', true) diff --git a/app/assets/images/common/button-background-active-border.png b/app/assets/images/common/button-background-active-border.png new file mode 100644 index 000000000..42dec5b5a Binary files /dev/null and b/app/assets/images/common/button-background-active-border.png differ diff --git a/app/assets/images/common/button-background-active.png b/app/assets/images/common/button-background-active.png new file mode 100644 index 000000000..aae72bb00 Binary files /dev/null and b/app/assets/images/common/button-background-active.png differ diff --git a/app/assets/images/common/button-background-disabled-border.png b/app/assets/images/common/button-background-disabled-border.png new file mode 100644 index 000000000..dbbe537cc Binary files /dev/null and b/app/assets/images/common/button-background-disabled-border.png differ diff --git a/app/assets/images/common/button-background-disabled.png b/app/assets/images/common/button-background-disabled.png new file mode 100644 index 000000000..78fae8539 Binary files /dev/null and b/app/assets/images/common/button-background-disabled.png differ diff --git a/app/assets/images/common/button-background-pressed-border.png b/app/assets/images/common/button-background-pressed-border.png new file mode 100644 index 000000000..d9c173d64 Binary files /dev/null and b/app/assets/images/common/button-background-pressed-border.png differ diff --git a/app/assets/images/common/button-background-pressed.png b/app/assets/images/common/button-background-pressed.png new file mode 100644 index 000000000..b1433c3ff Binary files /dev/null and b/app/assets/images/common/button-background-pressed.png differ diff --git a/app/assets/images/level/action_timeline_indicator.png b/app/assets/images/level/action_timeline_indicator.png deleted file mode 100644 index 2b6cff5bd..000000000 Binary files a/app/assets/images/level/action_timeline_indicator.png and /dev/null differ diff --git a/app/assets/images/level/code_editor_background.png b/app/assets/images/level/code_editor_background.png index 3dfc257af..daa5d7600 100644 Binary files a/app/assets/images/level/code_editor_background.png and b/app/assets/images/level/code_editor_background.png differ diff --git a/app/assets/images/level/code_editor_background_border.png b/app/assets/images/level/code_editor_background_border.png new file mode 100644 index 000000000..9c860168f Binary files /dev/null and b/app/assets/images/level/code_editor_background_border.png differ diff --git a/app/assets/images/level/code_editor_tab_background.png b/app/assets/images/level/code_editor_tab_background.png deleted file mode 100644 index a75431a78..000000000 Binary files a/app/assets/images/level/code_editor_tab_background.png and /dev/null differ diff --git a/app/assets/images/level/code_editor_tab_error_background.png b/app/assets/images/level/code_editor_tab_error_background.png deleted file mode 100644 index 5510ba6fa..000000000 Binary files a/app/assets/images/level/code_editor_tab_error_background.png and /dev/null differ diff --git a/app/assets/images/level/code_editor_top_bar_hinge.png b/app/assets/images/level/code_editor_top_bar_hinge.png new file mode 100644 index 000000000..852df87fc Binary files /dev/null and b/app/assets/images/level/code_editor_top_bar_hinge.png differ diff --git a/app/assets/images/level/code_editor_top_bar_wood_background.png b/app/assets/images/level/code_editor_top_bar_wood_background.png new file mode 100644 index 000000000..15d625b08 Binary files /dev/null and b/app/assets/images/level/code_editor_top_bar_wood_background.png differ diff --git a/app/assets/images/level/code_palette_background.png b/app/assets/images/level/code_palette_background.png deleted file mode 100644 index e4756b4df..000000000 Binary files a/app/assets/images/level/code_palette_background.png and /dev/null differ diff --git a/app/assets/images/level/code_palette_wood_background.png b/app/assets/images/level/code_palette_wood_background.png new file mode 100644 index 000000000..dbdda5af6 Binary files /dev/null and b/app/assets/images/level/code_palette_wood_background.png differ diff --git a/app/assets/images/level/code_toolbar_background.png b/app/assets/images/level/code_toolbar_background.png new file mode 100644 index 000000000..f05972b5c Binary files /dev/null and b/app/assets/images/level/code_toolbar_background.png differ diff --git a/app/assets/images/level/code_toolbar_run_button_active.png b/app/assets/images/level/code_toolbar_run_button_active.png new file mode 100644 index 000000000..ff3748d39 Binary files /dev/null and b/app/assets/images/level/code_toolbar_run_button_active.png differ diff --git a/app/assets/images/level/code_toolbar_run_button_active_pressed.png b/app/assets/images/level/code_toolbar_run_button_active_pressed.png new file mode 100644 index 000000000..b9c87d1ba Binary files /dev/null and b/app/assets/images/level/code_toolbar_run_button_active_pressed.png differ diff --git a/app/assets/images/level/code_toolbar_run_button_zazz.png b/app/assets/images/level/code_toolbar_run_button_zazz.png new file mode 100644 index 000000000..8b0e94225 Binary files /dev/null and b/app/assets/images/level/code_toolbar_run_button_zazz.png differ diff --git a/app/assets/images/level/code_toolbar_run_button_zazz_pressed.png b/app/assets/images/level/code_toolbar_run_button_zazz_pressed.png new file mode 100644 index 000000000..b6d173515 Binary files /dev/null and b/app/assets/images/level/code_toolbar_run_button_zazz_pressed.png differ diff --git a/app/assets/images/level/code_toolbar_submit_button_active.png b/app/assets/images/level/code_toolbar_submit_button_active.png new file mode 100644 index 000000000..0913c4e28 Binary files /dev/null and b/app/assets/images/level/code_toolbar_submit_button_active.png differ diff --git a/app/assets/images/level/code_toolbar_submit_button_active_pressed.png b/app/assets/images/level/code_toolbar_submit_button_active_pressed.png new file mode 100644 index 000000000..100f085f4 Binary files /dev/null and b/app/assets/images/level/code_toolbar_submit_button_active_pressed.png differ diff --git a/app/assets/images/level/code_toolbar_submit_button_zazz.png b/app/assets/images/level/code_toolbar_submit_button_zazz.png new file mode 100644 index 000000000..ff9eeac0c Binary files /dev/null and b/app/assets/images/level/code_toolbar_submit_button_zazz.png differ diff --git a/app/assets/images/level/code_toolbar_submit_button_zazz_pressed.png b/app/assets/images/level/code_toolbar_submit_button_zazz_pressed.png new file mode 100644 index 000000000..4875b697b Binary files /dev/null and b/app/assets/images/level/code_toolbar_submit_button_zazz_pressed.png differ diff --git a/app/assets/images/level/current_action_indicator.png b/app/assets/images/level/current_action_indicator.png deleted file mode 100644 index 6e6b9470d..000000000 Binary files a/app/assets/images/level/current_action_indicator.png and /dev/null differ diff --git a/app/assets/images/level/hud_background.png b/app/assets/images/level/hud_background.png new file mode 100644 index 000000000..e76950a8c Binary files /dev/null and b/app/assets/images/level/hud_background.png differ diff --git a/app/assets/images/level/hud_center.png b/app/assets/images/level/hud_center.png deleted file mode 100644 index 958d8d6d8..000000000 Binary files a/app/assets/images/level/hud_center.png and /dev/null differ diff --git a/app/assets/images/level/hud_hinge.png b/app/assets/images/level/hud_hinge.png new file mode 100644 index 000000000..bfbd5bc64 Binary files /dev/null and b/app/assets/images/level/hud_hinge.png differ diff --git a/app/assets/images/level/hud_left_wing.png b/app/assets/images/level/hud_left_wing.png deleted file mode 100644 index a52a46b61..000000000 Binary files a/app/assets/images/level/hud_left_wing.png and /dev/null differ diff --git a/app/assets/images/level/hud_right_wing.png b/app/assets/images/level/hud_right_wing.png deleted file mode 100644 index 63dcd29c3..000000000 Binary files a/app/assets/images/level/hud_right_wing.png and /dev/null differ diff --git a/app/assets/images/level/hud_wood_background.png b/app/assets/images/level/hud_wood_background.png new file mode 100644 index 000000000..3745a4d6b Binary files /dev/null and b/app/assets/images/level/hud_wood_background.png differ diff --git a/app/assets/images/level/no_selection_pointer.png b/app/assets/images/level/no_selection_pointer.png deleted file mode 100644 index 80a2419ea..000000000 Binary files a/app/assets/images/level/no_selection_pointer.png and /dev/null differ diff --git a/app/assets/images/level/playback_thumb.png b/app/assets/images/level/playback_thumb.png deleted file mode 100644 index 33f0562ad..000000000 Binary files a/app/assets/images/level/playback_thumb.png and /dev/null differ diff --git a/app/assets/images/level/thang_avatar_frame.png b/app/assets/images/level/thang_avatar_frame.png new file mode 100644 index 000000000..1b4fcc3d5 Binary files /dev/null and b/app/assets/images/level/thang_avatar_frame.png differ diff --git a/app/assets/images/level/wood_texture.png b/app/assets/images/level/wood_texture.png index dc824d802..3c33773cb 100644 Binary files a/app/assets/images/level/wood_texture.png and b/app/assets/images/level/wood_texture.png differ diff --git a/app/assets/index_old_browser.html b/app/assets/index_old_browser.html index 7b81c5ce4..d4fff3180 100644 --- a/app/assets/index_old_browser.html +++ b/app/assets/index_old_browser.html @@ -1,69 +1,42 @@ - - - - - + + + + + - - - CodeCombat - + CodeCombat - Learn how to code by playing a game + - + - + - + - - + - - - - - - - - - + + + + + - + -
+
diff --git a/app/assets/lib/ace/worker-xquery.js b/app/assets/lib/ace/worker-xquery.js deleted file mode 100644 index be049fe77..000000000 --- a/app/assets/lib/ace/worker-xquery.js +++ /dev/null @@ -1 +0,0 @@ -"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){console.error("Worker "+(i?i.stack:e))},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id),n.length||(n=["require","exports","module"]);if(t.indexOf("text!")===0)return;var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(e){require.tlns=e},e.initSender=function(){var t=e.require("ace/lib/event_emitter").EventEmitter,n=e.require("ace/lib/oop"),r=function(){};return function(){n.implement(this,t),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(r.prototype),new r};var t=e.main=null,n=e.sender=null;e.onmessage=function(r){var i=r.data;if(i.command){if(!t[i.command])throw new Error("Unknown command:"+i.command);t[i.command].apply(t,i.args)}else if(i.init){initBaseUrls(i.tlns),require("ace/lib/es5-shim"),n=e.sender=initSender();var s=require(i.module)[i.classname];t=e.main=new s(n)}else i.event&&n&&n._signal(i.event,i.data)}})(this),ace.define("ace/mode/xquery_worker",["require","exports","module","ace/lib/oop","ace/worker/mirror","ace/mode/xquery/xqlint","ace/mode/xquery/modules"],function(e,t,n){var r=e("../lib/oop"),i=e("../worker/mirror").Mirror,s=e("./xquery/xqlint"),o=s.XQLint,u=e("./xquery/modules").Modules,a=function(e){return function(t){var n=e,r=n[t],i={},s={};return r.functions.forEach(function(e){s[t+"#"+e.name+"#"+e.arity]={params:[]},e.parameters.forEach(function(n){s[t+"#"+e.name+"#"+e.arity].params.push("$"+n.name)})}),r.variables.forEach(function(e){var n=e.name.substring(e.name.indexOf(":")+1);i[t+"#"+n]={type:"VarDecl",annotations:[]}}),{variables:i,functions:s}}},f=t.XQueryWorker=function(e){i.call(this,e),this.setTimeout(200),this.opts={styleCheck:!1},this.availableModuleNamespaces=Object.keys(u),this.moduleResolver=a(u);var t=this;this.sender.on("complete",function(e){if(t.xqlint){var n={line:e.data.pos.row,col:e.data.pos.column},r=t.xqlint.getCompletions(n);t.sender.emit("complete",r)}}),this.sender.on("setAvailableModuleNamespaces",function(e){t.availableModuleNamespaces=e.data}),this.sender.on("setModuleResolver",function(e){t.moduleResolver=a(e.data)})};r.inherits(f,i),function(){this.onUpdate=function(){this.sender.emit("start");var e=this.doc.getValue(),t=s.createStaticContext();this.moduleResolver&&t.setModuleResolver(this.moduleResolver),this.availableModuleNamespaces&&(t.availableModuleNamespaces=this.availableModuleNamespaces);var n={styleCheck:this.styleCheck,staticContext:t};this.xqlint=new o(e,n),this.sender.emit("markers",this.xqlint.getMarkers())}}.call(f.prototype)}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length===0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._signal("change",{data:o}),i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._signal("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._signal("change",{data:i}),r},this.remove=function(e){e instanceof s||(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._signal("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._signal("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._signal("change",{data:o})},this.replace=function(e,t){e instanceof s||(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i0||-1)*Math.floor(Math.abs(e))),e}function o(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function u(e){var t,n,r;if(o(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(o(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(o(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if(typeof t!="function")throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=c.call(arguments,1),i=function(){if(this instanceof i){var r=t.apply(this,n.concat(c.call(arguments)));return Object(r)===r?r:this}return t.apply(e,n.concat(c.call(arguments)))};return t.prototype&&(r.prototype=t.prototype,i.prototype=new r,r.prototype=null),i});var a=Function.prototype.call,f=Array.prototype,l=Object.prototype,c=f.slice,h=a.bind(l.toString),p=a.bind(l.hasOwnProperty),d,v,m,g,y;if(y=p(l,"__defineGetter__"))d=a.bind(l.__defineGetter__),v=a.bind(l.__defineSetter__),m=a.bind(l.__lookupGetter__),g=a.bind(l.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+tu)for(h=f;h--;)this[a+h]=this[u+h];if(s&&e===l)this.length=l,this.push.apply(this,i);else{this.length=l+s;for(h=0;h>>0;if(h(e)!="[object Function]")throw new TypeError;while(++i>>0,i=Array(r),s=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var o=0;o>>0,i=[],s,o=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var u=0;u>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var i=0,s;if(arguments.length>=2)s=arguments[1];else do{if(i in n){s=n[i++];break}if(++i>=r)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;i>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var i,s=r-1;if(arguments.length>=2)i=arguments[1];else do{if(s in n){i=n[s--];break}if(--s<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do s in this&&(i=e.call(void 0,i,n[s],s,t));while(s--);return i});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(e){var t=E&&h(this)=="[object String]"?this.split(""):F(this),n=t.length>>>0;if(!n)return-1;var r=0;arguments.length>1&&(r=s(arguments[1])),r=r>=0?r:Math.max(0,n+r);for(;r>>0;if(!n)return-1;var r=n-1;arguments.length>1&&(r=Math.min(r,s(arguments[1]))),r=r>=0?r:n-Math.abs(r);for(;r>=0;r--)if(r in t&&e===t[r])return r;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:l)});if(!Object.getOwnPropertyDescriptor){var S="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(S+e);if(!p(e,t))return;var n,r,i;n={enumerable:!0,configurable:!0};if(y){var s=e.__proto__;e.__proto__=l;var r=m(e,t),i=g(e,t);e.__proto__=s;if(r||i)return r&&(n.get=r),i&&(n.set=i),n}return n.value=e[t],n}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)});if(!Object.create){var x;Object.prototype.__proto__===null?x=function(){return{__proto__:null}}:x=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var n;if(e===null)n=x();else{if(typeof e!="object")throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var r=function(){};r.prototype=e,n=new r,n.__proto__=e}return t!==void 0&&Object.defineProperties(n,t),n}}if(Object.defineProperty){var T=i({}),N=typeof document=="undefined"||i(document.createElement("div"));if(!T||!N)var C=Object.defineProperty}if(!Object.defineProperty||C){var k="Property description must be an object: ",L="Object.defineProperty called on non-object: ",A="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,n){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(L+e);if(typeof n!="object"&&typeof n!="function"||n===null)throw new TypeError(k+n);if(C)try{return C.call(Object,e,t,n)}catch(r){}if(p(n,"value"))if(y&&(m(e,t)||g(e,t))){var i=e.__proto__;e.__proto__=l,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!y)throw new TypeError(A);p(n,"get")&&d(e,t,n.get),p(n,"set")&&v(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)p(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(O){Object.freeze=function(e){return function(t){return typeof t=="function"?t:e(t)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;var t="";while(p(e,t))t+="?";e[t]=!0;var n=p(e,t);return delete e[t],n});if(!Object.keys){var M=!0,_=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],D=_.length;for(var P in{toString:null})M=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)p(e,t)&&I.push(t);if(M)for(var n=0,r=D;n ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.rowthis.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n=0;i--){if(!n.test(e[i]))break;r.push(e[i])}return r.reverse().join("")}function i(e,t){var n=0,r=e.length-1,i=Math.floor((r+n)/2);while(r>n&&i>=0&&e[i].indexOf(t)!==0)te[i]&&(n=i+1),i=Math.floor((r+r)/2);while(i>0&&e[i-1].indexOf(t)===0)i--;return i>=0?i:0}var s=e("../tree_ops").TreeOps,o=/[a-zA-Z_0-9\$]/,u=/[a-zA-Z_0-9\/\.:\-#]/,a="-._A-Za-z0-9:·À-ÖØ-öø-˿̀-ͽͿ-῿‌‍‿⁀⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�",f="["+a+"]",l=new RegExp(f),c={LetBinding:"Let binding",Param:"Function parameter",QuantifiedExpr:"Quantified expression binding",VarDeclStatement:"Local variable",ForBinding:"For binding",TumblingWindowClause:"Tumbling window binding",WindowVars:"Window variable",SlidingWindowClause:"Sliding window binding",PositionalVar:"Positional variable",CurrentItem:"Current item",PreviousItem:"Previous item",NextItem:"Next item",CountClause:"Count binding",GroupingVariable:"Grouping variable",VarDecl:"Module variable"},h=function(e,t){t.sort();var n=i(t,e),r=[];for(var s=n;s0){var e=a.children[0],t=null;for(var n=a.children.length-1;n>=0;n--){t=a.children[n];if(t.pos.el!==0||t.pos.ec!==0)break}a.pos.sl=e.pos.sl,a.pos.sc=e.pos.sc,a.pos.el=t.pos.el,a.pos.ec=t.pos.ec}a.name==="FunctionName"&&(a.name="EQName"),a.name==="EQName"&&a.value===undefined&&(a.value=a.children[0].value,a.children.pop()),s.indexOf(a.name)!==-1&&u.index.push(a),a.getParent!==null&&(a=a.getParent);if(a.children.length>0){var r=a.children[a.children.length-1];r.children.length===1&&o.indexOf(r.name)!==-1&&(a.children[a.children.length-1]=r.children[0])}}function i(e,t,n){var r=n-l;a.value=f.substring(0,r),f=f.substring(r),l=n;var i=h,s=c,o=i+a.value.split("\n").length-1,u=a.value.lastIndexOf("\n"),p=u===-1?s+a.value.length:a.value.substring(u+1).length;h=o,c=p,a.pos.sl=i,a.pos.sc=s,a.pos.el=o,a.pos.ec=p}var s=["VarDecl","FunctionDecl"],o=["OrExpr","AndExpr","ComparisonExpr","StringConcatExpr","RangeExpr","UnionExpr","IntersectExceptExpr","InstanceofExpr","TreatExpr","CastableExpr","CastExpr","UnaryExpr","ValueExpr","FTContainsExpr","SimpleMapExpr","PathExpr","RelativePathExpr","PostfixExpr","StepExpr"],u=null,a=null,f=e,l=0,c=0,h=0;this.closeParseTree=function(){while(a.getParent!==null)r();r()},this.peek=function(){return a},this.getParseTree=function(){return u},this.reset=function(){},this.startNonterminal=function(e,t){n(e,t)},this.endNonterminal=function(){r()},this.terminal=function(e,t,s){e=e.substring(0,1)==="'"&&e.substring(e.length-1)==="'"?"TOKEN":e,n(e,t),i(a,t,s),r()},this.whitespace=function(e,t){var s="WS";n(s,e),i(a,e,t),r()}}},{}],8:[function(e,t,n){var r=n.JSONiqParser=function i(e,t){function n(e,t){sc=t,uc=e,ac=e.length,r(0,0,0)}function r(e,t,n){Vl=t,$l=t,Jl=e,Kl=t,Ql=n,Gl=0,lc=n,tc=-1,oc={},sc.reset(uc)}function s(){sc.startNonterminal("Module",$l);switch(Jl){case 170:jl(169);break;default:Xl=Jl}(Xl==64682||Xl==137898)&&o(),Bl(279);switch(Jl){case 185:jl(144);break;default:Xl=Jl}switch(Xl){case 95929:Pl(),u();break;default:Pl(),Qa()}sc.endNonterminal("Module",$l)}function o(){sc.startNonterminal("VersionDecl",$l),Ml(170),Bl(118);switch(Jl){case 126:Ml(126),Bl(17),Ml(11);break;default:Ml(269),Bl(17),Ml(11),Bl(111),Jl==126&&(Ml(126),Bl(17),Ml(11))}Bl(29),Pl(),l(),sc.endNonterminal("VersionDecl",$l)}function u(){sc.startNonterminal("LibraryModule",$l),a(),Bl(140),Pl(),f(),sc.endNonterminal("LibraryModule",$l)}function a(){sc.startNonterminal("ModuleDecl",$l),Ml(185),Bl(64),Ml(187),Bl(241),Pl(),Ja(),Bl(30),Ml(61),Bl(15),Ml(7),Bl(29),Pl(),l(),sc.endNonterminal("ModuleDecl",$l)}function f(){sc.startNonterminal("Prolog",$l);for(;;){Bl(279);switch(Jl){case 109:jl(208);break;case 155:jl(170);break;default:Xl=Jl}if(Xl!=43117&&Xl!=44141&&Xl!=50797&&Xl!=53869&&Xl!=54893&&Xl!=56429&&Xl!=73325&&Xl!=94875&&Xl!=95853&&Xl!=106093&&Xl!=115821&&Xl!=117403)break;switch(Jl){case 109:jl(199);break;default:Xl=Jl}if(Xl==56429){Xl=Ul(0,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{M(),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(0,$l,Xl)}}switch(Xl){case-1:Pl(),O();break;case 95853:Pl(),A();break;case 155:Pl(),N();break;case 73325:Pl(),_();break;default:Pl(),c()}Bl(29),Pl(),l()}for(;;){Bl(279);switch(Jl){case 109:jl(201);break;default:Xl=Jl}if(Xl!=17005&&Xl!=49261&&Xl!=52333&&Xl!=75373&&Xl!=80493&&Xl!=83565&&Xl!=104045&&Xl!=134765&&Xl!=137325)break;switch(Jl){case 109:jl(197);break;default:Xl=Jl}switch(Xl){case 52333:Pl(),q();break;case 104045:Pl(),K();break;default:Pl(),D()}Bl(29),Pl(),l()}sc.endNonterminal("Prolog",$l)}function l(){sc.startNonterminal("Separator",$l),Ml(54),sc.endNonterminal("Separator",$l)}function c(){sc.startNonterminal("Setter",$l);switch(Jl){case 109:jl(195);break;default:Xl=Jl}if(Xl==56429){Xl=Ul(1,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{d(),Xl=-2}catch(a){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),b(),Xl=-6}catch(f){Xl=-9}}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(1,$l,Xl)}}switch(Xl){case 44141:h();break;case-2:p();break;case 43117:v();break;case 50797:m();break;case 106093:g();break;case-6:y();break;case 115821:Bo();break;case 53869:w();break;default:x()}sc.endNonterminal("Setter",$l)}function h(){sc.startNonterminal("BoundarySpaceDecl",$l),Ml(109),Bl(36),Ml(86),Bl(135);switch(Jl){case 218:Ml(218);break;default:Ml(246)}sc.endNonterminal("BoundarySpaceDecl",$l)}function p(){sc.startNonterminal("DefaultCollationDecl",$l),Ml(109),Bl(49),Ml(110),Bl(41),Ml(95),Bl(15),Ml(7),sc.endNonterminal("DefaultCollationDecl",$l)}function d(){_l(109),Bl(49),_l(110),Bl(41),_l(95),Bl(15),_l(7)}function v(){sc.startNonterminal("BaseURIDecl",$l),Ml(109),Bl(35),Ml(84),Bl(15),Ml(7),sc.endNonterminal("BaseURIDecl",$l)}function m(){sc.startNonterminal("ConstructionDecl",$l),Ml(109),Bl(44),Ml(99),Bl(135);switch(Jl){case 246:Ml(246);break;default:Ml(218)}sc.endNonterminal("ConstructionDecl",$l)}function g(){sc.startNonterminal("OrderingModeDecl",$l),Ml(109),Bl(71),Ml(207),Bl(133);switch(Jl){case 206:Ml(206);break;default:Ml(262)}sc.endNonterminal("OrderingModeDecl",$l)}function y(){sc.startNonterminal("EmptyOrderDecl",$l),Ml(109),Bl(49),Ml(110),Bl(70),Ml(205),Bl(52),Ml(124),Bl(123);switch(Jl){case 149:Ml(149);break;default:Ml(176)}sc.endNonterminal("EmptyOrderDecl",$l)}function b(){_l(109),Bl(49),_l(110),Bl(70),_l(205),Bl(52),_l(124),Bl(123);switch(Jl){case 149:_l(149);break;default:_l(176)}}function w(){sc.startNonterminal("CopyNamespacesDecl",$l),Ml(109),Bl(47),Ml(105),Bl(130),Pl(),E(),Bl(25),Ml(42),Bl(125),Pl(),S(),sc.endNonterminal("CopyNamespacesDecl",$l)}function E(){sc.startNonterminal("PreserveMode",$l);switch(Jl){case 218:Ml(218);break;default:Ml(193)}sc.endNonterminal("PreserveMode",$l)}function S(){sc.startNonterminal("InheritMode",$l);switch(Jl){case 159:Ml(159);break;default:Ml(192)}sc.endNonterminal("InheritMode",$l)}function x(){sc.startNonterminal("DecimalFormatDecl",$l),Ml(109),Bl(116);switch(Jl){case 107:Ml(107),Bl(247),Pl(),Wa();break;default:Ml(110),Bl(48),Ml(107)}for(;;){Bl(203);if(Jl==54)break;Pl(),T(),Bl(30),Ml(61),Bl(17),Ml(11)}sc.endNonterminal("DecimalFormatDecl",$l)}function T(){sc.startNonterminal("DFPropertyName",$l);switch(Jl){case 108:Ml(108);break;case 151:Ml(151);break;case 158:Ml(158);break;case 182:Ml(182);break;case 68:Ml(68);break;case 213:Ml(213);break;case 212:Ml(212);break;case 280:Ml(280);break;case 117:Ml(117);break;default:Ml(211)}sc.endNonterminal("DFPropertyName",$l)}function N(){sc.startNonterminal("Import",$l);switch(Jl){case 155:jl(128);break;default:Xl=Jl}switch(Xl){case 117403:C();break;default:L()}sc.endNonterminal("Import",$l)}function C(){sc.startNonterminal("SchemaImport",$l),Ml(155),Bl(75),Ml(229),Bl(139),Jl!=7&&(Pl(),k()),Bl(15),Ml(7),Bl(110);if(Jl==82){Ml(82),Bl(15),Ml(7);for(;;){Bl(105);if(Jl!=42)break;Ml(42),Bl(15),Ml(7)}}sc.endNonterminal("SchemaImport",$l)}function k(){sc.startNonterminal("SchemaPrefix",$l);switch(Jl){case 187:Ml(187),Bl(241),Pl(),Ja(),Bl(30),Ml(61);break;default:Ml(110),Bl(50),Ml(122),Bl(64),Ml(187)}sc.endNonterminal("SchemaPrefix",$l)}function L(){sc.startNonterminal("ModuleImport",$l),Ml(155),Bl(63),Ml(185),Bl(92),Jl==187&&(Ml(187),Bl(241),Pl(),Ja(),Bl(30),Ml(61)),Bl(15),Ml(7),Bl(110);if(Jl==82){Ml(82),Bl(15),Ml(7);for(;;){Bl(105);if(Jl!=42)break;Ml(42),Bl(15),Ml(7)}}sc.endNonterminal("ModuleImport",$l)}function A(){sc.startNonterminal("NamespaceDecl",$l),Ml(109),Bl(64),Ml(187),Bl(241),Pl(),Ja(),Bl(30),Ml(61),Bl(15),Ml(7),sc.endNonterminal("NamespaceDecl",$l)}function O(){sc.startNonterminal("DefaultNamespaceDecl",$l),Ml(109),Bl(49),Ml(110),Bl(117);switch(Jl){case 122:Ml(122);break;default:Ml(147)}Bl(64),Ml(187),Bl(15),Ml(7),sc.endNonterminal("DefaultNamespaceDecl",$l)}function M(){_l(109),Bl(49),_l(110),Bl(117);switch(Jl){case 122:_l(122);break;default:_l(147)}Bl(64),_l(187),Bl(15),_l(7)}function _(){sc.startNonterminal("FTOptionDecl",$l),Ml(109),Bl(55),Ml(143),Bl(83),Pl(),$u(),sc.endNonterminal("FTOptionDecl",$l)}function D(){sc.startNonterminal("AnnotatedDecl",$l),Ml(109);for(;;){Bl(193);if(Jl!=33&&Jl!=263)break;switch(Jl){case 263:Pl(),P();break;default:Pl(),H()}}switch(Jl){case 268:Pl(),j();break;case 147:Pl(),Al();break;case 96:Pl(),xa();break;case 157:Pl(),_a();break;default:Pl(),Da()}sc.endNonterminal("AnnotatedDecl",$l)}function P(){sc.startNonterminal("CompatibilityAnnotation",$l),Ml(263),sc.endNonterminal("CompatibilityAnnotation",$l)}function H(){sc.startNonterminal("Annotation",$l),Ml(33),Bl(247),Pl(),Wa(),Bl(194);if(Jl==35){Ml(35),Bl(191),Pl(),ci();for(;;){Bl(103);if(Jl!=42)break;Ml(42),Bl(191),Pl(),ci()}Ml(38)}sc.endNonterminal("Annotation",$l)}function B(){_l(33),Bl(247),Xa(),Bl(194);if(Jl==35){_l(35),Bl(191),hi();for(;;){Bl(103);if(Jl!=42)break;_l(42),Bl(191),hi()}_l(38)}}function j(){sc.startNonterminal("VarDecl",$l),Ml(268),Bl(21),Ml(31),Bl(247),Pl(),Ei(),Bl(156),Jl==80&&(Pl(),xs()),Bl(108);switch(Jl){case 53:Ml(53),Bl(268),Pl(),F();break;default:Ml(134),Bl(106),Jl==53&&(Ml(53),Bl(268),Pl(),I())}sc.endNonterminal("VarDecl",$l)}function F(){sc.startNonterminal("VarValue",$l),Rf(),sc.endNonterminal("VarValue",$l)}function I(){sc.startNonterminal("VarDefaultValue",$l),Rf(),sc.endNonterminal("VarDefaultValue",$l)}function q(){sc.startNonterminal("ContextItemDecl",$l),Ml(109),Bl(46),Ml(102),Bl(58),Ml(167),Bl(156),Jl==80&&(Ml(80),Bl(255),Pl(),As()),Bl(108);switch(Jl){case 53:Ml(53),Bl(268),Pl(),F();break;default:Ml(134),Bl(106),Jl==53&&(Ml(53),Bl(268),Pl(),I())}sc.endNonterminal("ContextItemDecl",$l)}function R(){sc.startNonterminal("ParamList",$l),z();for(;;){Bl(103);if(Jl!=42)break;Ml(42),Bl(21),Pl(),z()}sc.endNonterminal("ParamList",$l)}function U(){W();for(;;){Bl(103);if(Jl!=42)break;_l(42),Bl(21),W()}}function z(){sc.startNonterminal("Param",$l),Ml(31),Bl(247),Pl(),Wa(),Bl(152),Jl==80&&(Pl(),xs()),sc.endNonterminal("Param",$l)}function W(){_l(31),Bl(247),Xa(),Bl(152),Jl==80&&Ts()}function X(){sc.startNonterminal("FunctionBody",$l),$(),sc.endNonterminal("FunctionBody",$l)}function V(){J()}function $(){sc.startNonterminal("EnclosedExpr",$l),Ml(281),Bl(268),Pl(),Q(),Ml(287),sc.endNonterminal("EnclosedExpr",$l)}function J(){_l(281),Bl(268),G(),_l(287)}function K(){sc.startNonterminal("OptionDecl",$l),Ml(109),Bl(69),Ml(203),Bl(247),Pl(),Wa(),Bl(17),Ml(11),sc.endNonterminal("OptionDecl",$l)}function Q(){sc.startNonterminal("Expr",$l),Rf();for(;;){if(Jl!=42)break;Ml(42),Bl(268),Pl(),Rf()}sc.endNonterminal("Expr",$l)}function G(){Uf();for(;;){if(Jl!=42)break;_l(42),Bl(268),Uf()}}function Y(){sc.startNonterminal("FLWORExpr",$l),et();for(;;){Bl(200);if(Jl==224||Jl==233)break;Pl(),nt()}Pl(),nn(),sc.endNonterminal("FLWORExpr",$l)}function Z(){tt();for(;;){Bl(200);if(Jl==224||Jl==233)break;rt()}rn()}function et(){sc.startNonterminal("InitialClause",$l);switch(Jl){case 139:case 142:jl(150);break;default:Xl=Jl}switch(Xl){case 16011:case 16014:it();break;case 177:dt();break;default:yt()}sc.endNonterminal("InitialClause",$l)}function tt(){switch(Jl){case 139:case 142:jl(150);break;default:Xl=Jl}switch(Xl){case 16011:case 16014:st();break;case 177:vt();break;default:bt()}}function nt(){sc.startNonterminal("IntermediateClause",$l);switch(Jl){case 272:Ft();break;case 150:qt();break;case 205:case 241:Jt();break;case 106:Bt();break;default:et()}sc.endNonterminal("IntermediateClause",$l)}function rt(){switch(Jl){case 272:It();break;case 150:Rt();break;case 205:case 241:Kt();break;case 106:jt();break;default:tt()}}function it(){sc.startNonterminal("ForClause",$l);switch(Jl){case 139:Ml(139);break;default:Ml(142)}Bl(21),Pl(),ot();for(;;){if(Jl!=42)break;Ml(42),Bl(21),Pl(),ot()}sc.endNonterminal("ForClause",$l)}function st(){switch(Jl){case 139:_l(139);break;default:_l(142)}Bl(21),ut();for(;;){if(Jl!=42)break;_l(42),Bl(21),ut()}}function ot(){sc.startNonterminal("ForBinding",$l),Ml(31),Bl(247),Pl(),Ei(),Bl(183),Jl==80&&(Pl(),xs()),Bl(174),Jl==73&&(Pl(),at()),Bl(159),Jl==82&&(Pl(),lt()),Bl(124),Jl==232&&(Pl(),ht()),Bl(56),Ml(156),Bl(268),Pl(),Rf(),sc.endNonterminal("ForBinding",$l)}function ut(){_l(31),Bl(247),Si(),Bl(183),Jl==80&&Ts(),Bl(174),Jl==73&&ft(),Bl(159),Jl==82&&ct(),Bl(124),Jl==232&&pt(),Bl(56),_l(156),Bl(268),Uf()}function at(){sc.startNonterminal("AllowingEmpty",$l),Ml(73),Bl(52),Ml(124),sc.endNonterminal("AllowingEmpty",$l)}function ft(){_l(73),Bl(52),_l(124)}function lt(){sc.startNonterminal("PositionalVar",$l),Ml(82),Bl(21),Ml(31),Bl(247),Pl(),Ei(),sc.endNonterminal("PositionalVar",$l)}function ct(){_l(82),Bl(21),_l(31),Bl(247),Si()}function ht(){sc.startNonterminal("FTScoreVar",$l),Ml(232),Bl(21),Ml(31),Bl(247),Pl(),Ei(),sc.endNonterminal("FTScoreVar",$l)}function pt(){_l(232),Bl(21),_l(31),Bl(247),Si()}function dt(){sc.startNonterminal("LetClause",$l),Ml(177),Bl(98),Pl(),mt();for(;;){if(Jl!=42)break;Ml(42),Bl(98),Pl(),mt()}sc.endNonterminal("LetClause",$l)}function vt(){_l(177),Bl(98),gt();for(;;){if(Jl!=42)break;_l(42),Bl(98),gt()}}function mt(){sc.startNonterminal("LetBinding",$l);switch(Jl){case 31:Ml(31),Bl(247),Pl(),Ei(),Bl(107),Jl==80&&(Pl(),xs());break;default:ht()}Bl(28),Ml(53),Bl(268),Pl(),Rf(),sc.endNonterminal("LetBinding",$l)}function gt(){switch(Jl){case 31:_l(31),Bl(247),Si(),Bl(107),Jl==80&&Ts();break;default:pt()}Bl(28),_l(53),Bl(268),Uf()}function yt(){sc.startNonterminal("WindowClause",$l);switch(Jl){case 139:Ml(139);break;default:Ml(142)}Bl(137);switch(Jl){case 257:Pl(),wt();break;default:Pl(),St()}sc.endNonterminal("WindowClause",$l)}function bt(){switch(Jl){case 139:_l(139);break;default:_l(142)}Bl(137);switch(Jl){case 257:Et();break;default:xt()}}function wt(){sc.startNonterminal("TumblingWindowClause",$l),Ml(257),Bl(87),Ml(275),Bl(21),Ml(31),Bl(247),Pl(),Ei(),Bl(112),Jl==80&&(Pl(),xs()),Bl(56),Ml(156),Bl(268),Pl(),Rf(),Pl(),Tt();if(Jl==127||Jl==202)Pl(),Ct();sc.endNonterminal("TumblingWindowClause",$l)}function Et(){_l(257),Bl(87),_l(275),Bl(21),_l(31),Bl(247),Si(),Bl(112),Jl==80&&Ts(),Bl(56),_l(156),Bl(268),Uf(),Nt(),(Jl==127||Jl==202)&&kt()}function St(){sc.startNonterminal("SlidingWindowClause",$l),Ml(239),Bl(87),Ml(275),Bl(21),Ml(31),Bl(247),Pl(),Ei(),Bl(112),Jl==80&&(Pl(),xs()),Bl(56),Ml(156),Bl(268),Pl(),Rf(),Pl(),Tt(),Pl(),Ct(),sc.endNonterminal("SlidingWindowClause",$l)}function xt(){_l(239),Bl(87),_l(275),Bl(21),_l(31),Bl(247),Si(),Bl(112),Jl==80&&Ts(),Bl(56),_l(156),Bl(268),Uf(),Nt(),kt()}function Tt(){sc.startNonterminal("WindowStartCondition",$l),Ml(242),Bl(182),Pl(),Lt(),Bl(85),Ml(271),Bl(268),Pl(),Rf(),sc.endNonterminal("WindowStartCondition",$l)}function Nt(){_l(242),Bl(182),At(),Bl(85),_l(271),Bl(268),Uf()}function Ct(){sc.startNonterminal("WindowEndCondition",$l),Jl==202&&Ml(202),Bl(53),Ml(127),Bl(182),Pl(),Lt(),Bl(85),Ml(271),Bl(268),Pl(),Rf(),sc.endNonterminal("WindowEndCondition",$l)}function kt(){Jl==202&&_l(202),Bl(53),_l(127),Bl(182),At(),Bl(85),_l(271),Bl(268),Uf()}function Lt(){sc.startNonterminal("WindowVars",$l),Jl==31&&(Ml(31),Bl(247),Pl(),Ot()),Bl(175),Jl==82&&(Pl(),lt()),Bl(162),Jl==219&&(Ml(219),Bl(21),Ml(31),Bl(247),Pl(),_t()),Bl(129),Jl==190&&(Ml(190),Bl(21),Ml(31),Bl(247),Pl(),Pt()),sc.endNonterminal("WindowVars",$l)}function At(){Jl==31&&(_l(31),Bl(247),Mt()),Bl(175),Jl==82&&ct(),Bl(162),Jl==219&&(_l(219),Bl(21),_l(31),Bl(247),Dt()),Bl(129),Jl==190&&(_l(190),Bl(21),_l(31),Bl(247),Ht())}function Ot(){sc.startNonterminal("CurrentItem",$l),Wa(),sc.endNonterminal("CurrentItem",$l)}function Mt(){Xa()}function _t(){sc.startNonterminal("PreviousItem",$l),Wa(),sc.endNonterminal("PreviousItem",$l)}function Dt(){Xa()}function Pt(){sc.startNonterminal("NextItem",$l),Wa(),sc.endNonterminal("NextItem",$l)}function Ht(){Xa()}function Bt(){sc.startNonterminal("CountClause",$l),Ml(106),Bl(21),Ml(31),Bl(247),Pl(),Ei(),sc.endNonterminal("CountClause",$l)}function jt(){_l(106),Bl(21),_l(31),Bl(247),Si()}function Ft(){sc.startNonterminal("WhereClause",$l),Ml(272),Bl(268),Pl(),Rf(),sc.endNonterminal("WhereClause",$l)}function It(){_l(272),Bl(268),Uf()}function qt(){sc.startNonterminal("GroupByClause",$l),Ml(150),Bl(37),Ml(88),Bl(268),Pl(),Ut(),sc.endNonterminal("GroupByClause",$l)}function Rt(){_l(150),Bl(37),_l(88),Bl(268),zt()}function Ut(){sc.startNonterminal("GroupingSpecList",$l),Wt();for(;;){Bl(202);if(Jl!=42)break;Ml(42),Bl(268),Pl(),Wt()}sc.endNonterminal("GroupingSpecList",$l)}function zt(){Xt();for(;;){Bl(202);if(Jl!=42)break;_l(42),Bl(268),Xt()}}function Wt(){sc.startNonterminal("GroupingSpec",$l);switch(Jl){case 31:jl(247);break;default:Xl=Jl}if(Xl==3103||Xl==36383||Xl==37407||Xl==37919||Xl==38431||Xl==38943||Xl==39967||Xl==40479||Xl==40991||Xl==41503||Xl==42015||Xl==42527||Xl==43039||Xl==43551||Xl==44063||Xl==44575||Xl==45599||Xl==46111||Xl==46623||Xl==47135||Xl==48159||Xl==48671||Xl==49695||Xl==50207||Xl==50719||Xl==52255||Xl==52767||Xl==53279||Xl==53791||Xl==54303||Xl==54815||Xl==55839||Xl==56351||Xl==56863||Xl==57375||Xl==57887||Xl==58399||Xl==60959||Xl==61471||Xl==61983||Xl==62495||Xl==63007||Xl==63519||Xl==64031||Xl==64543||Xl==65055||Xl==66079||Xl==66591||Xl==67615||Xl==68127||Xl==68639||Xl==69151||Xl==69663||Xl==70175||Xl==70687||Xl==71199||Xl==72735||Xl==73247||Xl==75295||Xl==75807||Xl==76831||Xl==77855||Xl==78367||Xl==78879||Xl==79391||Xl==79903||Xl==80415||Xl==82463||Xl==82975||Xl==83487||Xl==83999||Xl==84511||Xl==85023||Xl==85535||Xl==86047||Xl==86559||Xl==87071||Xl==88607||Xl==89119||Xl==89631||Xl==90655||Xl==91679||Xl==92703||Xl==93727||Xl==94239||Xl==94751||Xl==95775||Xl==96287||Xl==96799||Xl==99359||Xl==99871||Xl==100895||Xl==101407||Xl==103455||Xl==103967||Xl==104479||Xl==104991||Xl==105503||Xl==106015||Xl==107551||Xl==110623||Xl==111135||Xl==112671||Xl==113695||Xl==114207||Xl==114719||Xl==115231||Xl==115743||Xl==116767||Xl==117279||Xl==117791||Xl==118303||Xl==118815||Xl==119327||Xl==119839||Xl==122399||Xl==122911||Xl==123423||Xl==123935||Xl==125471||Xl==126495||Xl==127007||Xl==127519||Xl==129567||Xl==130079||Xl==130591||Xl==131103||Xl==131615||Xl==132127||Xl==132639||Xl==133151||Xl==134175||Xl==134687||Xl==136223||Xl==136735||Xl==137247||Xl==137759||Xl==139295||Xl==139807||Xl==141343){Xl=Ul(2,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{$t(),Bl(207);if(Jl==53||Jl==80)Jl==80&&Ts(),Bl(28),_l(53),Bl(268),Uf();Jl==95&&(_l(95),Bl(15),_l(7)),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(2,$l,Xl)}}switch(Xl){case-1:Vt(),Bl(207);if(Jl==53||Jl==80)Jl==80&&(Pl(),xs()),Bl(28),Ml(53),Bl(268),Pl(),Rf();Jl==95&&(Ml(95),Bl(15),Ml(7));break;default:Rf()}sc.endNonterminal("GroupingSpec",$l)}function Xt(){switch(Jl){case 31:jl(247);break;default:Xl=Jl}if(Xl==3103||Xl==36383||Xl==37407||Xl==37919||Xl==38431||Xl==38943||Xl==39967||Xl==40479||Xl==40991||Xl==41503||Xl==42015||Xl==42527||Xl==43039||Xl==43551||Xl==44063||Xl==44575||Xl==45599||Xl==46111||Xl==46623||Xl==47135||Xl==48159||Xl==48671||Xl==49695||Xl==50207||Xl==50719||Xl==52255||Xl==52767||Xl==53279||Xl==53791||Xl==54303||Xl==54815||Xl==55839||Xl==56351||Xl==56863||Xl==57375||Xl==57887||Xl==58399||Xl==60959||Xl==61471||Xl==61983||Xl==62495||Xl==63007||Xl==63519||Xl==64031||Xl==64543||Xl==65055||Xl==66079||Xl==66591||Xl==67615||Xl==68127||Xl==68639||Xl==69151||Xl==69663||Xl==70175||Xl==70687||Xl==71199||Xl==72735||Xl==73247||Xl==75295||Xl==75807||Xl==76831||Xl==77855||Xl==78367||Xl==78879||Xl==79391||Xl==79903||Xl==80415||Xl==82463||Xl==82975||Xl==83487||Xl==83999||Xl==84511||Xl==85023||Xl==85535||Xl==86047||Xl==86559||Xl==87071||Xl==88607||Xl==89119||Xl==89631||Xl==90655||Xl==91679||Xl==92703||Xl==93727||Xl==94239||Xl==94751||Xl==95775||Xl==96287||Xl==96799||Xl==99359||Xl==99871||Xl==100895||Xl==101407||Xl==103455||Xl==103967||Xl==104479||Xl==104991||Xl==105503||Xl==106015||Xl==107551||Xl==110623||Xl==111135||Xl==112671||Xl==113695||Xl==114207||Xl==114719||Xl==115231||Xl==115743||Xl==116767||Xl==117279||Xl==117791||Xl==118303||Xl==118815||Xl==119327||Xl==119839||Xl==122399||Xl==122911||Xl==123423||Xl==123935||Xl==125471||Xl==126495||Xl==127007||Xl==127519||Xl==129567||Xl==130079||Xl==130591||Xl==131103||Xl==131615||Xl==132127||Xl==132639||Xl==133151||Xl==134175||Xl==134687||Xl==136223||Xl==136735||Xl==137247||Xl==137759||Xl==139295||Xl==139807||Xl==141343){Xl=Ul(2,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{$t(),Bl(207);if(Jl==53||Jl==80)Jl==80&&Ts(),Bl(28),_l(53),Bl(268),Uf();Jl==95&&(_l(95),Bl(15),_l(7)),Rl(2,t,-1),Xl=-3}catch(a){Xl=-2,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(2,t,-2)}}}switch(Xl){case-1:$t(),Bl(207);if(Jl==53||Jl==80)Jl==80&&Ts(),Bl(28),_l(53),Bl(268),Uf();Jl==95&&(_l(95),Bl(15),_l(7));break;case-3:break;default:Uf()}}function Vt(){sc.startNonterminal("GroupingVariable",$l),Ml(31),Bl(247),Pl(),Ei(),sc.endNonterminal("GroupingVariable",$l)}function $t(){_l(31),Bl(247),Si()}function Jt(){sc.startNonterminal("OrderByClause",$l);switch(Jl){case 205:Ml(205),Bl(37),Ml(88);break;default:Ml(241),Bl(70),Ml(205),Bl(37),Ml(88)}Bl(268),Pl(),Qt(),sc.endNonterminal("OrderByClause",$l)}function Kt(){switch(Jl){case 205:_l(205),Bl(37),_l(88);break;default:_l(241),Bl(70),_l(205),Bl(37),_l(88)}Bl(268),Gt()}function Qt(){sc.startNonterminal("OrderSpecList",$l),Yt();for(;;){Bl(202);if(Jl!=42)break;Ml(42),Bl(268),Pl(),Yt()}sc.endNonterminal("OrderSpecList",$l)}function Gt(){Zt();for(;;){Bl(202);if(Jl!=42)break;_l(42),Bl(268),Zt()}}function Yt(){sc.startNonterminal("OrderSpec",$l),Rf(),Pl(),en(),sc.endNonterminal("OrderSpec",$l)}function Zt(){Uf(),tn()}function en(){sc.startNonterminal("OrderModifier",$l);if(Jl==81||Jl==114)switch(Jl){case 81:Ml(81);break;default:Ml(114)}Bl(206);if(Jl==124){Ml(124),Bl(123);switch(Jl){case 149:Ml(149);break;default:Ml(176)}}Bl(205),Jl==95&&(Ml(95),Bl(15),Ml(7)),sc.endNonterminal("OrderModifier",$l)}function tn(){if(Jl==81||Jl==114)switch(Jl){case 81:_l(81);break;default:_l(114)}Bl(206);if(Jl==124){_l(124),Bl(123);switch(Jl){case 149:_l(149);break;default:_l(176)}}Bl(205),Jl==95&&(_l(95),Bl(15),_l(7))}function nn(){sc.startNonterminal("ReturnClause",$l);switch(Jl){case 224:Ml(224);break;default:Ml(233)}Bl(268),Pl(),Rf(),sc.endNonterminal("ReturnClause",$l)}function rn(){switch(Jl){case 224:_l(224);break;default:_l(233)}Bl(268),Uf()}function sn(){sc.startNonterminal("QuantifiedExpr",$l);switch(Jl){case 240:Ml(240);break;default:Ml(130)}Bl(21),Ml(31),Bl(247),Pl(),Ei(),Bl(112),Jl==80&&(Pl(),xs()),Bl(56),Ml(156),Bl(268),Pl(),Rf();for(;;){if(Jl!=42)break;Ml(42),Bl(21),Ml(31),Bl(247),Pl(),Ei(),Bl(112),Jl==80&&(Pl(),xs()),Bl(56),Ml(156),Bl(268),Pl(),Rf()}Ml(228),Bl(268),Pl(),Rf(),sc.endNonterminal("QuantifiedExpr",$l)}function on(){switch(Jl){case 240:_l(240);break;default:_l(130)}Bl(21),_l(31),Bl(247),Si(),Bl(112),Jl==80&&Ts(),Bl(56),_l(156),Bl(268),Uf();for(;;){if(Jl!=42)break;_l(42),Bl(21),_l(31),Bl(247),Si(),Bl(112),Jl==80&&Ts(),Bl(56),_l(156),Bl(268),Uf()}_l(228),Bl(268),Uf()}function un(){sc.startNonterminal("SwitchExpr",$l),Ml(248),Bl(22),Ml(35),Bl(268),Pl(),Q(),Ml(38);for(;;){Bl(38),Pl(),fn();if(Jl!=89)break}Ml(110),Bl(136);switch(Jl){case 224:Ml(224);break;default:Ml(233)}Bl(268),Pl(),Rf(),sc.endNonterminal("SwitchExpr",$l)}function an(){_l(248),Bl(22),_l(35),Bl(268),G(),_l(38);for(;;){Bl(38),ln();if(Jl!=89)break}_l(110),Bl(136);switch(Jl){case 224:_l(224);break;default:_l(233)}Bl(268),Uf()}function fn(){sc.startNonterminal("SwitchCaseClause",$l);for(;;){Ml(89),Bl(268),Pl(),cn();if(Jl!=89)break}switch(Jl){case 224:Ml(224);break;default:Ml(233)}Bl(268),Pl(),Rf(),sc.endNonterminal("SwitchCaseClause",$l)}function ln(){for(;;){_l(89),Bl(268),hn();if(Jl!=89)break}switch(Jl){case 224:_l(224);break;default:_l(233)}Bl(268),Uf()}function cn(){sc.startNonterminal("SwitchCaseOperand",$l),Rf(),sc.endNonterminal("SwitchCaseOperand",$l)}function hn(){Uf()}function pn(){sc.startNonterminal("TypeswitchExpr",$l),Ml(259),Bl(22),Ml(35),Bl(268),Pl(),Q(),Ml(38);for(;;){Bl(38),Pl(),vn();if(Jl!=89)break}Ml(110),Bl(149),Jl==31&&(Ml(31),Bl(247),Pl(),Ei()),Bl(136);switch(Jl){case 224:Ml(224);break;default:Ml(233)}Bl(268),Pl(),Rf(),sc.endNonterminal("TypeswitchExpr",$l)}function dn(){_l(259),Bl(22),_l(35),Bl(268),G(),_l(38);for(;;){Bl(38),mn();if(Jl!=89)break}_l(110),Bl(149),Jl==31&&(_l(31),Bl(247),Si()),Bl(136);switch(Jl){case 224:_l(224);break;default:_l(233)}Bl(268),Uf()}function vn(){sc.startNonterminal("CaseClause",$l),Ml(89),Bl(259),Jl==31&&(Ml(31),Bl(247),Pl(),Ei(),Bl(33),Ml(80)),Bl(255),Pl(),gn();switch(Jl){case 224:Ml(224);break;default:Ml(233)}Bl(268),Pl(),Rf(),sc.endNonterminal("CaseClause",$l)}function mn(){_l(89),Bl(259),Jl==31&&(_l(31),Bl(247),Si(),Bl(33),_l(80)),Bl(255),yn();switch(Jl){case 224:_l(224);break;default:_l(233)}Bl(268),Uf()}function gn(){sc.startNonterminal("SequenceTypeUnion",$l),Ns();for(;;){Bl(163);if(Jl!=284)break;Ml(284),Bl(255),Pl(),Ns()}sc.endNonterminal("SequenceTypeUnion",$l)}function yn(){Cs();for(;;){Bl(163);if(Jl!=284)break;_l(284),Bl(255),Cs()}}function bn(){sc.startNonterminal("IfExpr",$l),Ml(154),Bl(22),Ml(35),Bl(268),Pl(),Q(),Ml(38),Bl(79),Ml(250),Bl(268),Pl(),Rf(),Ml(123),Bl(268),Pl(),Rf(),sc.endNonterminal("IfExpr",$l)}function wn(){_l(154),Bl(22),_l(35),Bl(268),G(),_l(38),Bl(79),_l(250),Bl(268),Uf(),_l(123),Bl(268),Uf()}function En(){sc.startNonterminal("TryCatchExpr",$l),xn();for(;;){Bl(39),Pl(),kn(),Bl(209);if(Jl!=92)break}sc.endNonterminal("TryCatchExpr",$l)}function Sn(){Tn();for(;;){Bl(39),Ln(),Bl(209);if(Jl!=92)break}}function xn(){sc.startNonterminal("TryClause",$l),Ml(256),Bl(89),Ml(281),Bl(268),Pl(),Nn(),Ml(287),sc.endNonterminal("TryClause",$l)}function Tn(){_l(256),Bl(89),_l(281),Bl(268),Cn(),_l(287)}function Nn(){sc.startNonterminal("TryTargetExpr",$l),Q(),sc.endNonterminal("TryTargetExpr",$l)}function Cn(){G()}function kn(){sc.startNonterminal("CatchClause",$l),Ml(92),Bl(250),Pl(),An(),Ml(281),Bl(268),Pl(),Q(),Ml(287),sc.endNonterminal("CatchClause",$l)}function Ln(){_l(92),Bl(250),On(),_l(281),Bl(268),G(),_l(287)}function An(){sc.startNonterminal("CatchErrorList",$l),Kr();for(;;){Bl(138);if(Jl!=284)break;Ml(284),Bl(250),Pl(),Kr()}sc.endNonterminal("CatchErrorList",$l)}function On(){Qr();for(;;){Bl(138);if(Jl!=284)break;_l(284),Bl(250),Qr()}}function Mn(){sc.startNonterminal("OrExpr",$l),Dn();for(;;){if(Jl!=204)break;Ml(204),Bl(268),Pl(),Dn()}sc.endNonterminal("OrExpr",$l)}function _n(){Pn();for(;;){if(Jl!=204)break;_l(204),Bl(268),Pn()}}function Dn(){sc.startNonterminal("AndExpr",$l),Hn();for(;;){if(Jl!=76)break;Ml(76),Bl(268),Pl(),Hn()}sc.endNonterminal("AndExpr",$l)}function Pn(){Bn();for(;;){if(Jl!=76)break;_l(76),Bl(268),Bn()}}function Hn(){sc.startNonterminal("NotExpr",$l);for(;;){Bl(268);if(Jl!=196)break;Ml(196)}Pl(),jn(),sc.endNonterminal("NotExpr",$l)}function Bn(){for(;;){Bl(268);if(Jl!=196)break;_l(196)}Fn()}function jn(){sc.startNonterminal("ComparisonExpr",$l),In();if(Jl==27||Jl==55||Jl==58||Jl==59||Jl==61||Jl==62||Jl==63||Jl==64||Jl==129||Jl==148||Jl==152||Jl==166||Jl==175||Jl==181||Jl==189){switch(Jl){case 129:case 148:case 152:case 175:case 181:case 189:Pl(),vr();break;case 58:case 64:case 166:Pl(),gr();break;default:Pl(),pr()}Bl(267),Pl(),In()}sc.endNonterminal("ComparisonExpr",$l)}function Fn(){qn();if(Jl==27||Jl==55||Jl==58||Jl==59||Jl==61||Jl==62||Jl==63||Jl==64||Jl==129||Jl==148||Jl==152||Jl==166||Jl==175||Jl==181||Jl==189){switch(Jl){case 129:case 148:case 152:case 175:case 181:case 189:mr();break;case 58:case 64:case 166:yr();break;default:dr()}Bl(267),qn()}}function In(){sc.startNonterminal("FTContainsExpr",$l),Rn(),Jl==100&&(Ml(100),Bl(78),Ml(249),Bl(178),Pl(),ru(),Jl==277&&(Pl(),Ea())),sc.endNonterminal("FTContainsExpr",$l)}function qn(){Un(),Jl==100&&(_l(100),Bl(78),_l(249),Bl(178),iu(),Jl==277&&Sa())}function Rn(){sc.startNonterminal("StringConcatExpr",$l),zn();for(;;){if(Jl!=285)break;Ml(285),Bl(267),Pl(),zn()}sc.endNonterminal("StringConcatExpr",$l)}function Un(){Wn();for(;;){if(Jl!=285)break;_l(285),Bl(267),Wn()}}function zn(){sc.startNonterminal("RangeExpr",$l),Xn(),Jl==253&&(Ml(253),Bl(267),Pl(),Xn()),sc.endNonterminal("RangeExpr",$l)}function Wn(){Vn(),Jl==253&&(_l(253),Bl(267),Vn())}function Xn(){sc.startNonterminal("AdditiveExpr",$l),$n();for(;;){if(Jl!=41&&Jl!=43)break;switch(Jl){case 41:Ml(41);break;default:Ml(43)}Bl(267),Pl(),$n()}sc.endNonterminal("AdditiveExpr",$l)}function Vn(){Jn();for(;;){if(Jl!=41&&Jl!=43)break;switch(Jl){case 41:_l(41);break;default:_l(43)}Bl(267),Jn()}}function $n(){sc.startNonterminal("MultiplicativeExpr",$l),Kn();for(;;){if(Jl!=39&&Jl!=119&&Jl!=153&&Jl!=183)break;switch(Jl){case 39:Ml(39);break;case 119:Ml(119);break;case 153:Ml(153);break;default:Ml(183)}Bl(267),Pl(),Kn()}sc.endNonterminal("MultiplicativeExpr",$l)}function Jn(){Qn();for(;;){if(Jl!=39&&Jl!=119&&Jl!=153&&Jl!=183)break;switch(Jl){case 39:_l(39);break;case 119:_l(119);break;case 153:_l(153);break;default:_l(183)}Bl(267),Qn()}}function Kn(){sc.startNonterminal("UnionExpr",$l),Gn();for(;;){if(Jl!=260&&Jl!=284)break;switch(Jl){case 260:Ml(260);break;default:Ml(284)}Bl(267),Pl(),Gn()}sc.endNonterminal("UnionExpr",$l)}function Qn(){Yn();for(;;){if(Jl!=260&&Jl!=284)break;switch(Jl){case 260:_l(260);break;default:_l(284)}Bl(267),Yn()}}function Gn(){sc.startNonterminal("IntersectExceptExpr",$l),Zn();for(;;){Bl(223);if(Jl!=132&&Jl!=164)break;switch(Jl){case 164:Ml(164);break;default:Ml(132)}Bl(267),Pl(),Zn()}sc.endNonterminal("IntersectExceptExpr",$l)}function Yn(){er();for(;;){Bl(223);if(Jl!=132&&Jl!=164)break;switch(Jl){case 164:_l(164);break;default:_l(132)}Bl(267),er()}}function Zn(){sc.startNonterminal("InstanceofExpr",$l),tr(),Bl(224),Jl==162&&(Ml(162),Bl(67),Ml(200),Bl(255),Pl(),Ns()),sc.endNonterminal("InstanceofExpr",$l)}function er(){nr(),Bl(224),Jl==162&&(_l(162),Bl(67),_l(200),Bl(255),Cs())}function tr(){sc.startNonterminal("TreatExpr",$l),rr(),Bl(225),Jl==254&&(Ml(254),Bl(33),Ml(80),Bl(255),Pl(),Ns()),sc.endNonterminal("TreatExpr",$l)}function nr(){ir(),Bl(225),Jl==254&&(_l(254),Bl(33),_l(80),Bl(255),Cs())}function rr(){sc.startNonterminal("CastableExpr",$l),sr(),Bl(226),Jl==91&&(Ml(91),Bl(33),Ml(80),Bl(247),Pl(),Es()),sc.endNonterminal("CastableExpr",$l)}function ir(){or(),Bl(226),Jl==91&&(_l(91),Bl(33),_l(80),Bl(247),Ss())}function sr(){sc.startNonterminal("CastExpr",$l),ur(),Bl(228),Jl==90&&(Ml(90),Bl(33),Ml(80),Bl(247),Pl(),Es()),sc.endNonterminal("CastExpr",$l)}function or(){ar(),Bl(228),Jl==90&&(_l(90),Bl(33),_l(80),Bl(247),Ss())}function ur(){sc.startNonterminal("UnaryExpr",$l);for(;;){Bl(267);if(Jl!=41&&Jl!=43)break;switch(Jl){case 43:Ml(43);break;default:Ml(41)}}Pl(),fr(),sc.endNonterminal("UnaryExpr",$l)}function ar(){for(;;){Bl(267);if(Jl!=41&&Jl!=43)break;switch(Jl){case 43:_l(43);break;default:_l(41)}}lr()}function fr(){sc.startNonterminal("ValueExpr",$l);switch(Jl){case 266:jl(189);break;default:Xl=Jl}switch(Xl){case 89354:case 125706:case 132362:case 144138:br();break;case 36:xr();break;default:cr()}sc.endNonterminal("ValueExpr",$l)}function lr(){switch(Jl){case 266:jl(189);break;default:Xl=Jl}switch(Xl){case 89354:case 125706:case 132362:case 144138:wr();break;case 36:Tr();break;default:hr()}}function cr(){sc.startNonterminal("SimpleMapExpr",$l),kr();for(;;){if(Jl!=26)break;Ml(26),Bl(264),Pl(),kr()}sc.endNonterminal("SimpleMapExpr",$l)}function hr(){Lr();for(;;){if(Jl!=26)break;_l(26),Bl(264),Lr()}}function pr(){sc.startNonterminal("GeneralComp",$l);switch(Jl){case 61:Ml(61);break;case 27:Ml(27);break;case 55:Ml(55);break;case 59:Ml(59);break;case 62:Ml(62);break;default:Ml(63)}sc.endNonterminal("GeneralComp",$l)}function dr(){switch(Jl){case 61:_l(61);break;case 27:_l(27);break;case 55:_l(55);break;case 59:_l(59);break;case 62:_l(62);break;default:_l(63)}}function vr(){sc.startNonterminal("ValueComp",$l);switch(Jl){case 129:Ml(129);break;case 189:Ml(189);break;case 181:Ml(181);break;case 175:Ml(175);break;case 152:Ml(152);break;default:Ml(148)}sc.endNonterminal("ValueComp",$l)}function mr(){switch(Jl){case 129:_l(129);break;case 189:_l(189);break;case 181:_l(181);break;case 175:_l(175);break;case 152:_l(152);break;default:_l(148)}}function gr(){sc.startNonterminal("NodeComp",$l);switch(Jl){case 166:Ml(166);break;case 58:Ml(58);break;default:Ml(64)}sc.endNonterminal("NodeComp",$l)}function yr(){switch(Jl){case 166:_l(166);break;case 58:_l(58);break;default:_l(64)}}function br(){sc.startNonterminal("ValidateExpr",$l),Ml(266),Bl(176);if(Jl!=281)switch(Jl){case 258:Ml(258),Bl(247),Pl(),Co();break;default:Pl(),Er()}Bl(89),Ml(281),Bl(268),Pl(),Q(),Ml(287),sc.endNonterminal("ValidateExpr",$l)}function wr(){_l(266),Bl(176);if(Jl!=281)switch(Jl){case 258:_l(258),Bl(247),ko();break;default:Sr()}Bl(89),_l(281),Bl(268),G(),_l(287)}function Er(){sc.startNonterminal("ValidationMode",$l);switch(Jl){case 174:Ml(174);break;default:Ml(245)}sc.endNonterminal("ValidationMode",$l)}function Sr(){switch(Jl){case 174:_l(174);break;default:_l(245)}}function xr(){sc.startNonterminal("ExtensionExpr",$l);for(;;){Pl(),Nr(),Bl(102);if(Jl!=36)break}Ml(281),Bl(276),Jl!=287&&(Pl(),Q()),Ml(287),sc.endNonterminal("ExtensionExpr",$l)}function Tr(){for(;;){Cr(),Bl(102);if(Jl!=36)break}_l(281),Bl(276),Jl!=287&&G(),_l(287)}function Nr(){sc.startNonterminal("Pragma",$l),Ml(36),Fl(244),Jl==21&&Ml(21),Wa(),Fl(10),Jl==21&&(Ml(21),Fl(0),Ml(1)),Fl(5),Ml(30),sc.endNonterminal("Pragma",$l)}function Cr(){_l(36),Fl(244),Jl==21&&_l(21),Xa(),Fl(10),Jl==21&&(_l(21),Fl(0),_l(1)),Fl(5),_l(30)}function kr(){sc.startNonterminal("PathExpr",$l);switch(Jl){case 47:Ml(47),Bl(290);switch(Jl){case 25:case 26:case 27:case 38:case 39:case 41:case 42:case 43:case 50:case 54:case 58:case 59:case 61:case 62:case 63:case 64:case 70:case 88:case 100:case 209:case 237:case 252:case 279:case 284:case 285:case 286:case 287:break;default:Pl(),Ar()}break;case 48:Ml(48),Bl(261),Pl(),Ar();break;default:Ar()}sc.endNonterminal("PathExpr",$l)}function Lr(){switch(Jl){case 47:_l(47),Bl(290);switch(Jl){case 25:case 26:case 27:case 38:case 39:case 41:case 42:case 43:case 50:case 54:case 58:case 59:case 61:case 62:case 63:case 64:case 70:case 88:case 100:case 209:case 237:case 252:case 279:case 284:case 285:case 286:case 287:break;default:Or()}break;case 48:_l(48),Bl(261),Or();break;default:Or()}}function Ar(){sc.startNonterminal("RelativePathExpr",$l),Gr();for(;;){switch(Jl){case 26:jl(266);break;default:Xl=Jl}if(Xl!=25&&Xl!=27&&Xl!=38&&Xl!=39&&Xl!=41&&Xl!=42&&Xl!=43&&Xl!=47&&Xl!=48&&Xl!=50&&Xl!=54&&Xl!=55&&Xl!=58&&Xl!=59&&Xl!=61&&Xl!=62&&Xl!=63&&Xl!=64&&Xl!=70&&Xl!=71&&Xl!=76&&Xl!=80&&Xl!=81&&Xl!=82&&Xl!=85&&Xl!=88&&Xl!=89&&Xl!=90&&Xl!=91&&Xl!=95&&Xl!=100&&Xl!=106&&Xl!=110&&Xl!=114&&Xl!=119&&Xl!=123&&Xl!=124&&Xl!=127&&Xl!=129&&Xl!=132&&Xl!=139&&Xl!=142&&Xl!=148&&Xl!=150&&Xl!=152&&Xl!=153&&Xl!=162&&Xl!=164&&Xl!=165&&Xl!=166&&Xl!=175&&Xl!=177&&Xl!=181&&Xl!=183&&Xl!=184&&Xl!=189&&Xl!=202&&Xl!=204&&Xl!=205&&Xl!=209&&Xl!=224&&Xl!=228&&Xl!=233&&Xl!=237&&Xl!=241&&Xl!=242&&Xl!=252&&Xl!=253&&Xl!=254&&Xl!=260&&Xl!=272&&Xl!=276&&Xl!=279&&Xl!=284&&Xl!=285&&Xl!=286&&Xl!=287&&Xl!=2586&&Xl!=23578&&Xl!=24090&&Xl!=24602&&Xl!=34330){Xl=Ul(3,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{switch(Jl){case 47:_l(47);break;case 48:_l(48);break;default:_l(26)}Bl(265),_r(),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(3,$l,Xl)}}if(Xl!=-1&&Xl!=47&&Xl!=48&&Xl!=2586&&Xl!=23578&&Xl!=34330)break;switch(Jl){case 47:Ml(47);break;case 48:Ml(48);break;default:Ml(26)}Bl(265),Pl(),Mr()}sc.endNonterminal("RelativePathExpr",$l)}function Or(){Yr();for(;;){switch(Jl){case 26:jl(266);break;default:Xl=Jl}if(Xl!=25&&Xl!=27&&Xl!=38&&Xl!=39&&Xl!=41&&Xl!=42&&Xl!=43&&Xl!=47&&Xl!=48&&Xl!=50&&Xl!=54&&Xl!=55&&Xl!=58&&Xl!=59&&Xl!=61&&Xl!=62&&Xl!=63&&Xl!=64&&Xl!=70&&Xl!=71&&Xl!=76&&Xl!=80&&Xl!=81&&Xl!=82&&Xl!=85&&Xl!=88&&Xl!=89&&Xl!=90&&Xl!=91&&Xl!=95&&Xl!=100&&Xl!=106&&Xl!=110&&Xl!=114&&Xl!=119&&Xl!=123&&Xl!=124&&Xl!=127&&Xl!=129&&Xl!=132&&Xl!=139&&Xl!=142&&Xl!=148&&Xl!=150&&Xl!=152&&Xl!=153&&Xl!=162&&Xl!=164&&Xl!=165&&Xl!=166&&Xl!=175&&Xl!=177&&Xl!=181&&Xl!=183&&Xl!=184&&Xl!=189&&Xl!=202&&Xl!=204&&Xl!=205&&Xl!=209&&Xl!=224&&Xl!=228&&Xl!=233&&Xl!=237&&Xl!=241&&Xl!=242&&Xl!=252&&Xl!=253&&Xl!=254&&Xl!=260&&Xl!=272&&Xl!=276&&Xl!=279&&Xl!=284&&Xl!=285&&Xl!=286&&Xl!=287&&Xl!=2586&&Xl!=23578&&Xl!=24090&&Xl!=24602&&Xl!=34330){Xl=Ul(3,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{switch(Jl){case 47:_l(47);break;case 48:_l(48);break;default:_l(26)}Bl(265),_r(),Rl(3,t,-1);continue}catch(a){Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(3,t,-2);break}}}if(Xl!=-1&&Xl!=47&&Xl!=48&&Xl!=2586&&Xl!=23578&&Xl!=34330)break;switch(Jl){case 47:_l(47);break;case 48:_l(48);break;default:_l(26)}Bl(265),_r()}}function Mr(){sc.startNonterminal("StepExpr",$l);switch(Jl){case 83:jl(289);break;case 122:jl(288);break;case 187:case 220:jl(286);break;case 135:case 197:case 255:jl(238);break;case 97:case 120:case 206:case 249:case 262:jl(240);break;case 79:case 125:case 154:case 167:case 169:case 247:case 248:case 259:jl(231);break;case 74:case 75:case 94:case 112:case 113:case 137:case 138:case 210:case 216:case 217:case 234:jl(239);break;case 6:case 71:case 73:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 114:case 119:case 121:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 139:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 188:case 189:case 194:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 230:case 231:case 232:case 233:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:jl(235);break;default:Xl=Jl}if(Xl==12935||Xl==12997||Xl==13055||Xl==13447||Xl==13509||Xl==13567||Xl==13959||Xl==14021||Xl==14079||Xl==19591||Xl==19653||Xl==19711||Xl==20103||Xl==20165||Xl==20223||Xl==21127||Xl==21189||Xl==21247||Xl==21639||Xl==21701||Xl==21759||Xl==22151||Xl==22213||Xl==22271||Xl==24199||Xl==24261||Xl==24319||Xl==24711||Xl==24773||Xl==24831||Xl==25735||Xl==25797||Xl==25855||Xl==27783||Xl==27845||Xl==27903||Xl==28295||Xl==28357||Xl==28415||Xl==29831||Xl==29893||Xl==29951||Xl==30343||Xl==30405||Xl==30463||Xl==31367||Xl==31429||Xl==31487||Xl==31879||Xl==31941||Xl==31999||Xl==32391||Xl==32453||Xl==32511||Xl==32903||Xl==32965||Xl==33023||Xl==35463||Xl==35525||Xl==35583||Xl==35975||Xl==36037||Xl==36095||Xl==36435||Xl==36474||Xl==36487||Xl==36539||Xl==36549||Xl==36572||Xl==36607||Xl==38995||Xl==39034||Xl==39047||Xl==39099||Xl==39109||Xl==39132||Xl==39167||Xl==41043||Xl==41082||Xl==41095||Xl==41147||Xl==41157||Xl==41180||Xl==41215||Xl==41555||Xl==41594||Xl==41607||Xl==41659||Xl==41669||Xl==41692||Xl==41727||Xl==42067||Xl==42106||Xl==42119||Xl==42171||Xl==42181||Xl==42204||Xl==42239||Xl==43603||Xl==43642||Xl==43655||Xl==43707||Xl==43717||Xl==43740||Xl==43775||Xl==45191||Xl==45253||Xl==45311||Xl==45651||Xl==45690||Xl==45703||Xl==45755||Xl==45765||Xl==45788||Xl==45823||Xl==46163||Xl==46202||Xl==46215||Xl==46267||Xl==46277||Xl==46300||Xl==46335||Xl==46675||Xl==46714||Xl==46727||Xl==46779||Xl==46789||Xl==46812||Xl==46847||Xl==48723||Xl==48762||Xl==48775||Xl==48827||Xl==48837||Xl==48860||Xl==48895||Xl==51335||Xl==51397||Xl==51455||Xl==54355||Xl==54394||Xl==54407||Xl==54459||Xl==54469||Xl==54492||Xl==54527||Xl==56403||Xl==56442||Xl==56455||Xl==56507||Xl==56517||Xl==56540||Xl==56575||Xl==58451||Xl==58490||Xl==58503||Xl==58555||Xl==58565||Xl==58588||Xl==58623||Xl==61011||Xl==61050||Xl==61063||Xl==61115||Xl==61125||Xl==61148||Xl==61183||Xl==63059||Xl==63098||Xl==63111||Xl==63163||Xl==63173||Xl==63196||Xl==63231||Xl==63571||Xl==63610||Xl==63623||Xl==63675||Xl==63685||Xl==63708||Xl==63743||Xl==65107||Xl==65146||Xl==65159||Xl==65211||Xl==65221||Xl==65244||Xl==65279||Xl==66131||Xl==66170||Xl==66183||Xl==66235||Xl==66245||Xl==66268||Xl==66303||Xl==67667||Xl==67706||Xl==67719||Xl==67771||Xl==67781||Xl==67804||Xl==67839||Xl==71251||Xl==71290||Xl==71303||Xl==71355||Xl==71365||Xl==71388||Xl==71423||Xl==72787||Xl==72826||Xl==72839||Xl==72891||Xl==72901||Xl==72924||Xl==72959||Xl==75859||Xl==75898||Xl==75911||Xl==75963||Xl==75973||Xl==75996||Xl==76031||Xl==76883||Xl==76922||Xl==76935||Xl==76987||Xl==76997||Xl==77020||Xl==77055||Xl==77907||Xl==77946||Xl==77959||Xl==78011||Xl==78021||Xl==78044||Xl==78079||Xl==78419||Xl==78458||Xl==78471||Xl==78523||Xl==78533||Xl==78556||Xl==78591||Xl==83027||Xl==83066||Xl==83079||Xl==83131||Xl==83141||Xl==83164||Xl==83199||Xl==84051||Xl==84090||Xl==84103||Xl==84155||Xl==84165||Xl==84188||Xl==84223||Xl==84563||Xl==84602||Xl==84615||Xl==84667||Xl==84677||Xl==84700||Xl==84735||Xl==85075||Xl==85114||Xl==85127||Xl==85179||Xl==85189||Xl==85212||Xl==85247||Xl==89683||Xl==89722||Xl==89735||Xl==89787||Xl==89797||Xl==89820||Xl==89855||Xl==90707||Xl==90746||Xl==90759||Xl==90811||Xl==90821||Xl==90844||Xl==90879||Xl==92755||Xl==92794||Xl==92807||Xl==92859||Xl==92869||Xl==92892||Xl==92927||Xl==93779||Xl==93818||Xl==93831||Xl==93883||Xl==93893||Xl==93916||Xl==93951||Xl==94291||Xl==94330||Xl==94343||Xl==94395||Xl==94405||Xl==94428||Xl==94463||Xl==96851||Xl==96890||Xl==96903||Xl==96955||Xl==96965||Xl==96988||Xl==97023||Xl==103507||Xl==103546||Xl==103559||Xl==103611||Xl==103621||Xl==103644||Xl==103679||Xl==104531||Xl==104570||Xl==104583||Xl==104635||Xl==104645||Xl==104668||Xl==104703||Xl==105043||Xl==105082||Xl==105095||Xl==105147||Xl==105157||Xl==105180||Xl==105215||Xl==107143||Xl==107205||Xl==107263||Xl==114771||Xl==114810||Xl==114823||Xl==114875||Xl==114885||Xl==114908||Xl==114943||Xl==116819||Xl==116858||Xl==116871||Xl==116923||Xl==116933||Xl==116956||Xl==116991||Xl==119379||Xl==119418||Xl==119431||Xl==119483||Xl==119493||Xl==119516||Xl==119551||Xl==121479||Xl==121541||Xl==121599||Xl==123475||Xl==123514||Xl==123527||Xl==123579||Xl==123589||Xl==123612||Xl==123647||Xl==123987||Xl==124026||Xl==124039||Xl==124091||Xl==124101||Xl==124124||Xl==124159||Xl==129159||Xl==129221||Xl==129279||Xl==129619||Xl==129658||Xl==129671||Xl==129723||Xl==129733||Xl==129756||Xl==129791||Xl==130131||Xl==130170||Xl==130183||Xl==130235||Xl==130245||Xl==130268||Xl==130303||Xl==133203||Xl==133242||Xl==133255||Xl==133307||Xl==133317||Xl==133340||Xl==133375||Xl==139347||Xl==139386||Xl==139399||Xl==139451||Xl==139461||Xl==139484||Xl==139519||Xl==141395||Xl==141434||Xl==141447||Xl==141499||Xl==141509||Xl==141532||Xl==141567||Xl==142983||Xl==143045||Xl==143103||Xl==145543||Xl==145605||Xl==145663||Xl==146055||Xl==146117||Xl==146175||Xl==146567||Xl==146629||Xl==146687||Xl==147079||Xl==147141||Xl==147199){Xl=Ul(4,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{Yr(),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(4,$l,Xl)}}switch(Xl){case-1:case 8:case 9:case 10:case 11:case 31:case 32:case 33:case 35:case 55:case 56:case 60:case 69:case 281:case 283:case 3155:case 3194:case 9915:case 9948:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14969:case 14970:case 14971:case 14972:case 14973:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14995:case 14996:case 14998:case 15e3:case 15001:case 15002:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15015:case 15016:case 15017:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15036:case 15037:case 15042:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15078:case 15079:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15095:case 15096:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15107:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18055:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18067:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18117:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18175:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:case 23175:case 23237:case 23295:case 37459:case 37498:case 37563:case 37596:case 37971:case 38010:case 38075:case 38108:case 38483:case 38522:case 38587:case 38620:case 40019:case 40058:case 40123:case 40156:case 40531:case 40570:case 42579:case 42618:case 42683:case 42716:case 43091:case 43130:case 43195:case 43228:case 44115:case 44154:case 44219:case 44252:case 44627:case 44666:case 44731:case 44764:case 47187:case 47226:case 47291:case 47324:case 48211:case 48250:case 48315:case 48348:case 49747:case 49786:case 49851:case 49884:case 50259:case 50298:case 50363:case 50396:case 50771:case 50810:case 50875:case 50908:case 52307:case 52346:case 52411:case 52444:case 52819:case 52858:case 52923:case 52956:case 53331:case 53370:case 53435:case 53468:case 53843:case 53882:case 53947:case 53980:case 54867:case 54906:case 54971:case 55004:case 55891:case 55930:case 55995:case 56028:case 56915:case 56954:case 57019:case 57052:case 57427:case 57466:case 57531:case 57564:case 57939:case 57978:case 58043:case 58076:case 61523:case 61562:case 61627:case 61660:case 62035:case 62074:case 62139:case 62172:case 62547:case 62586:case 62651:case 62684:case 64083:case 64122:case 64187:case 64220:case 64595:case 64634:case 64699:case 64732:case 66643:case 66682:case 66747:case 66780:case 68179:case 68218:case 68283:case 68316:case 68691:case 68730:case 68795:case 68828:case 69203:case 69242:case 69307:case 69340:case 69715:case 69754:case 69819:case 69852:case 70227:case 70266:case 70331:case 70364:case 70739:case 70778:case 70843:case 70876:case 73299:case 73338:case 73403:case 73436:case 75347:case 75386:case 75451:case 75484:case 78931:case 78970:case 79035:case 79068:case 79443:case 79482:case 79547:case 79580:case 79955:case 79994:case 80059:case 80092:case 80467:case 80506:case 80571:case 80604:case 82515:case 82554:case 82619:case 82652:case 83539:case 83578:case 83643:case 83676:case 85587:case 85626:case 85691:case 85724:case 86099:case 86138:case 86203:case 86236:case 86611:case 86650:case 87123:case 87162:case 87227:case 87260:case 88659:case 88698:case 88763:case 88796:case 89171:case 89210:case 89275:case 89308:case 91731:case 91770:case 91835:case 91868:case 94803:case 94842:case 94907:case 94940:case 95827:case 95866:case 95931:case 95964:case 96339:case 96378:case 96443:case 96476:case 99411:case 99450:case 99515:case 99548:case 99923:case 99962:case 100027:case 100060:case 100947:case 100986:case 101051:case 101084:case 101459:case 101498:case 101563:case 101596:case 104019:case 104058:case 104123:case 104156:case 105555:case 105594:case 105659:case 105692:case 106067:case 106106:case 106171:case 106204:case 107603:case 107642:case 107707:case 107740:case 110675:case 110714:case 110779:case 110812:case 111187:case 111226:case 111291:case 111324:case 112723:case 112762:case 112827:case 112860:case 113747:case 113786:case 113851:case 113884:case 114259:case 114298:case 114363:case 114396:case 115283:case 115322:case 115387:case 115420:case 115795:case 115834:case 115899:case 115932:case 117331:case 117370:case 117435:case 117468:case 117843:case 117882:case 117947:case 117980:case 118355:case 118394:case 118459:case 118492:case 118867:case 118906:case 118971:case 119004:case 119891:case 119930:case 119995:case 120028:case 122451:case 122490:case 122555:case 122588:case 122963:case 123002:case 123067:case 123100:case 125523:case 125562:case 125627:case 125660:case 126547:case 126586:case 127059:case 127098:case 127163:case 127196:case 127571:case 127610:case 127675:case 127708:case 130643:case 130682:case 130747:case 130780:case 131155:case 131194:case 131259:case 131292:case 131667:case 131706:case 131771:case 131804:case 132179:case 132218:case 132283:case 132316:case 132691:case 132730:case 132795:case 132828:case 134227:case 134266:case 134331:case 134364:case 134739:case 134778:case 134843:case 134876:case 136275:case 136314:case 136379:case 136412:case 136787:case 136826:case 136891:case 136924:case 137299:case 137338:case 137403:case 137436:case 137811:case 137850:case 137915:case 137948:case 139859:case 139898:case 139963:case 139996:case 143955:case 143969:case 143992:case 143994:case 144059:case 144078:case 144092:case 144121:case 144134:Gr();break;default:Dr()}sc.endNonterminal("StepExpr",$l)}function _r(){switch(Jl){case 83:jl(289);break;case 122:jl(288);break;case 187:case 220:jl(286);break;case 135:case 197:case 255:jl(238);break;case 97:case 120:case 206:case 249:case 262:jl(240);break;case 79:case 125:case 154:case 167:case 169:case 247:case 248:case 259:jl(231);break;case 74:case 75:case 94:case 112:case 113:case 137:case 138:case 210:case 216:case 217:case 234:jl(239);break;case 6:case 71:case 73:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 114:case 119:case 121:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 139:case 142:case 143:case 147:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 188:case 189:case 194:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 230:case 231:case 232:case 233:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:jl(235);break;default:Xl=Jl}if(Xl==12935||Xl==12997||Xl==13055||Xl==13447||Xl==13509||Xl==13567||Xl==13959||Xl==14021||Xl==14079||Xl==19591||Xl==19653||Xl==19711||Xl==20103||Xl==20165||Xl==20223||Xl==21127||Xl==21189||Xl==21247||Xl==21639||Xl==21701||Xl==21759||Xl==22151||Xl==22213||Xl==22271||Xl==24199||Xl==24261||Xl==24319||Xl==24711||Xl==24773||Xl==24831||Xl==25735||Xl==25797||Xl==25855||Xl==27783||Xl==27845||Xl==27903||Xl==28295||Xl==28357||Xl==28415||Xl==29831||Xl==29893||Xl==29951||Xl==30343||Xl==30405||Xl==30463||Xl==31367||Xl==31429||Xl==31487||Xl==31879||Xl==31941||Xl==31999||Xl==32391||Xl==32453||Xl==32511||Xl==32903||Xl==32965||Xl==33023||Xl==35463||Xl==35525||Xl==35583||Xl==35975||Xl==36037||Xl==36095||Xl==36435||Xl==36474||Xl==36487||Xl==36539||Xl==36549||Xl==36572||Xl==36607||Xl==38995||Xl==39034||Xl==39047||Xl==39099||Xl==39109||Xl==39132||Xl==39167||Xl==41043||Xl==41082||Xl==41095||Xl==41147||Xl==41157||Xl==41180||Xl==41215||Xl==41555||Xl==41594||Xl==41607||Xl==41659||Xl==41669||Xl==41692||Xl==41727||Xl==42067||Xl==42106||Xl==42119||Xl==42171||Xl==42181||Xl==42204||Xl==42239||Xl==43603||Xl==43642||Xl==43655||Xl==43707||Xl==43717||Xl==43740||Xl==43775||Xl==45191||Xl==45253||Xl==45311||Xl==45651||Xl==45690||Xl==45703||Xl==45755||Xl==45765||Xl==45788||Xl==45823||Xl==46163||Xl==46202||Xl==46215||Xl==46267||Xl==46277||Xl==46300||Xl==46335||Xl==46675||Xl==46714||Xl==46727||Xl==46779||Xl==46789||Xl==46812||Xl==46847||Xl==48723||Xl==48762||Xl==48775||Xl==48827||Xl==48837||Xl==48860||Xl==48895||Xl==51335||Xl==51397||Xl==51455||Xl==54355||Xl==54394||Xl==54407||Xl==54459||Xl==54469||Xl==54492||Xl==54527||Xl==56403||Xl==56442||Xl==56455||Xl==56507||Xl==56517||Xl==56540||Xl==56575||Xl==58451||Xl==58490||Xl==58503||Xl==58555||Xl==58565||Xl==58588||Xl==58623||Xl==61011||Xl==61050||Xl==61063||Xl==61115||Xl==61125||Xl==61148||Xl==61183||Xl==63059||Xl==63098||Xl==63111||Xl==63163||Xl==63173||Xl==63196||Xl==63231||Xl==63571||Xl==63610||Xl==63623||Xl==63675||Xl==63685||Xl==63708||Xl==63743||Xl==65107||Xl==65146||Xl==65159||Xl==65211||Xl==65221||Xl==65244||Xl==65279||Xl==66131||Xl==66170||Xl==66183||Xl==66235||Xl==66245||Xl==66268||Xl==66303||Xl==67667||Xl==67706||Xl==67719||Xl==67771||Xl==67781||Xl==67804||Xl==67839||Xl==71251||Xl==71290||Xl==71303||Xl==71355||Xl==71365||Xl==71388||Xl==71423||Xl==72787||Xl==72826||Xl==72839||Xl==72891||Xl==72901||Xl==72924||Xl==72959||Xl==75859||Xl==75898||Xl==75911||Xl==75963||Xl==75973||Xl==75996||Xl==76031||Xl==76883||Xl==76922||Xl==76935||Xl==76987||Xl==76997||Xl==77020||Xl==77055||Xl==77907||Xl==77946||Xl==77959||Xl==78011||Xl==78021||Xl==78044||Xl==78079||Xl==78419||Xl==78458||Xl==78471||Xl==78523||Xl==78533||Xl==78556||Xl==78591||Xl==83027||Xl==83066||Xl==83079||Xl==83131||Xl==83141||Xl==83164||Xl==83199||Xl==84051||Xl==84090||Xl==84103||Xl==84155||Xl==84165||Xl==84188||Xl==84223||Xl==84563||Xl==84602||Xl==84615||Xl==84667||Xl==84677||Xl==84700||Xl==84735||Xl==85075||Xl==85114||Xl==85127||Xl==85179||Xl==85189||Xl==85212||Xl==85247||Xl==89683||Xl==89722||Xl==89735||Xl==89787||Xl==89797||Xl==89820||Xl==89855||Xl==90707||Xl==90746||Xl==90759||Xl==90811||Xl==90821||Xl==90844||Xl==90879||Xl==92755||Xl==92794||Xl==92807||Xl==92859||Xl==92869||Xl==92892||Xl==92927||Xl==93779||Xl==93818||Xl==93831||Xl==93883||Xl==93893||Xl==93916||Xl==93951||Xl==94291||Xl==94330||Xl==94343||Xl==94395||Xl==94405||Xl==94428||Xl==94463||Xl==96851||Xl==96890||Xl==96903||Xl==96955||Xl==96965||Xl==96988||Xl==97023||Xl==103507||Xl==103546||Xl==103559||Xl==103611||Xl==103621||Xl==103644||Xl==103679||Xl==104531||Xl==104570||Xl==104583||Xl==104635||Xl==104645||Xl==104668||Xl==104703||Xl==105043||Xl==105082||Xl==105095||Xl==105147||Xl==105157||Xl==105180||Xl==105215||Xl==107143||Xl==107205||Xl==107263||Xl==114771||Xl==114810||Xl==114823||Xl==114875||Xl==114885||Xl==114908||Xl==114943||Xl==116819||Xl==116858||Xl==116871||Xl==116923||Xl==116933||Xl==116956||Xl==116991||Xl==119379||Xl==119418||Xl==119431||Xl==119483||Xl==119493||Xl==119516||Xl==119551||Xl==121479||Xl==121541||Xl==121599||Xl==123475||Xl==123514||Xl==123527||Xl==123579||Xl==123589||Xl==123612||Xl==123647||Xl==123987||Xl==124026||Xl==124039||Xl==124091||Xl==124101||Xl==124124||Xl==124159||Xl==129159||Xl==129221||Xl==129279||Xl==129619||Xl==129658||Xl==129671||Xl==129723||Xl==129733||Xl==129756||Xl==129791||Xl==130131||Xl==130170||Xl==130183||Xl==130235||Xl==130245||Xl==130268||Xl==130303||Xl==133203||Xl==133242||Xl==133255||Xl==133307||Xl==133317||Xl==133340||Xl==133375||Xl==139347||Xl==139386||Xl==139399||Xl==139451||Xl==139461||Xl==139484||Xl==139519||Xl==141395||Xl==141434||Xl==141447||Xl==141499||Xl==141509||Xl==141532||Xl==141567||Xl==142983||Xl==143045||Xl==143103||Xl==145543||Xl==145605||Xl==145663||Xl==146055||Xl==146117||Xl==146175||Xl==146567||Xl==146629||Xl==146687||Xl==147079||Xl==147141||Xl==147199){Xl=Ul(4,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{Yr(),Rl(4,t,-1),Xl=-3}catch(a){Xl=-2,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(4,t,-2)}}}switch(Xl){case-1:case 8:case 9:case 10:case 11:case 31:case 32:case 33:case 35:case 55:case 56:case 60:case 69:case 281:case 283:case 3155:case 3194:case 9915:case 9948:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14927:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14969:case 14970:case 14971:case 14972:case 14973:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14995:case 14996:case 14998:case 15e3:case 15001:case 15002:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15015:case 15016:case 15017:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15036:case 15037:case 15042:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15078:case 15079:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15095:case 15096:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15107:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18055:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18067:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18117:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18175:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:case 23175:case 23237:case 23295:case 37459:case 37498:case 37563:case 37596:case 37971:case 38010:case 38075:case 38108:case 38483:case 38522:case 38587:case 38620:case 40019:case 40058:case 40123:case 40156:case 40531:case 40570:case 42579:case 42618:case 42683:case 42716:case 43091:case 43130:case 43195:case 43228:case 44115:case 44154:case 44219:case 44252:case 44627:case 44666:case 44731:case 44764:case 47187:case 47226:case 47291:case 47324:case 48211:case 48250:case 48315:case 48348:case 49747:case 49786:case 49851:case 49884:case 50259:case 50298:case 50363:case 50396:case 50771:case 50810:case 50875:case 50908:case 52307:case 52346:case 52411:case 52444:case 52819:case 52858:case 52923:case 52956:case 53331:case 53370:case 53435:case 53468:case 53843:case 53882:case 53947:case 53980:case 54867:case 54906:case 54971:case 55004:case 55891:case 55930:case 55995:case 56028:case 56915:case 56954:case 57019:case 57052:case 57427:case 57466:case 57531:case 57564:case 57939:case 57978:case 58043:case 58076:case 61523:case 61562:case 61627:case 61660:case 62035:case 62074:case 62139:case 62172:case 62547:case 62586:case 62651:case 62684:case 64083:case 64122:case 64187:case 64220:case 64595:case 64634:case 64699:case 64732:case 66643:case 66682:case 66747:case 66780:case 68179:case 68218:case 68283:case 68316:case 68691:case 68730:case 68795:case 68828:case 69203:case 69242:case 69307:case 69340:case 69715:case 69754:case 69819:case 69852:case 70227:case 70266:case 70331:case 70364:case 70739:case 70778:case 70843:case 70876:case 73299:case 73338:case 73403:case 73436:case 75347:case 75386:case 75451:case 75484:case 78931:case 78970:case 79035:case 79068:case 79443:case 79482:case 79547:case 79580:case 79955:case 79994:case 80059:case 80092:case 80467:case 80506:case 80571:case 80604:case 82515:case 82554:case 82619:case 82652:case 83539:case 83578:case 83643:case 83676:case 85587:case 85626:case 85691:case 85724:case 86099:case 86138:case 86203:case 86236:case 86611:case 86650:case 87123:case 87162:case 87227:case 87260:case 88659:case 88698:case 88763:case 88796:case 89171:case 89210:case 89275:case 89308:case 91731:case 91770:case 91835:case 91868:case 94803:case 94842:case 94907:case 94940:case 95827:case 95866:case 95931:case 95964:case 96339:case 96378:case 96443:case 96476:case 99411:case 99450:case 99515:case 99548:case 99923:case 99962:case 100027:case 100060:case 100947:case 100986:case 101051:case 101084:case 101459:case 101498:case 101563:case 101596:case 104019:case 104058:case 104123:case 104156:case 105555:case 105594:case 105659:case 105692:case 106067:case 106106:case 106171:case 106204:case 107603:case 107642:case 107707:case 107740:case 110675:case 110714:case 110779:case 110812:case 111187:case 111226:case 111291:case 111324:case 112723:case 112762:case 112827:case 112860:case 113747:case 113786:case 113851:case 113884:case 114259:case 114298:case 114363:case 114396:case 115283:case 115322:case 115387:case 115420:case 115795:case 115834:case 115899:case 115932:case 117331:case 117370:case 117435:case 117468:case 117843:case 117882:case 117947:case 117980:case 118355:case 118394:case 118459:case 118492:case 118867:case 118906:case 118971:case 119004:case 119891:case 119930:case 119995:case 120028:case 122451:case 122490:case 122555:case 122588:case 122963:case 123002:case 123067:case 123100:case 125523:case 125562:case 125627:case 125660:case 126547:case 126586:case 127059:case 127098:case 127163:case 127196:case 127571:case 127610:case 127675:case 127708:case 130643:case 130682:case 130747:case 130780:case 131155:case 131194:case 131259:case 131292:case 131667:case 131706:case 131771:case 131804:case 132179:case 132218:case 132283:case 132316:case 132691:case 132730:case 132795:case 132828:case 134227:case 134266:case 134331:case 134364:case 134739:case 134778:case 134843:case 134876:case 136275:case 136314:case 136379:case 136412:case 136787:case 136826:case 136891:case 136924:case 137299:case 137338:case 137403:case 137436:case 137811:case 137850:case 137915:case 137948:case 139859:case 139898:case 139963:case 139996:case 143955:case 143969:case 143992:case 143994:case 144059:case 144078:case 144092:case 144121:case 144134:Yr();break;case-3:break;default:Pr()}}function Dr(){sc.startNonterminal("AxisStep",$l);switch(Jl){case 74:case 75:case 210:case 216:case 217:jl(233);break;default:Xl=Jl}switch(Xl){case 46:case 26698:case 26699:case 26834:case 26840:case 26841:Rr();break;default:Hr()}Bl(229),Pl(),ui(),sc.endNonterminal("AxisStep",$l)}function Pr(){switch(Jl){case 74:case 75:case 210:case 216:case 217:jl(233);break;default:Xl=Jl}switch(Xl){case 46:case 26698:case 26699:case 26834:case 26840:case 26841:Ur();break;default:Br()}Bl(229),ai()}function Hr(){sc.startNonterminal("ForwardStep",$l);switch(Jl){case 83:jl(237);break;case 94:case 112:case 113:case 137:case 138:case 234:jl(233);break;default:Xl=Jl}switch(Xl){case 26707:case 26718:case 26736:case 26737:case 26761:case 26762:case 26858:jr(),Bl(250),Pl(),$r();break;default:Ir()}sc.endNonterminal("ForwardStep",$l)}function Br(){switch(Jl){case 83:jl(237);break;case 94:case 112:case 113:case 137:case 138:case 234:jl(233);break;default:Xl=Jl}switch(Xl){case 26707:case 26718:case 26736:case 26737:case 26761:case 26762:case 26858:Fr(),Bl(250),Jr();break;default:qr()}}function jr(){sc.startNonterminal("ForwardAxis",$l);switch(Jl){case 94:Ml(94),Bl(27),Ml(52);break;case 112:Ml(112),Bl(27),Ml(52);break;case 83:Ml(83),Bl(27),Ml(52);break;case 234:Ml(234),Bl(27),Ml(52);break;case 113:Ml(113),Bl(27),Ml(52);break;case 138:Ml(138),Bl(27),Ml(52);break;default:Ml(137),Bl(27),Ml(52)}sc.endNonterminal("ForwardAxis",$l)}function Fr(){switch(Jl){case 94:_l(94),Bl(27),_l(52);break;case 112:_l(112),Bl(27),_l(52);break;case 83:_l(83),Bl(27),_l(52);break;case 234:_l(234),Bl(27),_l(52);break;case 113:_l(113),Bl(27),_l(52);break;case 138:_l(138),Bl(27),_l(52);break;default:_l(137),Bl(27),_l(52)}}function Ir(){sc.startNonterminal("AbbrevForwardStep",$l),Jl==67&&Ml(67),Bl(250),Pl(),$r(),sc.endNonterminal("AbbrevForwardStep",$l)}function qr(){Jl==67&&_l(67),Bl(250),Jr()}function Rr(){sc.startNonterminal("ReverseStep",$l);switch(Jl){case 46:Xr();break;default:zr(),Bl(250),Pl(),$r()}sc.endNonterminal("ReverseStep",$l)}function Ur(){switch(Jl){case 46:Vr();break;default:Wr(),Bl(250),Jr()}}function zr(){sc.startNonterminal("ReverseAxis",$l);switch(Jl){case 210:Ml(210),Bl(27),Ml(52);break;case 74:Ml(74),Bl(27),Ml(52);break;case 217:Ml(217),Bl(27),Ml(52);break;case 216:Ml(216),Bl(27),Ml(52);break;default:Ml(75),Bl(27),Ml(52)}sc.endNonterminal("ReverseAxis",$l)}function Wr(){switch(Jl){case 210:_l(210),Bl(27),_l(52);break;case 74:_l(74),Bl(27),_l(52);break;case 217:_l(217),Bl(27),_l(52);break;case 216:_l(216),Bl(27),_l(52);break;default:_l(75),Bl(27),_l(52)}}function Xr(){sc.startNonterminal("AbbrevReverseStep",$l),Ml(46),sc.endNonterminal("AbbrevReverseStep",$l)}function Vr(){_l(46)}function $r(){sc.startNonterminal("NodeTest",$l);switch(Jl){case 83:case 97:case 121:case 122:case 188:case 194:case 220:case 230:case 231:case 249:jl(232);break;default:Xl=Jl}switch(Xl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:zs();break;default:Kr()}sc.endNonterminal("NodeTest",$l)}function Jr(){switch(Jl){case 83:case 97:case 121:case 122:case 188:case 194:case 220:case 230:case 231:case 249:jl(232);break;default:Xl=Jl}switch(Xl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:Ws();break;default:Qr()}}function Kr(){sc.startNonterminal("NameTest",$l);switch(Jl){case 5:Ml(5);break;default:Wa()}sc.endNonterminal("NameTest",$l)}function Qr(){switch(Jl){case 5:_l(5);break;default:Xa()}}function Gr(){sc.startNonterminal("PostfixExpr",$l),vl();for(;;){Bl(236);if(Jl!=35&&Jl!=45&&Jl!=69)break;switch(Jl){case 69:jl(274);break;default:Xl=Jl}if(Xl==35397){Xl=Ul(5,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{li(),Xl=-1}catch(a){Xl=-4}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(5,$l,Xl)}}switch(Xl){case 35:Pl(),si();break;case 45:Pl(),Zr();break;case-4:Pl(),ti();break;case 35909:Pl(),ri();break;default:Pl(),fi()}}sc.endNonterminal("PostfixExpr",$l)}function Yr(){ml();for(;;){Bl(236);if(Jl!=35&&Jl!=45&&Jl!=69)break;switch(Jl){case 69:jl(274);break;default:Xl=Jl}if(Xl==35397){Xl=Ul(5,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{li(),Rl(5,t,-1),Xl=-6}catch(a){Xl=-4,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(5,t,-4)}}}switch(Xl){case 35:oi();break;case 45:ei();break;case-4:ni();break;case 35909:ii();break;case-6:break;default:li()}}}function Zr(){sc.startNonterminal("ObjectLookup",$l),Ml(45),Bl(252);switch(Jl){case 11:Ml(11);break;case 35:Pl(),xi();break;case 31:Pl(),bi();break;case 32:Pl(),Ni();break;default:Pl(),Ja()}sc.endNonterminal("ObjectLookup",$l)}function ei(){_l(45),Bl(252);switch(Jl){case 11:_l(11);break;case 35:Ti();break;case 31:wi();break;case 32:Ci();break;default:Ka()}}function ti(){sc.startNonterminal("ArrayLookup",$l),Ml(69),Bl(31),Ml(69),Bl(268),Pl(),Q(),Ml(70),Bl(32),Ml(70),sc.endNonterminal("ArrayLookup",$l)}function ni(){_l(69),Bl(31),_l(69),Bl(268),G(),_l(70),Bl(32),_l(70)}function ri(){sc.startNonterminal("ArrayUnboxing",$l),Ml(69),Bl(32),Ml(70),sc.endNonterminal("ArrayUnboxing",$l)}function ii(){_l(69),Bl(32),_l(70)}function si(){sc.startNonterminal("ArgumentList",$l),Ml(35),Bl(281);if(Jl!=38){Pl(),Di();for(;;){Bl(103);if(Jl!=42)break;Ml(42),Bl(273),Pl(),Di()}}Ml(38),sc.endNonterminal("ArgumentList",$l)}function oi(){_l(35),Bl(281);if(Jl!=38){Pi();for(;;){Bl(103);if(Jl!=42)break;_l(42),Bl(273),Pi()}}_l(38)}function ui(){sc.startNonterminal("PredicateList",$l);for(;;){Bl(229);if(Jl!=69)break;Pl(),fi()}sc.endNonterminal("PredicateList",$l)}function ai(){for(;;){Bl(229);if(Jl!=69)break;li()}}function fi(){sc.startNonterminal("Predicate",$l),Ml(69),Bl(268),Pl(),Q(),Ml(70),sc.endNonterminal("Predicate",$l)}function li(){_l(69),Bl(268),G(),_l(70)}function ci(){sc.startNonterminal("Literal",$l);switch(Jl){case 11:Ml(11);break;case 135:case 255:pi();break;case 197:vi();break;default:gi()}sc.endNonterminal("Literal",$l)}function hi(){switch(Jl){case 11:_l(11);break;case 135:case 255:di();break;case 197:mi();break;default:yi()}}function pi(){sc.startNonterminal("BooleanLiteral",$l);switch(Jl){case 255:Ml(255);break;default:Ml(135)}sc.endNonterminal("BooleanLiteral",$l)}function di(){switch(Jl){case 255:_l(255);break;default:_l(135)}}function vi(){sc.startNonterminal("NullLiteral",$l),Ml(197),sc.endNonterminal("NullLiteral",$l)}function mi(){_l(197)}function gi(){sc.startNonterminal("NumericLiteral",$l);switch(Jl){case 8:Ml(8);break;case 9:Ml(9);break;default:Ml(10)}sc.endNonterminal("NumericLiteral",$l)}function yi(){switch(Jl){case 8:_l(8);break;case 9:_l(9);break;default:_l(10)}}function bi(){sc.startNonterminal("VarRef",$l),Ml(31),Bl(247),Pl(),Ei(),sc.endNonterminal("VarRef",$l)}function wi(){_l(31),Bl(247),Si()}function Ei(){sc.startNonterminal("VarName",$l),Wa(),sc.endNonterminal("VarName",$l)}function Si(){Xa()}function xi(){sc.startNonterminal("ParenthesizedExpr",$l),Ml(35),Bl(271),Jl!=38&&(Pl(),Q()),Ml(38),sc.endNonterminal("ParenthesizedExpr",$l)}function Ti(){_l(35),Bl(271),Jl!=38&&G(),_l(38)}function Ni(){sc.startNonterminal("ContextItemExpr",$l),Ml(32),sc.endNonterminal("ContextItemExpr",$l)}function Ci(){_l(32)}function ki(){sc.startNonterminal("OrderedExpr",$l),Ml(206),Bl(89),Ml(281),Bl(268),Pl(),Q(),Ml(287),sc.endNonterminal("OrderedExpr",$l)}function Li(){_l(206),Bl(89),_l(281),Bl(268),G(),_l(287)}function Ai(){sc.startNonterminal("UnorderedExpr",$l),Ml(262),Bl(89),Ml(281),Bl(268),Pl(),Q(),Ml(287),sc.endNonterminal("UnorderedExpr",$l)}function Oi(){_l(262),Bl(89),_l(281),Bl(268),G(),_l(287)}function Mi(){sc.startNonterminal("FunctionCall",$l),Va(),Bl(22),Pl(),si(),sc.endNonterminal("FunctionCall",$l)}function _i(){$a(),Bl(22),oi()}function Di(){sc.startNonterminal("Argument",$l);switch(Jl){case 65:Hi();break;default:Rf()}sc.endNonterminal("Argument",$l)}function Pi(){switch(Jl){case 65:Bi();break;default:Uf()}}function Hi(){sc.startNonterminal("ArgumentPlaceholder",$l),Ml(65),sc.endNonterminal("ArgumentPlaceholder",$l)}function Bi(){_l(65)}function ji(){sc.startNonterminal("Constructor",$l);switch(Jl){case 55:case 56:case 60:Ii();break;default:rs()}sc.endNonterminal("Constructor",$l)}function Fi(){switch(Jl){case 55:case 56:case 60:qi();break;default:is()}}function Ii(){sc.startNonterminal("DirectConstructor",$l);switch(Jl){case 55:Ri();break;case 56:Zi();break;default:ts()}sc.endNonterminal("DirectConstructor",$l)}function qi(){switch(Jl){case 55:Ui();break;case 56:es();break;default:ns()}}function Ri(){sc.startNonterminal("DirElemConstructor",$l),Ml(55),Fl(4),Ml(20),zi();switch(Jl){case 49:Ml(49);break;default:Ml(62);for(;;){Fl(196);if(Jl==57)break;Gi()}Ml(57),Fl(4),Ml(20),Fl(12),Jl==21&&Ml(21),Fl(8),Ml(62)}sc.endNonterminal("DirElemConstructor",$l)}function Ui(){_l(55),Fl(4),_l(20),Wi();switch(Jl){case 49:_l(49);break;default:_l(62);for(;;){Fl(196);if(Jl==57)break;Yi()}_l(57),Fl(4),_l(20),Fl(12),Jl==21&&_l(21),Fl(8),_l(62)}}function zi(){sc.startNonterminal("DirAttributeList",$l);for(;;){Fl(19);if(Jl!=21)break;Ml(21),Fl(93),Jl==20&&(Ml(20),Fl(11),Jl==21&&Ml(21),Fl(7),Ml(61),Fl(18),Jl==21&&Ml(21),Xi())}sc.endNonterminal("DirAttributeList",$l)}function Wi(){for(;;){Fl(19);if(Jl!=21)break;_l(21),Fl(93),Jl==20&&(_l(20),Fl(11),Jl==21&&_l(21),Fl(7),_l(61),Fl(18),Jl==21&&_l(21),Vi())}}function Xi(){sc.startNonterminal("DirAttributeValue",$l),Fl(14);switch(Jl){case 28:Ml(28);for(;;){Fl(186);if(Jl==28)break;switch(Jl){case 13:Ml(13);break;default:$i()}}Ml(28);break;default:Ml(34);for(;;){Fl(187);if(Jl==34)break;switch(Jl){case 14:Ml(14);break;default:Ki()}}Ml(34)}sc.endNonterminal("DirAttributeValue",$l)}function Vi(){Fl(14);switch(Jl){case 28:_l(28);for(;;){Fl(186);if(Jl==28)break;switch(Jl){case 13:_l(13);break;default:Ji()}}_l(28);break;default:_l(34);for(;;){Fl(187);if(Jl==34)break;switch(Jl){case 14:_l(14);break;default:Qi()}}_l(34)}}function $i(){sc.startNonterminal("QuotAttrValueContent",$l);switch(Jl){case 16:Ml(16);break;default:tl()}sc.endNonterminal("QuotAttrValueContent",$l)}function Ji(){switch(Jl){case 16:_l(16);break;default:nl()}}function Ki(){sc.startNonterminal("AposAttrValueContent",$l);switch(Jl){case 17:Ml(17);break;default:tl()}sc.endNonterminal("AposAttrValueContent",$l)}function Qi(){switch(Jl){case 17:_l(17);break;default:nl()}}function Gi(){sc.startNonterminal("DirElemContent",$l);switch(Jl){case 55:case 56:case 60:Ii();break;case 4:Ml(4);break;case 15:Ml(15);break;default:tl()}sc.endNonterminal("DirElemContent",$l)}function Yi(){switch(Jl){case 55:case 56:case 60:qi();break;case 4:_l(4);break;case 15:_l(15);break;default:nl()}}function Zi(){sc.startNonterminal("DirCommentConstructor",$l),Ml(56),Fl(1),Ml(2),Fl(6),Ml(44),sc.endNonterminal("DirCommentConstructor",$l)}function es(){_l(56),Fl(1),_l(2),Fl(6),_l(44)}function ts(){sc.startNonterminal("DirPIConstructor",$l),Ml(60),Fl(3),Ml(18),Fl(13),Jl==21&&(Ml(21),Fl(2),Ml(3)),Fl(9),Ml(66),sc.endNonterminal("DirPIConstructor",$l)}function ns(){_l(60),Fl(3),_l(18),Fl(13),Jl==21&&(_l(21),Fl(2),_l(3)),Fl(9),_l(66)}function rs(){sc.startNonterminal("ComputedConstructor",$l);switch(Jl){case 120:sl();break;case 122:ss();break;case 83:ul();break;case 187:us();break;case 249:pl();break;case 97:cl();break;default:fl()}sc.endNonterminal("ComputedConstructor",$l)}function is(){switch(Jl){case 120:ol();break;case 122:os();break;case 83:al();break;case 187:as();break;case 249:dl();break;case 97:hl();break;default:ll()}}function ss(){sc.startNonterminal("CompElemConstructor",$l),Ml(122),Bl(251);switch(Jl){case 281:Ml(281),Bl(268),Pl(),Q(),Ml(287);break;default:Pl(),Wa()}Bl(89),Ml(281),Bl(282),Jl!=287&&(Pl(),rl()),Ml(287),sc.endNonterminal("CompElemConstructor",$l)}function os(){_l(122),Bl(251);switch(Jl){case 281:_l(281),Bl(268),G(),_l(287);break;default:Xa()}Bl(89),_l(281),Bl(282),Jl!=287&&il(),_l(287)}function us(){sc.startNonterminal("CompNamespaceConstructor",$l),Ml(187),Bl(243);switch(Jl){case 281:Ml(281),Bl(268),Pl(),cs(),Ml(287);break;default:Pl(),fs()}Bl(89),Ml(281),Bl(268),Pl(),ps(),Ml(287),sc.endNonterminal("CompNamespaceConstructor",$l)}function as(){_l(187),Bl(243);switch(Jl){case 281:_l(281),Bl(268),hs(),_l(287);break;default:ls()}Bl(89),_l(281),Bl(268),ds(),_l(287)}function fs(){sc.startNonterminal("Prefix",$l),Ja(),sc.endNonterminal("Prefix",$l)}function ls(){Ka()}function cs(){sc.startNonterminal("PrefixExpr",$l),Q(),sc.endNonterminal("PrefixExpr",$l)}function hs(){G()}function ps(){sc.startNonterminal("URIExpr",$l),Q(),sc.endNonterminal("URIExpr",$l)}function ds(){G()}function vs(){sc.startNonterminal("FunctionItemExpr",$l);switch(Jl){case 147:jl(94);break;default:Xl=Jl}switch(Xl){case 33:case 18067:bs();break;default:gs()}sc.endNonterminal("FunctionItemExpr",$l)}function ms(){switch(Jl){case 147:jl(94);break;default:Xl=Jl}switch(Xl){case 33:case 18067:ws();break;default:ys()}}function gs(){sc.startNonterminal("NamedFunctionRef",$l),Wa(),Bl(20),Ml(29),Bl(16),Ml(8),sc.endNonterminal("NamedFunctionRef",$l)}function ys(){Xa(),Bl(20),_l(29),Bl(16),_l(8)}function bs(){sc.startNonterminal("InlineFunctionExpr",$l);for(;;){Bl(99);if(Jl!=33)break;Pl(),H()}Ml(147),Bl(22),Ml(35),Bl(97),Jl==31&&(Pl(),R()),Ml(38),Bl(113),Jl==80&&(Ml(80),Bl(255),Pl(),Ns()),Bl(89),Pl(),X(),sc.endNonterminal("InlineFunctionExpr",$l)}function ws(){for(;;){Bl(99);if(Jl!=33)break;B()}_l(147),Bl(22),_l(35),Bl(97),Jl==31&&U(),_l(38),Bl(113),Jl==80&&(_l(80),Bl(255),Cs()),Bl(89),V()}function Es(){sc.startNonterminal("SingleType",$l),To(),Bl(227),Jl==65&&Ml(65),sc.endNonterminal("SingleType",$l)}function Ss(){No(),Bl(227),Jl==65&&_l(65)}function xs(){sc.startNonterminal("TypeDeclaration",$l),Ml(80),Bl(255),Pl(),Ns(),sc.endNonterminal("TypeDeclaration",$l)}function Ts(){_l(80),Bl(255),Cs()}function Ns(){sc.startNonterminal("SequenceType",$l);switch(Jl){case 35:jl(260);break;case 125:jl(234);break;default:Xl=Jl}switch(Xl){case 18045:case 19491:Jl==125&&Ml(125),Bl(22),Ml(35),Bl(23),Ml(38);break;default:As(),Bl(230);switch(Jl){case 40:case 41:case 65:Pl(),ks();break;default:}}sc.endNonterminal("SequenceType",$l)}function Cs(){switch(Jl){case 35:jl(260);break;case 125:jl(234);break;default:Xl=Jl}switch(Xl){case 18045:case 19491:Jl==125&&_l(125),Bl(22),_l(35),Bl(23),_l(38);break;default:Os(),Bl(230);switch(Jl){case 40:case 41:case 65:Ls();break;default:}}}function ks(){sc.startNonterminal("OccurrenceIndicator",$l);switch(Jl){case 65:Ml(65);break;case 40:Ml(40);break;default:Ml(41)}sc.endNonterminal("OccurrenceIndicator",$l)}function Ls(){switch(Jl){case 65:_l(65);break;case 40:_l(40);break;default:_l(41)}}function As(){sc.startNonterminal("ItemType",$l);switch(Jl){case 79:case 83:case 97:case 121:case 122:case 147:case 167:case 169:case 188:case 194:case 198:case 220:case 230:case 231:case 247:case 249:jl(234);break;default:Xl=Jl}if(Xl==12879||Xl==12969||Xl==12998||Xl==13047||Xl==13903||Xl==13993||Xl==14022||Xl==14071||Xl==19535||Xl==19625||Xl==19654||Xl==19703||Xl==20047||Xl==20137||Xl==20166||Xl==20215||Xl==20559||Xl==20649||Xl==20678||Xl==20727||Xl==21071||Xl==21161||Xl==21190||Xl==21239||Xl==21583||Xl==21673||Xl==21702||Xl==21751||Xl==22095||Xl==22185||Xl==22214||Xl==22263||Xl==25679||Xl==25769||Xl==25798||Xl==25847||Xl==27215||Xl==27305||Xl==27334||Xl==27383||Xl==27727||Xl==27817||Xl==27846||Xl==27895||Xl==28239||Xl==28329||Xl==28358||Xl==28407||Xl==29775||Xl==29865||Xl==29894||Xl==29943||Xl==30287||Xl==30377||Xl==30406||Xl==30455||Xl==31311||Xl==31401||Xl==31430||Xl==31479||Xl==31823||Xl==31913||Xl==31942||Xl==31991||Xl==32335||Xl==32425||Xl==32454||Xl==32503||Xl==32847||Xl==32937||Xl==32966||Xl==33015||Xl==33359||Xl==33449||Xl==33478||Xl==33527||Xl==35919||Xl==36009||Xl==36038||Xl==36087||Xl==36431||Xl==36521||Xl==36550||Xl==36599||Xl==37455||Xl==37545||Xl==37574||Xl==37623||Xl==38991||Xl==39081||Xl==39110||Xl==39159||Xl==41039||Xl==41129||Xl==41158||Xl==41207||Xl==41551||Xl==41641||Xl==41670||Xl==41719||Xl==42063||Xl==42153||Xl==42182||Xl==42231||Xl==43599||Xl==43689||Xl==43718||Xl==43767||Xl==45647||Xl==45737||Xl==45766||Xl==45815||Xl==48719||Xl==48809||Xl==48838||Xl==48887||Xl==51279||Xl==51369||Xl==51398||Xl==51447||Xl==54351||Xl==54441||Xl==54470||Xl==54519||Xl==56399||Xl==56489||Xl==56518||Xl==56567||Xl==58447||Xl==58537||Xl==58566||Xl==58615||Xl==61007||Xl==61097||Xl==61126||Xl==61175||Xl==63055||Xl==63145||Xl==63174||Xl==63223||Xl==63567||Xl==63657||Xl==63686||Xl==63735||Xl==65103||Xl==65193||Xl==65222||Xl==65271||Xl==66127||Xl==66217||Xl==66246||Xl==66295||Xl==67663||Xl==67753||Xl==67782||Xl==67831||Xl==68687||Xl==68777||Xl==68806||Xl==68855||Xl==71247||Xl==71337||Xl==71366||Xl==71415||Xl==72783||Xl==72873||Xl==72902||Xl==72951||Xl==75855||Xl==75945||Xl==75974||Xl==76023||Xl==76879||Xl==76969||Xl==76998||Xl==77047||Xl==77903||Xl==77993||Xl==78022||Xl==78071||Xl==78415||Xl==78505||Xl==78534||Xl==78583||Xl==79951||Xl==80041||Xl==80070||Xl==80119||Xl==83023||Xl==83113||Xl==83142||Xl==83191||Xl==84047||Xl==84137||Xl==84166||Xl==84215||Xl==84559||Xl==84649||Xl==84678||Xl==84727||Xl==85071||Xl==85161||Xl==85190||Xl==85239||Xl==89679||Xl==89769||Xl==89798||Xl==89847||Xl==90703||Xl==90793||Xl==90822||Xl==90871||Xl==92751||Xl==92841||Xl==92870||Xl==92919||Xl==93775||Xl==93865||Xl==93894||Xl==93943||Xl==94287||Xl==94377||Xl==94406||Xl==94455||Xl==96847||Xl==96937||Xl==96966||Xl==97015||Xl==103503||Xl==103593||Xl==103622||Xl==103671||Xl==104527||Xl==104617||Xl==104646||Xl==104695||Xl==105039||Xl==105129||Xl==105158||Xl==105207||Xl==107087||Xl==107177||Xl==107206||Xl==107255||Xl==114767||Xl==114857||Xl==114886||Xl==114935||Xl==116815||Xl==116905||Xl==116934||Xl==116983||Xl==118863||Xl==118953||Xl==118982||Xl==119031||Xl==119375||Xl==119465||Xl==119494||Xl==119543||Xl==121423||Xl==121513||Xl==121542||Xl==121591||Xl==123471||Xl==123561||Xl==123590||Xl==123639||Xl==123983||Xl==124073||Xl==124102||Xl==124151||Xl==129103||Xl==129193||Xl==129222||Xl==129271||Xl==129615||Xl==129705||Xl==129734||Xl==129783||Xl==133199||Xl==133289||Xl==133318||Xl==133367||Xl==139343||Xl==139433||Xl==139462||Xl==139511||Xl==141391||Xl==141481||Xl==141510||Xl==141559||Xl==142927||Xl==143017||Xl==143046||Xl==143095||Xl==143951||Xl==144041||Xl==144070||Xl==144119||Xl==145487||Xl==145577||Xl==145606||Xl==145655||Xl==145999||Xl==146089||Xl==146118||Xl==146167||Xl==146511||Xl==146601||Xl==146630||Xl==146679||Xl==147023||Xl==147113||Xl==147142||Xl==147191){Xl=Ul(6,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{Us(),Xl=-4}catch(a){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),_s(),Xl=-6}catch(f){Xl=-7}}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(6,$l,Xl)}}switch(Xl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:zs();break;case 18087:Ml(167),Bl(22),Ml(35),Bl(23),Ml(38);break;case 33:case 18067:Lo();break;case 35:Po();break;case-6:case 17999:case 18089:case 18118:Ms();break;case-7:case 18167:Ds();break;default:Rs()}sc.endNonterminal("ItemType",$l)}function Os(){switch(Jl){case 79:case 83:case 97:case 121:case 122:case 147:case 167:case 169:case 188:case 194:case 198:case 220:case 230:case 231:case 247:case 249:jl(234);break;default:Xl=Jl}if(Xl==12879||Xl==12969||Xl==12998||Xl==13047||Xl==13903||Xl==13993||Xl==14022||Xl==14071||Xl==19535||Xl==19625||Xl==19654||Xl==19703||Xl==20047||Xl==20137||Xl==20166||Xl==20215||Xl==20559||Xl==20649||Xl==20678||Xl==20727||Xl==21071||Xl==21161||Xl==21190||Xl==21239||Xl==21583||Xl==21673||Xl==21702||Xl==21751||Xl==22095||Xl==22185||Xl==22214||Xl==22263||Xl==25679||Xl==25769||Xl==25798||Xl==25847||Xl==27215||Xl==27305||Xl==27334||Xl==27383||Xl==27727||Xl==27817||Xl==27846||Xl==27895||Xl==28239||Xl==28329||Xl==28358||Xl==28407||Xl==29775||Xl==29865||Xl==29894||Xl==29943||Xl==30287||Xl==30377||Xl==30406||Xl==30455||Xl==31311||Xl==31401||Xl==31430||Xl==31479||Xl==31823||Xl==31913||Xl==31942||Xl==31991||Xl==32335||Xl==32425||Xl==32454||Xl==32503||Xl==32847||Xl==32937||Xl==32966||Xl==33015||Xl==33359||Xl==33449||Xl==33478||Xl==33527||Xl==35919||Xl==36009||Xl==36038||Xl==36087||Xl==36431||Xl==36521||Xl==36550||Xl==36599||Xl==37455||Xl==37545||Xl==37574||Xl==37623||Xl==38991||Xl==39081||Xl==39110||Xl==39159||Xl==41039||Xl==41129||Xl==41158||Xl==41207||Xl==41551||Xl==41641||Xl==41670||Xl==41719||Xl==42063||Xl==42153||Xl==42182||Xl==42231||Xl==43599||Xl==43689||Xl==43718||Xl==43767||Xl==45647||Xl==45737||Xl==45766||Xl==45815||Xl==48719||Xl==48809||Xl==48838||Xl==48887||Xl==51279||Xl==51369||Xl==51398||Xl==51447||Xl==54351||Xl==54441||Xl==54470||Xl==54519||Xl==56399||Xl==56489||Xl==56518||Xl==56567||Xl==58447||Xl==58537||Xl==58566||Xl==58615||Xl==61007||Xl==61097||Xl==61126||Xl==61175||Xl==63055||Xl==63145||Xl==63174||Xl==63223||Xl==63567||Xl==63657||Xl==63686||Xl==63735||Xl==65103||Xl==65193||Xl==65222||Xl==65271||Xl==66127||Xl==66217||Xl==66246||Xl==66295||Xl==67663||Xl==67753||Xl==67782||Xl==67831||Xl==68687||Xl==68777||Xl==68806||Xl==68855||Xl==71247||Xl==71337||Xl==71366||Xl==71415||Xl==72783||Xl==72873||Xl==72902||Xl==72951||Xl==75855||Xl==75945||Xl==75974||Xl==76023||Xl==76879||Xl==76969||Xl==76998||Xl==77047||Xl==77903||Xl==77993||Xl==78022||Xl==78071||Xl==78415||Xl==78505||Xl==78534||Xl==78583||Xl==79951||Xl==80041||Xl==80070||Xl==80119||Xl==83023||Xl==83113||Xl==83142||Xl==83191||Xl==84047||Xl==84137||Xl==84166||Xl==84215||Xl==84559||Xl==84649||Xl==84678||Xl==84727||Xl==85071||Xl==85161||Xl==85190||Xl==85239||Xl==89679||Xl==89769||Xl==89798||Xl==89847||Xl==90703||Xl==90793||Xl==90822||Xl==90871||Xl==92751||Xl==92841||Xl==92870||Xl==92919||Xl==93775||Xl==93865||Xl==93894||Xl==93943||Xl==94287||Xl==94377||Xl==94406||Xl==94455||Xl==96847||Xl==96937||Xl==96966||Xl==97015||Xl==103503||Xl==103593||Xl==103622||Xl==103671||Xl==104527||Xl==104617||Xl==104646||Xl==104695||Xl==105039||Xl==105129||Xl==105158||Xl==105207||Xl==107087||Xl==107177||Xl==107206||Xl==107255||Xl==114767||Xl==114857||Xl==114886||Xl==114935||Xl==116815||Xl==116905||Xl==116934||Xl==116983||Xl==118863||Xl==118953||Xl==118982||Xl==119031||Xl==119375||Xl==119465||Xl==119494||Xl==119543||Xl==121423||Xl==121513||Xl==121542||Xl==121591||Xl==123471||Xl==123561||Xl==123590||Xl==123639||Xl==123983||Xl==124073||Xl==124102||Xl==124151||Xl==129103||Xl==129193||Xl==129222||Xl==129271||Xl==129615||Xl==129705||Xl==129734||Xl==129783||Xl==133199||Xl==133289||Xl==133318||Xl==133367||Xl==139343||Xl==139433||Xl==139462||Xl==139511||Xl==141391||Xl==141481||Xl==141510||Xl==141559||Xl==142927||Xl==143017||Xl==143046||Xl==143095||Xl==143951||Xl==144041||Xl==144070||Xl==144119||Xl==145487||Xl==145577||Xl==145606||Xl==145655||Xl==145999||Xl==146089||Xl==146118||Xl==146167||Xl==146511||Xl==146601||Xl==146630||Xl==146679||Xl==147023||Xl==147113||Xl==147142||Xl==147191){Xl=Ul(6,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{Us(),Rl(6,t,-4),Xl=-8}catch(a){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),_s(),Rl(6,t,-6),Xl=-8}catch(f){Xl=-7,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(6,t,-7)}}}}switch(Xl){case 18003:case 18017:case 18041:case 18042:case 18108:case 18114:case 18140:case 18150:case 18151:case 18169:Ws();break;case 18087:_l(167),Bl(22),_l(35),Bl(23),_l(38);break;case 33:case 18067:Ao();break;case 35:Ho();break;case-6:case 17999:case 18089:case 18118:_s();break;case-7:case 18167:Ps();break;case-8:break;default:Us()}}function Ms(){sc.startNonterminal("JSONTest",$l);switch(Jl){case 169:Hs();break;case 198:js();break;default:Is()}sc.endNonterminal("JSONTest",$l)}function _s(){switch(Jl){case 169:Bs();break;case 198:Fs();break;default:qs()}}function Ds(){sc.startNonterminal("StructuredItemTest",$l),Ml(247),Bl(234),Jl==35&&(Ml(35),Bl(23),Ml(38)),sc.endNonterminal("StructuredItemTest",$l)}function Ps(){_l(247),Bl(234),Jl==35&&(_l(35),Bl(23),_l(38))}function Hs(){sc.startNonterminal("JSONItemTest",$l),Ml(169),Bl(234),Jl==35&&(Ml(35),Bl(23),Ml(38)),sc.endNonterminal("JSONItemTest",$l)}function Bs(){_l(169),Bl(234),Jl==35&&(_l(35),Bl(23),_l(38))}function js(){sc.startNonterminal("JSONObjectTest",$l),Ml(198),Bl(234),Jl==35&&(Ml(35),Bl(23),Ml(38)),sc.endNonterminal("JSONObjectTest",$l)}function Fs(){_l(198),Bl(234),Jl==35&&(_l(35),Bl(23),_l(38))}function Is(){sc.startNonterminal("JSONArrayTest",$l),Ml(79),Bl(234),Jl==35&&(Ml(35),Bl(23),Ml(38)),sc.endNonterminal("JSONArrayTest",$l)}function qs(){_l(79),Bl(234),Jl==35&&(_l(35),Bl(23),_l(38))}function Rs(){sc.startNonterminal("AtomicOrUnionType",$l),Wa(),sc.endNonterminal("AtomicOrUnionType",$l)}function Us(){Xa()}function zs(){sc.startNonterminal("KindTest",$l);switch(Jl){case 121:$s();break;case 122:co();break;case 83:ro();break;case 231:mo();break;case 230:uo();break;case 220:to();break;case 97:Gs();break;case 249:Ks();break;case 188:Zs();break;default:Xs()}sc.endNonterminal("KindTest",$l)}function Ws(){switch(Jl){case 121:Js();break;case 122:ho();break;case 83:io();break;case 231:go();break;case 230:ao();break;case 220:no();break;case 97:Ys();break;case 249:Qs();break;case 188:eo();break;default:Vs()}}function Xs(){sc.startNonterminal("AnyKindTest",$l),Ml(194),Bl(22),Ml(35),Bl(23),Ml(38),sc.endNonterminal("AnyKindTest",$l)}function Vs(){_l(194),Bl(22),_l(35),Bl(23),_l(38)}function $s(){sc.startNonterminal("DocumentTest",$l),Ml(121),Bl(22),Ml(35),Bl(153);if(Jl!=38)switch(Jl){case 122:Pl(),co();break;default:Pl(),mo()}Bl(23),Ml(38),sc.endNonterminal("DocumentTest",$l)}function Js(){_l(121),Bl(22),_l(35),Bl(153);if(Jl!=38)switch(Jl){case 122:ho();break;default:go()}Bl(23),_l(38)}function Ks(){sc.startNonterminal("TextTest",$l),Ml(249),Bl(22),Ml(35),Bl(23),Ml(38),sc.endNonterminal("TextTest",$l)}function Qs(){_l(249),Bl(22),_l(35),Bl(23),_l(38)}function Gs(){sc.startNonterminal("CommentTest",$l),Ml(97),Bl(22),Ml(35),Bl(23),Ml(38),sc.endNonterminal("CommentTest",$l)}function Ys(){_l(97),Bl(22),_l(35),Bl(23),_l(38)}function Zs(){sc.startNonterminal("NamespaceNodeTest",$l),Ml(188),Bl(22),Ml(35),Bl(23),Ml(38),sc.endNonterminal("NamespaceNodeTest",$l)}function eo(){_l(188),Bl(22),_l(35),Bl(23),_l(38)}function to(){sc.startNonterminal("PITest",$l),Ml(220),Bl(22),Ml(35),Bl(245);if(Jl!=38)switch(Jl){case 11:Ml(11);break;default:Pl(),Ja()}Bl(23),Ml(38),sc.endNonterminal("PITest",$l)}function no(){_l(220),Bl(22),_l(35),Bl(245);if(Jl!=38)switch(Jl){case 11:_l(11);break;default:Ka()}Bl(23),_l(38)}function ro(){sc.startNonterminal("AttributeTest",$l),Ml(83),Bl(22),Ml(35),Bl(256),Jl!=38&&(Pl(),so(),Bl(103),Jl==42&&(Ml(42),Bl(247),Pl(),Co())),Bl(23),Ml(38),sc.endNonterminal("AttributeTest",$l)}function io(){_l(83),Bl(22),_l(35),Bl(256),Jl!=38&&(oo(),Bl(103),Jl==42&&(_l(42),Bl(247),ko())),Bl(23),_l(38)}function so(){sc.startNonterminal("AttribNameOrWildcard",$l);switch(Jl){case 39:Ml(39);break;default:wo()}sc.endNonterminal("AttribNameOrWildcard",$l)}function oo(){switch(Jl){case 39:_l(39);break;default:Eo()}}function uo(){sc.startNonterminal("SchemaAttributeTest",$l),Ml(230),Bl(22),Ml(35),Bl(247),Pl(),fo(),Bl(23),Ml(38),sc.endNonterminal("SchemaAttributeTest",$l)}function ao(){_l(230),Bl(22),_l(35),Bl(247),lo(),Bl(23),_l(38)}function fo(){sc.startNonterminal("AttributeDeclaration",$l),wo(),sc.endNonterminal("AttributeDeclaration",$l)}function lo(){Eo()}function co(){sc.startNonterminal("ElementTest",$l),Ml(122),Bl(22),Ml(35),Bl(256),Jl!=38&&(Pl(),po(),Bl(103),Jl==42&&(Ml(42),Bl(247),Pl(),Co(),Bl(104),Jl==65&&Ml(65))),Bl(23),Ml(38),sc.endNonterminal("ElementTest",$l)}function ho(){_l(122),Bl(22),_l(35),Bl(256),Jl!=38&&(vo(),Bl(103),Jl==42&&(_l(42),Bl(247),ko(),Bl(104),Jl==65&&_l(65))),Bl(23),_l(38)}function po(){sc.startNonterminal("ElementNameOrWildcard",$l);switch(Jl){case 39:Ml(39);break;default:So()}sc.endNonterminal("ElementNameOrWildcard",$l)}function vo(){switch(Jl){case 39:_l(39);break;default:xo()}}function mo(){sc.startNonterminal("SchemaElementTest",$l),Ml(231),Bl(22),Ml(35),Bl(247),Pl(),yo(),Bl(23),Ml(38),sc.endNonterminal("SchemaElementTest",$l)}function go(){_l(231),Bl(22),_l(35),Bl(247),bo(),Bl(23),_l(38)}function yo(){sc.startNonterminal("ElementDeclaration",$l),So(),sc.endNonterminal("ElementDeclaration",$l)}function bo(){xo()}function wo(){sc.startNonterminal("AttributeName",$l),Wa(),sc.endNonterminal("AttributeName",$l)}function Eo(){Xa()}function So(){sc.startNonterminal("ElementName",$l),Wa(),sc.endNonterminal("ElementName",$l)}function xo(){Xa()}function To(){sc.startNonterminal("SimpleTypeName",$l),Co(),sc.endNonterminal("SimpleTypeName",$l)}function No(){ko()}function Co(){sc.startNonterminal("TypeName",$l),Wa(),sc.endNonterminal("TypeName",$l)}function ko(){Xa()}function Lo(){sc.startNonterminal("FunctionTest",$l);for(;;){Bl(99);if(Jl!=33)break;Pl(),H()}switch(Jl){case 147:jl(22);break;default:Xl=Jl}Xl=Ul(7,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{Mo(),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(7,$l,Xl)}switch(Xl){case-1:Pl(),Oo();break;default:Pl(),_o()}sc.endNonterminal("FunctionTest",$l)}function Ao(){for(;;){Bl(99);if(Jl!=33)break;B()}switch(Jl){case 147:jl(22);break;default:Xl=Jl}Xl=Ul(7,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{Mo(),Rl(7,t,-1),Xl=-3}catch(a){Xl=-2,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(7,t,-2)}}switch(Xl){case-1:Mo();break;case-3:break;default:Do()}}function Oo(){sc.startNonterminal("AnyFunctionTest",$l),Ml(147),Bl(22),Ml(35),Bl(24),Ml(39),Bl(23),Ml(38),sc.endNonterminal("AnyFunctionTest",$l)}function Mo(){_l(147),Bl(22),_l(35),Bl(24),_l(39),Bl(23),_l(38)}function _o(){sc.startNonterminal("TypedFunctionTest",$l),Ml(147),Bl(22),Ml(35),Bl(260);if(Jl!=38){Pl(),Ns();for(;;){Bl(103);if(Jl!=42)break;Ml(42),Bl(255),Pl(),Ns()}}Ml(38),Bl(33),Ml(80),Bl(255),Pl(),Ns(),sc.endNonterminal("TypedFunctionTest",$l)}function Do(){_l(147),Bl(22),_l(35),Bl(260);if(Jl!=38){Cs();for(;;){Bl(103);if(Jl!=42)break;_l(42),Bl(255),Cs()}}_l(38),Bl(33),_l(80),Bl(255),Cs()}function Po(){sc.startNonterminal("ParenthesizedItemType",$l),Ml(35),Bl(255),Pl(),As(),Bl(23),Ml(38),sc.endNonterminal("ParenthesizedItemType",$l)}function Ho(){_l(35),Bl(255),Os(),Bl(23),_l(38)}function Bo(){sc.startNonterminal("RevalidationDecl",$l),Ml(109),Bl(74),Ml(226),Bl(161);switch(Jl){case 245:Ml(245);break;case 174:Ml(174);break;default:Ml(238)}sc.endNonterminal("RevalidationDecl",$l)}function jo(){sc.startNonterminal("InsertExprTargetChoice",$l);switch(Jl){case 71:Ml(71);break;case 85:Ml(85);break;default:if(Jl==80){Ml(80),Bl(121);switch(Jl){case 136:Ml(136);break;default:Ml(173)}}Bl(57),Ml(165)}sc.endNonterminal("InsertExprTargetChoice",$l)}function Fo(){switch(Jl){case 71:_l(71);break;case 85:_l(85);break;default:if(Jl==80){_l(80),Bl(121);switch(Jl){case 136:_l(136);break;default:_l(173)}}Bl(57),_l(165)}}function Io(){sc.startNonterminal("InsertExpr",$l),Ml(161),Bl(131);switch(Jl){case 194:Ml(194);break;default:Ml(195)}Bl(268),Pl(),$o(),Pl(),jo(),Bl(268),Pl(),Ko(),sc.endNonterminal("InsertExpr",$l)}function qo(){_l(161),Bl(131);switch(Jl){case 194:_l(194);break;default:_l(195)}Bl(268),Jo(),Fo(),Bl(268),Qo()}function Ro(){sc.startNonterminal("DeleteExpr",$l),Ml(111),Bl(131);switch(Jl){case 194:Ml(194);break;default:Ml(195)}Bl(268),Pl(),Ko(),sc.endNonterminal("DeleteExpr",$l)}function Uo(){_l(111),Bl(131);switch(Jl){case 194:_l(194);break;default:_l(195)}Bl(268),Qo()}function zo(){sc.startNonterminal("ReplaceExpr",$l),Ml(223),Bl(132),Jl==267&&(Ml(267),Bl(67),Ml(200)),Bl(65),Ml(194),Bl(268),Pl(),Ko(),Ml(276),Bl(268),Pl(),Rf(),sc.endNonterminal("ReplaceExpr",$l)}function Wo(){_l(223),Bl(132),Jl==267&&(_l(267),Bl(67),_l(200)),Bl(65),_l(194),Bl(268),Qo(),_l(276),Bl(268),Uf()}function Xo(){sc.startNonterminal("RenameExpr",$l),Ml(222),Bl(65),Ml(194),Bl(268),Pl(),Ko(),Ml(80),Bl(268),Pl(),Go(),sc.endNonterminal("RenameExpr",$l)}function Vo(){_l(222),Bl(65),_l(194),Bl(268),Qo(),_l(80),Bl(268),Yo()}function $o(){sc.startNonterminal("SourceExpr",$l),Rf(),sc.endNonterminal("SourceExpr",$l)}function Jo(){Uf()}function Ko(){sc.startNonterminal("TargetExpr",$l),Rf(),sc.endNonterminal("TargetExpr",$l)}function Qo(){Uf()}function Go(){sc.startNonterminal("NewNameExpr",$l),Rf(),sc.endNonterminal("NewNameExpr",$l)}function Yo(){Uf()}function Zo(){sc.startNonterminal("TransformExpr",$l),Ml(104),Bl(21),Pl(),tu();for(;;){if(Jl!=42)break;Ml(42),Bl(21),Pl(),tu()}Ml(184),Bl(268),Pl(),Rf(),Ml(224),Bl(268),Pl(),Rf(),sc.endNonterminal("TransformExpr",$l)}function eu(){_l(104),Bl(21),nu();for(;;){if(Jl!=42)break;_l(42),Bl(21),nu()}_l(184),Bl(268),Uf(),_l(224),Bl(268),Uf()}function tu(){sc.startNonterminal("TransformSpec",$l),Ml(31),Bl(247),Pl(),Ei(),Bl(28),Ml(53),Bl(268),Pl(),Rf(),sc.endNonterminal("TransformSpec",$l)}function nu(){_l(31),Bl(247),Si(),Bl(28),_l(53),Bl(268),Uf()}function ru(){sc.startNonterminal("FTSelection",$l),uu();for(;;){Bl(213);switch(Jl){case 82:jl(160);break;default:Xl=Jl}if(Xl!=116&&Xl!=118&&Xl!=128&&Xl!=206&&Xl!=227&&Xl!=275&&Xl!=65106&&Xl!=123986)break;Pl(),Mu()}sc.endNonterminal("FTSelection",$l)}function iu(){au();for(;;){Bl(213);switch(Jl){case 82:jl(160);break;default:Xl=Jl}if(Xl!=116&&Xl!=118&&Xl!=128&&Xl!=206&&Xl!=227&&Xl!=275&&Xl!=65106&&Xl!=123986)break;_u()}}function su(){sc.startNonterminal("FTWeight",$l),Ml(270),Bl(89),Ml(281),Bl(268),Pl(),Q(),Ml(287),sc.endNonterminal("FTWeight",$l)}function ou(){_l(270),Bl(89),_l(281),Bl(268),G(),_l(287)}function uu(){sc.startNonterminal("FTOr",$l),fu();for(;;){if(Jl!=146)break;Ml(146),Bl(178),Pl(),fu()}sc.endNonterminal("FTOr",$l)}function au(){lu();for(;;){if(Jl!=146)break;_l(146),Bl(178),lu()}}function fu(){sc.startNonterminal("FTAnd",$l),cu();for(;;){if(Jl!=144)break;Ml(144),Bl(178),Pl(),cu()}sc.endNonterminal("FTAnd",$l)}function lu(){hu();for(;;){if(Jl!=144)break;_l(144),Bl(178),hu()}}function cu(){sc.startNonterminal("FTMildNot",$l),pu();for(;;){Bl(214);if(Jl!=196)break;Ml(196),Bl(56),Ml(156),Bl(178),Pl(),pu()}sc.endNonterminal("FTMildNot",$l)}function hu(){du();for(;;){Bl(214);if(Jl!=196)break;_l(196),Bl(56),_l(156),Bl(178),du()}}function pu(){sc.startNonterminal("FTUnaryNot",$l),Jl==145&&Ml(145),Bl(165),Pl(),vu(),sc.endNonterminal("FTUnaryNot",$l)}function du(){Jl==145&&_l(145),Bl(165),mu()}function vu(){sc.startNonterminal("FTPrimaryWithOptions",$l),gu(),Bl(215),Jl==265&&(Pl(),$u()),Jl==270&&(Pl(),su()),sc.endNonterminal("FTPrimaryWithOptions",$l)}function mu(){yu(),Bl(215),Jl==265&&Ju(),Jl==270&&ou()}function gu(){sc.startNonterminal("FTPrimary",$l);switch(Jl){case 35:Ml(35),Bl(178),Pl(),ru(),Ml(38);break;case 36:xu();break;default:bu(),Bl(217),Jl==199&&(Pl(),ku())}sc.endNonterminal("FTPrimary",$l)}function yu(){switch(Jl){case 35:_l(35),Bl(178),iu(),_l(38);break;case 36:Tu();break;default:wu(),Bl(217),Jl==199&&Lu()}}function bu(){sc.startNonterminal("FTWords",$l),Eu(),Bl(222);if(Jl==72||Jl==77||Jl==214)Pl(),Nu();sc.endNonterminal("FTWords",$l)}function wu(){Su(),Bl(222),(Jl==72||Jl==77||Jl==214)&&Cu()}function Eu(){sc.startNonterminal("FTWordsValue",$l);switch(Jl){case 11:Ml(11);break;default:Ml(281),Bl(268),Pl(),Q(),Ml(287)}sc.endNonterminal("FTWordsValue",$l)}function Su(){switch(Jl){case 11:_l(11);break;default:_l(281),Bl(268),G(),_l(287)}}function xu(){sc.startNonterminal("FTExtensionSelection",$l);for(;;){Pl(),Nr(),Bl(102);if(Jl!=36)break}Ml(281),Bl(185),Jl!=287&&(Pl(),ru()),Ml(287),sc.endNonterminal("FTExtensionSelection",$l)}function Tu(){for(;;){Cr(),Bl(102);if(Jl!=36)break}_l(281),Bl(185),Jl!=287&&iu(),_l(287)}function Nu(){sc.startNonterminal("FTAnyallOption",$l);switch(Jl){case 77:Ml(77),Bl(220),Jl==278&&Ml(278);break;case 72:Ml(72),Bl(221),Jl==279&&Ml(279);break;default:Ml(214)}sc.endNonterminal("FTAnyallOption",$l)}function Cu(){switch(Jl){case 77:_l(77),Bl(220),Jl==278&&_l(278);break;case 72:_l(72),Bl(221),Jl==279&&_l(279);break;default:_l(214)}}function ku(){sc.startNonterminal("FTTimes",$l),Ml(199),Bl(158),Pl(),Au(),Ml(252),sc.endNonterminal("FTTimes",$l)}function Lu(){_l(199),Bl(158),Ou(),_l(252)}function Au(){sc.startNonterminal("FTRange",$l);switch(Jl){case 131:Ml(131),Bl(267),Pl(),Xn();break;case 82:Ml(82),Bl(127);switch(Jl){case 176:Ml(176),Bl(267),Pl(),Xn();break;default:Ml(186),Bl(267),Pl(),Xn()}break;default:Ml(142),Bl(267),Pl(),Xn(),Ml(253),Bl(267),Pl(),Xn()}sc.endNonterminal("FTRange",$l)}function Ou(){switch(Jl){case 131:_l(131),Bl(267),Vn();break;case 82:_l(82),Bl(127);switch(Jl){case 176:_l(176),Bl(267),Vn();break;default:_l(186),Bl(267),Vn()}break;default:_l(142),Bl(267),Vn(),_l(253),Bl(267),Vn()}}function Mu(){sc.startNonterminal("FTPosFilter",$l);switch(Jl){case 206:Du();break;case 275:Hu();break;case 118:ju();break;case 116:case 227:Ru();break;default:Xu()}sc.endNonterminal("FTPosFilter",$l)}function _u(){switch(Jl){case 206:Pu();break;case 275:Bu();break;case 118:Fu();break;case 116:case 227:Uu();break;default:Vu()}}function Du(){sc.startNonterminal("FTOrder",$l),Ml(206),sc.endNonterminal("FTOrder",$l)}function Pu(){_l(206)}function Hu(){sc.startNonterminal("FTWindow",$l),Ml(275),Bl(267),Pl(),Xn(),Pl(),Iu(),sc.endNonterminal("FTWindow",$l)}function Bu(){_l(275),Bl(267),Vn(),qu()}function ju(){sc.startNonterminal("FTDistance",$l),Ml(118),Bl(158),Pl(),Au(),Pl(),Iu(),sc.endNonterminal("FTDistance",$l)}function Fu(){_l(118),Bl(158),Ou(),qu()}function Iu(){sc.startNonterminal("FTUnit",$l);switch(Jl){case 279:Ml(279);break;case 237:Ml(237);break;default:Ml(209)}sc.endNonterminal("FTUnit",$l)}function qu(){switch(Jl){case 279:_l(279);break;case 237:_l(237);break;default:_l(209)}}function Ru(){sc.startNonterminal("FTScope",$l);switch(Jl){case 227:Ml(227);break;default:Ml(116)}Bl(134),Pl(),zu(),sc.endNonterminal("FTScope",$l)}function Uu(){switch(Jl){case 227:_l(227);break;default:_l(116)}Bl(134),Wu()}function zu(){sc.startNonterminal("FTBigUnit",$l);switch(Jl){case 236:Ml(236);break;default:Ml(208)}sc.endNonterminal("FTBigUnit",$l)}function Wu(){switch(Jl){case 236:_l(236);break;default:_l(208)}}function Xu(){sc.startNonterminal("FTContent",$l);switch(Jl){case 82:Ml(82),Bl(119);switch(Jl){case 242:Ml(242);break;default:Ml(127)}break;default:Ml(128),Bl(45),Ml(101)}sc.endNonterminal("FTContent",$l)}function Vu(){switch(Jl){case 82:_l(82),Bl(119);switch(Jl){case 242:_l(242);break;default:_l(127)}break;default:_l(128),Bl(45),_l(101)}}function $u(){sc.startNonterminal("FTMatchOptions",$l);for(;;){Ml(265),Bl(204),Pl(),Ku(),Bl(215);if(Jl!=265)break}sc.endNonterminal("FTMatchOptions",$l)}function Ju(){for(;;){_l(265),Bl(204),Qu(),Bl(215);if(Jl!=265)break}}function Ku(){sc.startNonterminal("FTMatchOption",$l);switch(Jl){case 191:jl(177);break;default:Xl=Jl}switch(Xl){case 172:va();break;case 274:case 140479:ga();break;case 251:case 128703:ra();break;case 243:case 124607:ta();break;case 115:Zu();break;case 244:case 125119:fa();break;case 203:ba();break;default:Gu()}sc.endNonterminal("FTMatchOption",$l)}function Qu(){switch(Jl){case 191:jl(177);break;default:Xl=Jl}switch(Xl){case 172:ma();break;case 274:case 140479:ya();break;case 251:case 128703:ia();break;case 243:case 124607:na();break;case 115:ea();break;case 244:case 125119:la();break;case 203:wa();break;default:Yu()}}function Gu(){sc.startNonterminal("FTCaseOption",$l);switch(Jl){case 89:Ml(89),Bl(126);switch(Jl){case 160:Ml(160);break;default:Ml(235)}break;case 180:Ml(180);break;default:Ml(264)}sc.endNonterminal("FTCaseOption",$l)}function Yu(){switch(Jl){case 89:_l(89),Bl(126);switch(Jl){case 160:_l(160);break;default:_l(235)}break;case 180:_l(180);break;default:_l(264)}}function Zu(){sc.startNonterminal("FTDiacriticsOption",$l),Ml(115),Bl(126);switch(Jl){case 160:Ml(160);break;default:Ml(235)}sc.endNonterminal("FTDiacriticsOption",$l)}function ea(){_l(115),Bl(126);switch(Jl){case 160:_l(160);break;default:_l(235)}}function ta(){sc.startNonterminal("FTStemOption",$l);switch(Jl){case 243:Ml(243);break;default:Ml(191),Bl(76),Ml(243)}sc.endNonterminal("FTStemOption",$l)}function na(){switch(Jl){case 243:_l(243);break;default:_l(191),Bl(76),_l(243)}}function ra(){sc.startNonterminal("FTThesaurusOption",$l);switch(Jl){case 251:Ml(251),Bl(151);switch(Jl){case 82:Pl(),sa();break;case 110:Ml(110);break;default:Ml(35),Bl(114);switch(Jl){case 82:Pl(),sa();break;default:Ml(110)}for(;;){Bl(103);if(Jl!=42)break;Ml(42),Bl(34),Pl(),sa()}Ml(38)}break;default:Ml(191),Bl(80),Ml(251)}sc.endNonterminal("FTThesaurusOption",$l)}function ia(){switch(Jl){case 251:_l(251),Bl(151);switch(Jl){case 82:oa();break;case 110:_l(110);break;default:_l(35),Bl(114);switch(Jl){case 82:oa();break;default:_l(110)}for(;;){Bl(103);if(Jl!=42)break;_l(42),Bl(34),oa()}_l(38)}break;default:_l(191),Bl(80),_l(251)}}function sa(){sc.startNonterminal("FTThesaurusID",$l),Ml(82),Bl(15),Ml(7),Bl(218),Jl==221&&(Ml(221),Bl(17),Ml(11)),Bl(216);switch(Jl){case 82:jl(184);break;case 142:jl(164);break;default:Xl=Jl}if(Xl==131||Xl==4238||Xl==90194||Xl==95314)Pl(),ua(),Bl(61),Ml(178);sc.endNonterminal("FTThesaurusID",$l)}function oa(){_l(82),Bl(15),_l(7),Bl(218),Jl==221&&(_l(221),Bl(17),_l(11)),Bl(216);switch(Jl){case 82:jl(184);break;case 142:jl(164);break;default:Xl=Jl}if(Xl==131||Xl==4238||Xl==90194||Xl==95314)aa(),Bl(61),_l(178)}function ua(){sc.startNonterminal("FTLiteralRange",$l);switch(Jl){case 131:Ml(131),Bl(16),Ml(8);break;case 82:Ml(82),Bl(127);switch(Jl){case 176:Ml(176),Bl(16),Ml(8);break;default:Ml(186),Bl(16),Ml(8)}break;default:Ml(142),Bl(16),Ml(8),Bl(81),Ml(253),Bl(16),Ml(8)}sc.endNonterminal("FTLiteralRange",$l)}function aa(){switch(Jl){case 131:_l(131),Bl(16),_l(8);break;case 82:_l(82),Bl(127);switch(Jl){case 176:_l(176),Bl(16),_l(8);break;default:_l(186),Bl(16),_l(8)}break;default:_l(142),Bl(16),_l(8),Bl(81),_l(253),Bl(16),_l(8)}}function fa(){sc.startNonterminal("FTStopWordOption",$l);switch(Jl){case 244:Ml(244),Bl(88),Ml(279),Bl(151);switch(Jl){case 110:Ml(110);for(;;){Bl(219);if(Jl!=132&&Jl!=260)break;Pl(),pa()}break;default:Pl(),ca();for(;;){Bl(219);if(Jl!=132&&Jl!=260)break;Pl(),pa()}}break;default:Ml(191),Bl(77),Ml(244),Bl(88),Ml(279)}sc.endNonterminal("FTStopWordOption",$l)}function la(){switch(Jl){case 244:_l(244),Bl(88),_l(279),Bl(151);switch(Jl){case 110:_l(110);for(;;){Bl(219);if(Jl!=132&&Jl!=260)break;da()}break;default:ha();for(;;){Bl(219);if(Jl!=132&&Jl!=260)break;da()}}break;default:_l(191),Bl(77),_l(244),Bl(88),_l(279)}}function ca(){sc.startNonterminal("FTStopWords",$l);switch(Jl){case 82:Ml(82),Bl(15),Ml(7);break;default:Ml(35),Bl(17),Ml(11);for(;;){Bl(103);if(Jl!=42)break;Ml(42),Bl(17),Ml(11)}Ml(38)}sc.endNonterminal("FTStopWords",$l)}function ha(){switch(Jl){case 82:_l(82),Bl(15),_l(7);break;default:_l(35),Bl(17),_l(11);for(;;){Bl(103);if(Jl!=42)break;_l(42),Bl(17),_l(11)}_l(38)}}function pa(){sc.startNonterminal("FTStopWordsInclExcl",$l);switch(Jl){case 260:Ml(260);break;default:Ml(132)}Bl(101),Pl(),ca(),sc.endNonterminal("FTStopWordsInclExcl",$l)}function da(){switch(Jl){case 260:_l(260);break;default:_l(132)}Bl(101),ha()}function va(){sc.startNonterminal("FTLanguageOption",$l),Ml(172),Bl(17),Ml(11),sc.endNonterminal("FTLanguageOption",$l)}function ma(){_l(172),Bl(17),_l(11)}function ga(){sc.startNonterminal("FTWildCardOption",$l);switch(Jl){case 274:Ml(274);break;default:Ml(191),Bl(86),Ml(274)}sc.endNonterminal("FTWildCardOption",$l)}function ya(){switch(Jl){case 274:_l(274);break;default:_l(191),Bl(86),_l(274)}}function ba(){sc.startNonterminal("FTExtensionOption",$l),Ml(203),Bl(247),Pl(),Wa(),Bl(17),Ml(11),sc.endNonterminal("FTExtensionOption",$l)}function wa(){_l(203),Bl(247),Xa(),Bl(17),_l(11)}function Ea(){sc.startNonterminal("FTIgnoreOption",$l),Ml(277),Bl(45),Ml(101),Bl(267),Pl(),Kn(),sc.endNonterminal("FTIgnoreOption",$l)}function Sa(){_l(277),Bl(45),_l(101),Bl(267),Qn()}function xa(){sc.startNonterminal("CollectionDecl",$l),Ml(96),Bl(247),Pl(),Wa(),Bl(109),Jl==80&&(Pl(),Ta()),sc.endNonterminal("CollectionDecl",$l)}function Ta(){sc.startNonterminal("CollectionTypeDecl",$l),Ml(80),Bl(198),Pl(),zs(),Bl(172),Jl!=54&&(Pl(),ks()),sc.endNonterminal("CollectionTypeDecl",$l)}function Na(){sc.startNonterminal("IndexName",$l),Wa(),sc.endNonterminal("IndexName",$l)}function Ca(){sc.startNonterminal("IndexDomainExpr",$l),kr(),sc.endNonterminal("IndexDomainExpr",$l)}function ka(){sc.startNonterminal("IndexKeySpec",$l),La(),Jl==80&&(Pl(),Aa()),Bl(155),Jl==95&&(Pl(),Ma()),sc.endNonterminal("IndexKeySpec",$l)}function La(){sc.startNonterminal("IndexKeyExpr",$l),kr(),sc.endNonterminal("IndexKeyExpr",$l)}function Aa(){sc.startNonterminal("IndexKeyTypeDecl",$l),Ml(80),Bl(247),Pl(),Oa(),Bl(190);if(Jl==40||Jl==41||Jl==65)Pl(),ks();sc.endNonterminal("IndexKeyTypeDecl",$l)}function Oa(){sc.startNonterminal("AtomicType",$l),Wa(),sc.endNonterminal("AtomicType",$l)}function Ma(){sc.startNonterminal("IndexKeyCollation",$l),Ml(95),Bl(15),Ml(7),sc.endNonterminal("IndexKeyCollation",$l)}function _a(){sc.startNonterminal("IndexDecl",$l),Ml(157),Bl(247),Pl(),Na(),Bl(68),Ml(201),Bl(66),Ml(195),Bl(264),Pl(),Ca(),Ml(88),Bl(264),Pl(),ka();for(;;){Bl(105);if(Jl!=42)break;Ml(42),Bl(264),Pl(),ka()}sc.endNonterminal("IndexDecl",$l)}function Da(){sc.startNonterminal("ICDecl",$l),Ml(163),Bl(43),Ml(98),Bl(247),Pl(),Wa(),Bl(122);switch(Jl){case 201:Pl(),Pa();break;default:Pl(),Fa()}sc.endNonterminal("ICDecl",$l)}function Pa(){sc.startNonterminal("ICCollection",$l),Ml(201),Bl(42),Ml(96),Bl(247),Pl(),Wa(),Bl(148);switch(Jl){case 31:Pl(),Ha();break;case 194:Pl(),Ba();break;default:Pl(),ja()}sc.endNonterminal("ICCollection",$l)}function Ha(){sc.startNonterminal("ICCollSequence",$l),bi(),Bl(40),Ml(93),Bl(268),Pl(),Rf(),sc.endNonterminal("ICCollSequence",$l)}function Ba(){sc.startNonterminal("ICCollSequenceUnique",$l),Ml(194),Bl(21),Pl(),bi(),Bl(40),Ml(93),Bl(82),Ml(261),Bl(60),Ml(171),Bl(264),Pl(),kr(),sc.endNonterminal("ICCollSequenceUnique",$l)}function ja(){sc.startNonterminal("ICCollNode",$l),Ml(140),Bl(65),Ml(194),Bl(21),Pl(),bi(),Bl(40),Ml(93),Bl(268),Pl(),Rf(),sc.endNonterminal("ICCollNode",$l)}function Fa(){sc.startNonterminal("ICForeignKey",$l),Ml(141),Bl(60),Ml(171),Bl(54),Pl(),Ia(),Pl(),qa(),sc.endNonterminal("ICForeignKey",$l)}function Ia(){sc.startNonterminal("ICForeignKeySource",$l),Ml(142),Bl(42),Pl(),Ra(),sc.endNonterminal("ICForeignKeySource",$l)}function qa(){sc.startNonterminal("ICForeignKeyTarget",$l),Ml(253),Bl(42),Pl(),Ra(),sc.endNonterminal("ICForeignKeyTarget",$l)}function Ra(){sc.startNonterminal("ICForeignKeyValues",$l),Ml(96),Bl(247),Pl(),Wa(),Bl(65),Ml(194),Bl(21),Pl(),bi(),Bl(60),Ml(171),Bl(264),Pl(),kr(),sc.endNonterminal("ICForeignKeyValues",$l)}function Ua(){_l(37);for(;;){Fl(91);if(Jl==51)break;switch(Jl){case 24:_l(24);break;default:Ua()}}_l(51)}function za(){switch(Jl){case 22:_l(22);break;default:Ua()}}function Wa(){sc.startNonterminal("EQName",$l),Fl(242);switch(Jl){case 83:Ml(83);break;case 97:Ml(97);break;case 121:Ml(121);break;case 122:Ml(122);break;case 125:Ml(125);break;case 147:Ml(147);break;case 154:Ml(154);break;case 167:Ml(167);break;case 188:Ml(188);break;case 194:Ml(194);break;case 220:Ml(220);break;case 230:Ml(230);break;case 231:Ml(231);break;case 248:Ml(248);break;case 249:Ml(249);break;case 259:Ml(259);break;case 79:Ml(79);break;case 169:Ml(169);break;case 247:Ml(247);break;default:Va()}sc.endNonterminal("EQName",$l)}function Xa(){Fl(242);switch(Jl){case 83:_l(83);break;case 97:_l(97);break;case 121:_l(121);break;case 122:_l(122);break;case 125:_l(125);break;case 147:_l(147);break;case 154:_l(154);break;case 167:_l(167);break;case 188:_l(188);break;case 194:_l(194);break;case 220:_l(220);break;case 230:_l(230);break;case 231:_l(231);break;case 248:_l(248);break;case 249:_l(249);break;case 259:_l(259);break;case 79:_l(79);break;case 169:_l(169);break;case 247:_l(247);break;default:$a()}}function Va(){sc.startNonterminal("FunctionName",$l);switch(Jl){case 6:Ml(6);break;case 71:Ml(71);break;case 74:Ml(74);break;case 75:Ml(75);break;case 76:Ml(76);break;case 80:Ml(80);break;case 81:Ml(81);break;case 85:Ml(85);break;case 89:Ml(89);break;case 90:Ml(90);break;case 91:Ml(91);break;case 94:Ml(94);break;case 95:Ml(95);break;case 104:Ml(104);break;case 106:Ml(106);break;case 109:Ml(109);break;case 110:Ml(110);break;case 111:Ml(111);break;case 112:Ml(112);break;case 113:Ml(113);break;case 114:Ml(114);break;case 119:Ml(119);break;case 120:Ml(120);break;case 123:Ml(123);break;case 124:Ml(124);break;case 127:Ml(127);break;case 129:Ml(129);break;case 130:Ml(130);break;case 132:Ml(132);break;case 136:Ml(136);break;case 137:Ml(137);break;case 138:Ml(138);break;case 139:Ml(139);break;case 148:Ml(148);break;case 150:Ml(150);break;case 152:Ml(152);break;case 153:Ml(153);break;case 155:Ml(155);break;case 161:Ml(161);break;case 162:Ml(162);break;case 164:Ml(164);break;case 165:Ml(165);break;case 166:Ml(166);break;case 173:Ml(173);break;case 175:Ml(175);break;case 177:Ml(177);break;case 181:Ml(181);break;case 183:Ml(183);break;case 184:Ml(184);break;case 185:Ml(185);break;case 187:Ml(187);break;case 189:Ml(189);break;case 202:Ml(202);break;case 204:Ml(204);break;case 205:Ml(205);break;case 206:Ml(206);break;case 210:Ml(210);break;case 216:Ml(216);break;case 217:Ml(217);break;case 222:Ml(222);break;case 223:Ml(223);break;case 224:Ml(224);break;case 228:Ml(228);break;case 234:Ml(234);break;case 240:Ml(240);break;case 241:Ml(241);break;case 242:Ml(242);break;case 253:Ml(253);break;case 254:Ml(254);break;case 256:Ml(256);break;case 260:Ml(260);break;case 262:Ml(262);break;case 266:Ml(266);break;case 272:Ml(272);break;case 276:Ml(276);break;case 170:Ml(170);break;case 73:Ml(73);break;case 82:Ml(82);break;case 84:Ml(84);break;case 86:Ml(86);break;case 87:Ml(87);break;case 92:Ml(92);break;case 99:Ml(99);break;case 102:Ml(102);break;case 103:Ml(103);break;case 105:Ml(105);break;case 107:Ml(107);break;case 126:Ml(126);break;case 133:Ml(133);break;case 134:Ml(134);break;case 143:Ml(143);break;case 156:Ml(156);break;case 157:Ml(157);break;case 163:Ml(163);break;case 174:Ml(174);break;case 195:Ml(195);break;case 203:Ml(203);break;case 207:Ml(207);break;case 226:Ml(226);break;case 229:Ml(229);break;case 232:Ml(232);break;case 239:Ml(239);break;case 245:Ml(245);break;case 257:Ml(257);break;case 258:Ml(258);break;case 263:Ml(263);break;case 267:Ml(267);break;case 268:Ml(268);break;case 269:Ml(269);break;case 273:Ml(273);break;case 98:Ml(98);break;case 179:Ml(179);break;case 225:Ml(225);break;case 78:Ml(78);break;case 135:Ml(135);break;case 142:Ml(142);break;case 197:Ml(197);break;case 168:Ml(168);break;case 198:Ml(198);break;case 233:Ml(233);break;default:Ml(255)}sc.endNonterminal("FunctionName",$l)}function $a(){switch(Jl){case 6:_l(6);break;case 71:_l(71);break;case 74:_l(74);break;case 75:_l(75);break;case 76:_l(76);break;case 80:_l(80);break;case 81:_l(81);break;case 85:_l(85);break;case 89:_l(89);break;case 90:_l(90);break;case 91:_l(91);break;case 94:_l(94);break;case 95:_l(95);break;case 104:_l(104);break;case 106:_l(106);break;case 109:_l(109);break;case 110:_l(110);break;case 111:_l(111);break;case 112:_l(112);break;case 113:_l(113);break;case 114:_l(114);break;case 119:_l(119);break;case 120:_l(120);break;case 123:_l(123);break;case 124:_l(124);break;case 127:_l(127);break;case 129:_l(129);break;case 130:_l(130);break;case 132:_l(132);break;case 136:_l(136);break;case 137:_l(137);break;case 138:_l(138);break;case 139:_l(139);break;case 148:_l(148);break;case 150:_l(150);break;case 152:_l(152);break;case 153:_l(153);break;case 155:_l(155);break;case 161:_l(161);break;case 162:_l(162);break;case 164:_l(164);break;case 165:_l(165);break;case 166:_l(166);break;case 173:_l(173);break;case 175:_l(175);break;case 177:_l(177);break;case 181:_l(181);break;case 183:_l(183);break;case 184:_l(184);break;case 185:_l(185);break;case 187:_l(187);break;case 189:_l(189);break;case 202:_l(202);break;case 204:_l(204);break;case 205:_l(205);break;case 206:_l(206);break;case 210:_l(210);break;case 216:_l(216);break;case 217:_l(217);break;case 222:_l(222);break;case 223:_l(223);break;case 224:_l(224);break;case 228:_l(228);break;case 234:_l(234);break;case 240:_l(240);break;case 241:_l(241);break;case 242:_l(242);break;case 253:_l(253);break;case 254:_l(254);break;case 256:_l(256);break;case 260:_l(260);break;case 262:_l(262);break;case 266:_l(266);break;case 272:_l(272);break;case 276:_l(276);break;case 170:_l(170);break;case 73:_l(73);break;case 82:_l(82);break;case 84:_l(84);break;case 86:_l(86);break;case 87:_l(87);break;case 92:_l(92);break;case 99:_l(99);break;case 102:_l(102);break;case 103:_l(103);break;case 105:_l(105);break;case 107:_l(107);break;case 126:_l(126);break;case 133:_l(133);break;case 134:_l(134);break;case 143:_l(143);break;case 156:_l(156);break;case 157:_l(157);break;case 163:_l(163);break;case 174:_l(174);break;case 195:_l(195);break;case 203:_l(203);break;case 207:_l(207);break;case 226:_l(226);break;case 229:_l(229);break;case 232:_l(232);break;case 239:_l(239);break;case 245:_l(245);break;case 257:_l(257);break;case 258:_l(258);break;case 263:_l(263);break;case 267:_l(267);break;case 268:_l(268);break;case 269:_l(269);break;case 273:_l(273);break;case 98:_l(98);break;case 179:_l(179);break;case 225:_l(225);break;case 78:_l(78);break;case 135:_l(135);break;case 142:_l(142);break;case 197:_l(197);break;case 168:_l(168);break;case 198:_l(198);break;case 233:_l(233);break;default:_l(255)}}function Ja(){sc.startNonterminal("NCName",$l);switch(Jl){case 19:Ml(19);break;case 71:Ml(71);break;case 76:Ml(76);break;case 80:Ml(80);break;case 81:Ml(81);break;case 85:Ml(85);break;case 89:Ml(89);break;case 90:Ml(90);break;case 91:Ml(91);break;case 95:Ml(95);break;case 106:Ml(106);break;case 110:Ml(110);break;case 114:Ml(114);break;case 119:Ml(119);break;case 123:Ml(123);break;case 124:Ml(124);break;case 127:Ml(127);break;case 129:Ml(129);break;case 132:Ml(132);break;case 139:Ml(139);break;case 148:Ml(148);break;case 150:Ml(150);break;case 152:Ml(152);break;case 153:Ml(153);break;case 162:Ml(162);break;case 164:Ml(164);break;case 165:Ml(165);break;case 166:Ml(166);break;case 175:Ml(175);break;case 177:Ml(177);break;case 181:Ml(181);break;case 183:Ml(183);break;case 184:Ml(184);break;case 189:Ml(189);break;case 202:Ml(202);break;case 204:Ml(204);break;case 205:Ml(205);break;case 224:Ml(224);break;case 228:Ml(228);break;case 241:Ml(241);break;case 242:Ml(242);break;case 253:Ml(253);break;case 254:Ml(254);break;case 260:Ml(260);break;case 272:Ml(272);break;case 276:Ml(276);break;case 74:Ml(74);break;case 75:Ml(75);break;case 83:Ml(83);break;case 94:Ml(94);break;case 97:Ml(97);break;case 104:Ml(104);break;case 109:Ml(109);break;case 111:Ml(111);break;case 112:Ml(112);break;case 113:Ml(113);break;case 120:Ml(120);break;case 121:Ml(121);break;case 122:Ml(122);break;case 125:Ml(125);break;case 130:Ml(130);break;case 136:Ml(136);break;case 137:Ml(137);break;case 138:Ml(138);break;case 147:Ml(147);break;case 154:Ml(154);break;case 155:Ml(155);break;case 161:Ml(161);break;case 167:Ml(167);break;case 173:Ml(173);break;case 185:Ml(185);break;case 187:Ml(187);break;case 188:Ml(188);break;case 194:Ml(194);break;case 206:Ml(206);break;case 210:Ml(210);break;case 216:Ml(216);break;case 217:Ml(217);break;case 220:Ml(220);break;case 222:Ml(222);break;case 223:Ml(223);break;case 230:Ml(230);break;case 231:Ml(231);break;case 234:Ml(234);break;case 240:Ml(240);break;case 248:Ml(248);break;case 249:Ml(249);break;case 256:Ml(256);break;case 259:Ml(259);break;case 262:Ml(262);break;case 266:Ml(266);break;case 268:Ml(268);break;case 170:Ml(170);break;case 73:Ml(73);break;case 82:Ml(82);break;case 84:Ml(84);break;case 86:Ml(86);break;case 87:Ml(87);break;case 92:Ml(92);break;case 99:Ml(99);break;case 102:Ml(102);break;case 103:Ml(103);break;case 105:Ml(105);break;case 107:Ml(107);break;case 126:Ml(126);break;case 133:Ml(133);break;case 134:Ml(134);break;case 143:Ml(143);break;case 156:Ml(156);break;case 157:Ml(157);break;case 163:Ml(163);break;case 174:Ml(174);break;case 195:Ml(195);break;case 203:Ml(203);break;case 207:Ml(207);break;case 226:Ml(226);break;case 229:Ml(229);break;case 232:Ml(232);break;case 239:Ml(239);break;case 245:Ml(245);break;case 257:Ml(257);break;case 258:Ml(258);break;case 263:Ml(263);break;case 267:Ml(267);break;case 269:Ml(269);break;case 273:Ml(273);break;case 98:Ml(98);break;case 179:Ml(179);break;case 225:Ml(225);break;case 78:Ml(78);break;case 135:Ml(135);break;case 142:Ml(142);break;case 197:Ml(197);break;case 168:Ml(168);break;case 198:Ml(198);break;case 233:Ml(233);break;default:Ml(255)}sc.endNonterminal("NCName",$l)}function Ka(){switch(Jl){case 19:_l(19);break;case 71:_l(71);break;case 76:_l(76);break;case 80:_l(80);break;case 81:_l(81);break;case 85:_l(85);break;case 89:_l(89);break;case 90:_l(90);break;case 91:_l(91);break;case 95:_l(95);break;case 106:_l(106);break;case 110:_l(110);break;case 114:_l(114);break;case 119:_l(119);break;case 123:_l(123);break;case 124:_l(124);break;case 127:_l(127);break;case 129:_l(129);break;case 132:_l(132);break;case 139:_l(139);break;case 148:_l(148);break;case 150:_l(150);break;case 152:_l(152);break;case 153:_l(153);break;case 162:_l(162);break;case 164:_l(164);break;case 165:_l(165);break;case 166:_l(166);break;case 175:_l(175);break;case 177:_l(177);break;case 181:_l(181);break;case 183:_l(183);break;case 184:_l(184);break;case 189:_l(189);break;case 202:_l(202);break;case 204:_l(204);break;case 205:_l(205);break;case 224:_l(224);break;case 228:_l(228);break;case 241:_l(241);break;case 242:_l(242);break;case 253:_l(253);break;case 254:_l(254);break;case 260:_l(260);break;case 272:_l(272);break;case 276:_l(276);break;case 74:_l(74);break;case 75:_l(75);break;case 83:_l(83);break;case 94:_l(94);break;case 97:_l(97);break;case 104:_l(104);break;case 109:_l(109);break;case 111:_l(111);break;case 112:_l(112);break;case 113:_l(113);break;case 120:_l(120);break;case 121:_l(121);break;case 122:_l(122);break;case 125:_l(125);break;case 130:_l(130);break;case 136:_l(136);break;case 137:_l(137);break;case 138:_l(138);break;case 147:_l(147);break;case 154:_l(154);break;case 155:_l(155);break;case 161:_l(161);break;case 167:_l(167);break;case 173:_l(173);break;case 185:_l(185);break;case 187:_l(187);break;case 188:_l(188);break;case 194:_l(194);break;case 206:_l(206);break;case 210:_l(210);break;case 216:_l(216);break;case 217:_l(217);break;case 220:_l(220);break;case 222:_l(222);break;case 223:_l(223);break;case 230:_l(230);break;case 231:_l(231);break;case 234:_l(234);break;case 240:_l(240);break;case 248:_l(248);break;case 249:_l(249);break;case 256:_l(256);break;case 259:_l(259);break;case 262:_l(262);break;case 266:_l(266);break;case 268:_l(268);break;case 170:_l(170);break;case 73:_l(73);break;case 82:_l(82);break;case 84:_l(84);break;case 86:_l(86);break;case 87:_l(87);break;case 92:_l(92);break;case 99:_l(99);break;case 102:_l(102);break;case 103:_l(103);break;case 105:_l(105);break;case 107:_l(107);break;case 126:_l(126);break;case 133:_l(133);break;case 134:_l(134);break;case 143:_l(143);break;case 156:_l(156);break;case 157:_l(157);break;case 163:_l(163);break;case 174:_l(174);break;case 195:_l(195);break;case 203:_l(203);break;case 207:_l(207);break;case 226:_l(226);break;case 229:_l(229);break;case 232:_l(232);break;case 239:_l(239);break;case 245:_l(245);break;case 257:_l(257);break;case 258:_l(258);break;case 263:_l(263);break;case 267:_l(267);break;case 269:_l(269);break;case 273:_l(273);break;case 98:_l(98);break;case 179:_l(179);break;case 225:_l(225);break;case 78:_l(78);break;case 135:_l(135);break;case 142:_l(142);break;case 197:_l(197);break;case 168:_l(168);break;case 198:_l(198);break;case 233:_l(233);break;default:_l(255)}}function Qa(){sc.startNonterminal("MainModule",$l),f(),Pl(),Ga(),sc.endNonterminal("MainModule",$l)}function Ga(){sc.startNonterminal("Program",$l),nf(),sc.endNonterminal("Program",$l)}function Ya(){sc.startNonterminal("Statements",$l);for(;;){Bl(285);switch(Jl){case 35:jl(271);break;case 36:Il(244);break;case 47:jl(287);break;case 48:jl(261);break;case 55:Il(4);break;case 56:Il(1);break;case 60:Il(3);break;case 69:jl(274);break;case 78:jl(270);break;case 133:jl(145);break;case 161:jl(277);break;case 177:jl(167);break;case 187:jl(248);break;case 196:jl(268);break;case 220:jl(246);break;case 223:jl(171);break;case 266:jl(189);break;case 281:jl(284);break;case 283:jl(275);break;case 31:case 33:jl(247);break;case 41:case 43:jl(267);break;case 83:case 122:jl(254);break;case 87:case 103:jl(143);break;case 97:case 249:jl(96);break;case 111:case 222:jl(262);break;case 139:case 142:jl(180);break;case 135:case 197:case 255:jl(212);break;case 104:case 130:case 240:case 268:jl(141);break;case 120:case 206:case 256:case 262:jl(146);break;case 8:case 9:case 10:case 11:case 32:jl(211);break;case 79:case 121:case 125:case 167:case 169:case 188:case 194:case 230:case 231:case 247:jl(20);break;case 6:case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 134:case 136:case 137:case 138:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 269:case 272:case 273:case 276:jl(94);break;default:Xl=Jl}if(Xl!=25&&Xl!=54&&Xl!=287&&Xl!=12808&&Xl!=12809&&Xl!=12810&&Xl!=12811&&Xl!=12832&&Xl!=12847&&Xl!=12935&&Xl!=12997&&Xl!=13055&&Xl!=16140&&Xl!=21512&&Xl!=21513&&Xl!=21514&&Xl!=21515&&Xl!=21536&&Xl!=21551&&Xl!=21639&&Xl!=21701&&Xl!=21759&&Xl!=27656&&Xl!=27657&&Xl!=27658&&Xl!=27659&&Xl!=27680&&Xl!=27695&&Xl!=27783&&Xl!=27845&&Xl!=27903&&Xl!=91735&&Xl!=91751&&Xl!=115333&&Xl!=146952&&Xl!=146953&&Xl!=146954&&Xl!=146955&&Xl!=146976&&Xl!=146991&&Xl!=147079&&Xl!=147141&&Xl!=147199){Xl=Ul(8,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{of(),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(8,$l,Xl)}}if(Xl!=-1&&Xl!=54&&Xl!=16140&&Xl!=27656&&Xl!=27657&&Xl!=27658&&Xl!=27659&&Xl!=27680&&Xl!=27695&&Xl!=27783&&Xl!=27845&&Xl!=27903&&Xl!=91735&&Xl!=91751&&Xl!=115333)break;Pl(),sf()}sc.endNonterminal("Statements",$l)}function Za(){for(;;){Bl(285);switch(Jl){case 35:jl(271);break;case 36:Il(244);break;case 47:jl(287);break;case 48:jl(261);break;case 55:Il(4);break;case 56:Il(1);break;case 60:Il(3);break;case 69:jl(274);break;case 78:jl(270);break;case 133:jl(145);break;case 161:jl(277);break;case 177:jl(167);break;case 187:jl(248);break;case 196:jl(268);break;case 220:jl(246);break;case 223:jl(171);break;case 266:jl(189);break;case 281:jl(284);break;case 283:jl(275);break;case 31:case 33:jl(247);break;case 41:case 43:jl(267);break;case 83:case 122:jl(254);break;case 87:case 103:jl(143);break;case 97:case 249:jl(96);break;case 111:case 222:jl(262);break;case 139:case 142:jl(180);break;case 135:case 197:case 255:jl(212);break;case 104:case 130:case 240:case 268:jl(141);break;case 120:case 206:case 256:case 262:jl(146);break;case 8:case 9:case 10:case 11:case 32:jl(211);break;case 79:case 121:case 125:case 167:case 169:case 188:case 194:case 230:case 231:case 247:jl(20);break;case 6:case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 134:case 136:case 137:case 138:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 269:case 272:case 273:case 276:jl(94);break;default:Xl=Jl}if(Xl!=25&&Xl!=54&&Xl!=287&&Xl!=12808&&Xl!=12809&&Xl!=12810&&Xl!=12811&&Xl!=12832&&Xl!=12847&&Xl!=12935&&Xl!=12997&&Xl!=13055&&Xl!=16140&&Xl!=21512&&Xl!=21513&&Xl!=21514&&Xl!=21515&&Xl!=21536&&Xl!=21551&&Xl!=21639&&Xl!=21701&&Xl!=21759&&Xl!=27656&&Xl!=27657&&Xl!=27658&&Xl!=27659&&Xl!=27680&&Xl!=27695&&Xl!=27783&&Xl!=27845&&Xl!=27903&&Xl!=91735&&Xl!=91751&&Xl!=115333&&Xl!=146952&&Xl!=146953&&Xl!=146954&&Xl!=146955&&Xl!=146976&&Xl!=146991&&Xl!=147079&&Xl!=147141&&Xl!=147199){Xl=Ul(8,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{of(),Rl(8,t,-1);continue}catch(a){Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(8,t,-2);break}}}if(Xl!=-1&&Xl!=54&&Xl!=16140&&Xl!=27656&&Xl!=27657&&Xl!=27658&&Xl!=27659&&Xl!=27680&&Xl!=27695&&Xl!=27783&&Xl!=27845&&Xl!=27903&&Xl!=91735&&Xl!=91751&&Xl!=115333)break;of()}}function ef(){sc.startNonterminal("StatementsAndExpr",$l),Ya(),Pl(),Q(),sc.endNonterminal("StatementsAndExpr",$l)}function tf(){Za(),G()}function nf(){sc.startNonterminal("StatementsAndOptionalExpr",$l),Ya(),Jl!=25&&Jl!=287&&(Pl(),Q()),sc.endNonterminal("StatementsAndOptionalExpr",$l)}function rf(){Za(),Jl!=25&&Jl!=287&&G()}function sf(){sc.startNonterminal("Statement",$l);switch(Jl){case 133:jl(145);break;case 177:jl(167);break;case 256:jl(146);break;case 268:jl(141);break;case 281:jl(284);break;case 31:case 33:jl(247);break;case 87:case 103:jl(143);break;case 139:case 142:jl(180);break;case 154:case 248:case 259:case 273:jl(94);break;default:Xl=Jl}if(Xl!=6&&Xl!=8&&Xl!=9&&Xl!=10&&Xl!=11&&Xl!=32&&Xl!=35&&Xl!=36&&Xl!=41&&Xl!=43&&Xl!=47&&Xl!=48&&Xl!=54&&Xl!=55&&Xl!=56&&Xl!=60&&Xl!=69&&Xl!=71&&Xl!=73&&Xl!=74&&Xl!=75&&Xl!=76&&Xl!=78&&Xl!=79&&Xl!=80&&Xl!=81&&Xl!=82&&Xl!=83&&Xl!=84&&Xl!=85&&Xl!=86&&Xl!=89&&Xl!=90&&Xl!=91&&Xl!=92&&Xl!=94&&Xl!=95&&Xl!=97&&Xl!=98&&Xl!=99&&Xl!=102&&Xl!=104&&Xl!=105&&Xl!=106&&Xl!=107&&Xl!=109&&Xl!=110&&Xl!=111&&Xl!=112&&Xl!=113&&Xl!=114&&Xl!=119&&Xl!=120&&Xl!=121&&Xl!=122&&Xl!=123&&Xl!=124&&Xl!=125&&Xl!=126&&Xl!=127&&Xl!=129&&Xl!=130&&Xl!=132&&Xl!=134&&Xl!=135&&Xl!=136&&Xl!=137&&Xl!=138&&Xl!=143&&Xl!=147&&Xl!=148&&Xl!=150&&Xl!=152&&Xl!=153&&Xl!=155&&Xl!=156&&Xl!=157&&Xl!=161&&Xl!=162&&Xl!=163&&Xl!=164&&Xl!=165&&Xl!=166&&Xl!=167&&Xl!=168&&Xl!=169&&Xl!=170&&Xl!=173&&Xl!=174&&Xl!=175&&Xl!=179&&Xl!=181&&Xl!=183&&Xl!=184&&Xl!=185&&Xl!=187&&Xl!=188&&Xl!=189&&Xl!=194&&Xl!=195&&Xl!=196&&Xl!=197&&Xl!=198&&Xl!=202&&Xl!=203&&Xl!=204&&Xl!=205&&Xl!=206&&Xl!=207&&Xl!=210&&Xl!=216&&Xl!=217&&Xl!=220&&Xl!=222&&Xl!=223&&Xl!=224&&Xl!=225&&Xl!=226&&Xl!=228&&Xl!=229&&Xl!=230&&Xl!=231&&Xl!=232&&Xl!=233&&Xl!=234&&Xl!=239&&Xl!=240&&Xl!=241&&Xl!=242&&Xl!=245&&Xl!=247&&Xl!=249&&Xl!=253&&Xl!=254&&Xl!=255&&Xl!=257&&Xl!=258&&Xl!=260&&Xl!=262&&Xl!=263&&Xl!=266&&Xl!=267&&Xl!=269&&Xl!=272&&Xl!=276&&Xl!=283&&Xl!=10009&&Xl!=14935&&Xl!=14951&&Xl!=14981&&Xl!=14987&&Xl!=14990&&Xl!=15002&&Xl!=15025&&Xl!=15096&&Xl!=15104&&Xl!=15107&&Xl!=15116&&Xl!=15121&&Xl!=16011&&Xl!=16014&&Xl!=16049&&Xl!=16140&&Xl!=18007&&Xl!=18023&&Xl!=18053&&Xl!=18059&&Xl!=18062&&Xl!=18074&&Xl!=18097&&Xl!=18168&&Xl!=18176&&Xl!=18179&&Xl!=18188&&Xl!=91735&&Xl!=91751&&Xl!=115333&&Xl!=118961&&Xl!=122507&&Xl!=122510&&Xl!=131723&&Xl!=131726&&Xl!=144128&&Xl!=147225){Xl=Ul(9,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{af(),Xl=-1}catch(a){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),lf(),Xl=-2}catch(f){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),hf(),Xl=-3}catch(l){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Bf(),Xl=-12}catch(c){Xl=-13}}}}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(9,$l,Xl)}}switch(Xl){case-2:ff();break;case-3:cf();break;case 91735:pf();break;case 91751:vf();break;case 115333:gf();break;case 16011:case 16014:case 16049:case 118961:case 122507:case 122510:case 131723:case 131726:bf();break;case 18074:xf();break;case 18168:Nf();break;case 144128:Af();break;case 18179:Mf();break;case-12:case 16140:Hf();break;case-13:jf();break;case 54:If();break;default:uf()}sc.endNonterminal("Statement",$l)}function of(){switch(Jl){case 133:jl(145);break;case 177:jl(167);break;case 256:jl(146);break;case 268:jl(141);break;case 281:jl(284);break;case 31:case 33:jl(247);break;case 87:case 103:jl(143);break;case 139:case 142:jl(180);break;case 154:case 248:case 259:case 273:jl(94);break;default:Xl=Jl}if(Xl!=6&&Xl!=8&&Xl!=9&&Xl!=10&&Xl!=11&&Xl!=32&&Xl!=35&&Xl!=36&&Xl!=41&&Xl!=43&&Xl!=47&&Xl!=48&&Xl!=54&&Xl!=55&&Xl!=56&&Xl!=60&&Xl!=69&&Xl!=71&&Xl!=73&&Xl!=74&&Xl!=75&&Xl!=76&&Xl!=78&&Xl!=79&&Xl!=80&&Xl!=81&&Xl!=82&&Xl!=83&&Xl!=84&&Xl!=85&&Xl!=86&&Xl!=89&&Xl!=90&&Xl!=91&&Xl!=92&&Xl!=94&&Xl!=95&&Xl!=97&&Xl!=98&&Xl!=99&&Xl!=102&&Xl!=104&&Xl!=105&&Xl!=106&&Xl!=107&&Xl!=109&&Xl!=110&&Xl!=111&&Xl!=112&&Xl!=113&&Xl!=114&&Xl!=119&&Xl!=120&&Xl!=121&&Xl!=122&&Xl!=123&&Xl!=124&&Xl!=125&&Xl!=126&&Xl!=127&&Xl!=129&&Xl!=130&&Xl!=132&&Xl!=134&&Xl!=135&&Xl!=136&&Xl!=137&&Xl!=138&&Xl!=143&&Xl!=147&&Xl!=148&&Xl!=150&&Xl!=152&&Xl!=153&&Xl!=155&&Xl!=156&&Xl!=157&&Xl!=161&&Xl!=162&&Xl!=163&&Xl!=164&&Xl!=165&&Xl!=166&&Xl!=167&&Xl!=168&&Xl!=169&&Xl!=170&&Xl!=173&&Xl!=174&&Xl!=175&&Xl!=179&&Xl!=181&&Xl!=183&&Xl!=184&&Xl!=185&&Xl!=187&&Xl!=188&&Xl!=189&&Xl!=194&&Xl!=195&&Xl!=196&&Xl!=197&&Xl!=198&&Xl!=202&&Xl!=203&&Xl!=204&&Xl!=205&&Xl!=206&&Xl!=207&&Xl!=210&&Xl!=216&&Xl!=217&&Xl!=220&&Xl!=222&&Xl!=223&&Xl!=224&&Xl!=225&&Xl!=226&&Xl!=228&&Xl!=229&&Xl!=230&&Xl!=231&&Xl!=232&&Xl!=233&&Xl!=234&&Xl!=239&&Xl!=240&&Xl!=241&&Xl!=242&&Xl!=245&&Xl!=247&&Xl!=249&&Xl!=253&&Xl!=254&&Xl!=255&&Xl!=257&&Xl!=258&&Xl!=260&&Xl!=262&&Xl!=263&&Xl!=266&&Xl!=267&&Xl!=269&&Xl!=272&&Xl!=276&&Xl!=283&&Xl!=10009&&Xl!=14935&&Xl!=14951&&Xl!=14981&&Xl!=14987&&Xl!=14990&&Xl!=15002&&Xl!=15025&&Xl!=15096&&Xl!=15104&&Xl!=15107&&Xl!=15116&&Xl!=15121&&Xl!=16011&&Xl!=16014&&Xl!=16049&&Xl!=16140&&Xl!=18007&&Xl!=18023&&Xl!=18053&&Xl!=18059&&Xl!=18062&&Xl!=18074&&Xl!=18097&&Xl!=18168&&Xl!=18176&&Xl!=18179&&Xl!=18188&&Xl!=91735&&Xl!=91751&&Xl!=115333&&Xl!=118961&&Xl!=122507&&Xl!=122510&&Xl!=131723&&Xl!=131726&&Xl!=144128&&Xl!=147225){Xl=Ul(9,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{af(),Rl(9,t,-1),Xl=-15}catch(a){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),lf(),Rl(9,t,-2),Xl=-15}catch(f){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),hf(),Rl(9,t,-3),Xl=-15}catch(l){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Bf(),Rl(9,t,-12),Xl=-15}catch(c){Xl=-13,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(9,t,-13)}}}}}}switch(Xl){case-2:lf();break;case-3:hf();break;case 91735:df();break;case 91751:mf();break;case 115333:yf();break;case 16011:case 16014:case 16049:case 118961:case 122507:case 122510:case 131723:case 131726:wf();break;case 18074:Tf();break;case 18168:Cf();break;case 144128:Of();break;case 18179:_f();break;case-12:case 16140:Bf();break;case-13:Ff();break;case 54:qf();break;case-15:break;default:af()}}function uf(){sc.startNonterminal("ApplyStatement",$l),zf(),Ml(54),sc.endNonterminal("ApplyStatement",$l)}function af(){Wf(),_l(54)}function ff(){sc.startNonterminal("AssignStatement",$l),Ml(31),Bl(247),Pl(),Ei(),Bl(28),Ml(53),Bl(268),Pl(),Rf(),Ml(54),sc.endNonterminal("AssignStatement",$l)}function lf(){_l(31),Bl(247),Si(),Bl(28),_l(53),Bl(268),Uf(),_l(54)}function cf(){sc.startNonterminal("BlockStatement",$l),Ml(281),Bl(272),Pl(),sf(),Bl(282),Pl(),Ya(),Ml(287),sc.endNonterminal("BlockStatement",$l)}function hf(){_l(281),Bl(272),of(),Bl(282),Za(),_l(287)}function pf(){sc.startNonterminal("BreakStatement",$l),Ml(87),Bl(62),Ml(179),Bl(29),Ml(54),sc.endNonterminal("BreakStatement",$l)}function df(){_l(87),Bl(62),_l(179),Bl(29),_l(54)}function vf(){sc.startNonterminal("ContinueStatement",$l),Ml(103),Bl(62),Ml(179),Bl(29),Ml(54),sc.endNonterminal("ContinueStatement",$l)}function mf(){_l(103),Bl(62),_l(179),Bl(29),_l(54)}function gf(){sc.startNonterminal("ExitStatement",$l),Ml(133),Bl(73),Ml(225),Bl(268),Pl(),Rf(),Ml(54),sc.endNonterminal("ExitStatement",$l)}function yf(){_l(133),Bl(73),_l(225),Bl(268),Uf(),_l(54)}function bf(){sc.startNonterminal("FLWORStatement",$l),et();for(;;){Bl(200);if(Jl==224||Jl==233)break;Pl(),nt()}Pl(),Ef(),sc.endNonterminal("FLWORStatement",$l)}function wf(){tt();for(;;){Bl(200);if(Jl==224||Jl==233)break;rt()}Sf()}function Ef(){sc.startNonterminal("ReturnStatement",$l);switch(Jl){case 224:Ml(224);break;default:Ml(233)}Bl(272),Pl(),sf(),sc.endNonterminal("ReturnStatement",$l)}function Sf(){switch(Jl){case 224:_l(224);break;default:_l(233)}Bl(272),of()}function xf(){sc.startNonterminal("IfStatement",$l),Ml(154),Bl(22),Ml(35),Bl(268),Pl(),Q(),Ml(38),Bl(79),Ml(250),Bl(272),Pl(),sf(),Bl(51),Ml(123),Bl(272),Pl(),sf(),sc.endNonterminal("IfStatement",$l)}function Tf(){_l(154),Bl(22),_l(35),Bl(268),G(),_l(38),Bl(79),_l(250),Bl(272),of(),Bl(51),_l(123),Bl(272),of()}function Nf(){sc.startNonterminal("SwitchStatement",$l),Ml(248),Bl(22),Ml(35),Bl(268),Pl(),Q(),Ml(38);for(;;){Bl(38),Pl(),kf(),Bl(115);if(Jl!=89)break}Ml(110),Bl(136);switch(Jl){case 224:Ml(224);break;default:Ml(233)}Bl(272),Pl(),sf(),sc.endNonterminal("SwitchStatement",$l)}function Cf(){_l(248),Bl(22),_l(35),Bl(268),G(),_l(38);for(;;){Bl(38),Lf(),Bl(115);if(Jl!=89)break}_l(110),Bl(136);switch(Jl){case 224:_l(224);break;default:_l(233)}Bl(272),of()}function kf(){sc.startNonterminal("SwitchCaseStatement",$l);for(;;){Ml(89),Bl(268),Pl(),cn();if(Jl!=89)break}switch(Jl){case 224:Ml(224);break;default:Ml(233)}Bl(272),Pl(),sf(),sc.endNonterminal("SwitchCaseStatement",$l)}function Lf(){for(;;){_l(89),Bl(268),hn();if(Jl!=89)break}switch(Jl){case 224:_l(224);break;default:_l(233)}Bl(272),of()}function Af(){sc.startNonterminal("TryCatchStatement",$l),Ml(256),Bl(89),Pl(),cf();for(;;){Bl(39),Ml(92),Bl(250),Pl(),An(),Pl(),cf(),Bl(285);switch(Jl){case 92:jl(257);break;default:Xl=Jl}if(Xl!=2652&&Xl!=3164&&Xl!=36444&&Xl!=37468&&Xl!=37980&&Xl!=38492&&Xl!=39004&&Xl!=40028&&Xl!=40540&&Xl!=41052&&Xl!=41564&&Xl!=42076&&Xl!=42588&&Xl!=43100&&Xl!=43612&&Xl!=44124&&Xl!=44636&&Xl!=45660&&Xl!=46172&&Xl!=46684&&Xl!=47196&&Xl!=48220&&Xl!=48732&&Xl!=49756&&Xl!=50268&&Xl!=50780&&Xl!=52316&&Xl!=52828&&Xl!=53340&&Xl!=53852&&Xl!=54364&&Xl!=54876&&Xl!=55900&&Xl!=56412&&Xl!=56924&&Xl!=57436&&Xl!=57948&&Xl!=58460&&Xl!=61020&&Xl!=61532&&Xl!=62044&&Xl!=62556&&Xl!=63068&&Xl!=63580&&Xl!=64092&&Xl!=64604&&Xl!=65116&&Xl!=66140&&Xl!=66652&&Xl!=67676&&Xl!=68188&&Xl!=68700&&Xl!=69212&&Xl!=69724&&Xl!=70236&&Xl!=70748&&Xl!=71260&&Xl!=72796&&Xl!=73308&&Xl!=75356&&Xl!=75868&&Xl!=76892&&Xl!=77916&&Xl!=78428&&Xl!=78940&&Xl!=79452&&Xl!=79964&&Xl!=80476&&Xl!=82524&&Xl!=83036&&Xl!=83548&&Xl!=84060&&Xl!=84572&&Xl!=85084&&Xl!=85596&&Xl!=86108&&Xl!=86620&&Xl!=87132&&Xl!=88668&&Xl!=89180&&Xl!=89692&&Xl!=90716&&Xl!=91740&&Xl!=92764&&Xl!=93788&&Xl!=94300&&Xl!=94812&&Xl!=95836&&Xl!=96348&&Xl!=96860&&Xl!=99420&&Xl!=99932&&Xl!=100956&&Xl!=101468&&Xl!=103516&&Xl!=104028&&Xl!=104540&&Xl!=105052&&Xl!=105564&&Xl!=106076&&Xl!=107612&&Xl!=110684&&Xl!=111196&&Xl!=112732&&Xl!=113756&&Xl!=114268&&Xl!=114780&&Xl!=115292&&Xl!=115804&&Xl!=116828&&Xl!=117340&&Xl!=117852&&Xl!=118364&&Xl!=118876&&Xl!=119388&&Xl!=119900&&Xl!=122460&&Xl!=122972&&Xl!=123484&&Xl!=123996&&Xl!=125532&&Xl!=126556&&Xl!=127068&&Xl!=127580&&Xl!=129628&&Xl!=130140&&Xl!=130652&&Xl!=131164&&Xl!=131676&&Xl!=132188&&Xl!=132700&&Xl!=133212&&Xl!=134236&&Xl!=134748&&Xl!=136284&&Xl!=136796&&Xl!=137308&&Xl!=137820&&Xl!=139356&&Xl!=139868&&Xl!=141404)break}sc.endNonterminal("TryCatchStatement",$l)}function Of(){_l(256),Bl(89),hf();for(;;){Bl(39),_l(92),Bl(250),On(),hf(),Bl(285);switch(Jl){case 92:jl(257);break;default:Xl=Jl}if(Xl!=2652&&Xl!=3164&&Xl!=36444&&Xl!=37468&&Xl!=37980&&Xl!=38492&&Xl!=39004&&Xl!=40028&&Xl!=40540&&Xl!=41052&&Xl!=41564&&Xl!=42076&&Xl!=42588&&Xl!=43100&&Xl!=43612&&Xl!=44124&&Xl!=44636&&Xl!=45660&&Xl!=46172&&Xl!=46684&&Xl!=47196&&Xl!=48220&&Xl!=48732&&Xl!=49756&&Xl!=50268&&Xl!=50780&&Xl!=52316&&Xl!=52828&&Xl!=53340&&Xl!=53852&&Xl!=54364&&Xl!=54876&&Xl!=55900&&Xl!=56412&&Xl!=56924&&Xl!=57436&&Xl!=57948&&Xl!=58460&&Xl!=61020&&Xl!=61532&&Xl!=62044&&Xl!=62556&&Xl!=63068&&Xl!=63580&&Xl!=64092&&Xl!=64604&&Xl!=65116&&Xl!=66140&&Xl!=66652&&Xl!=67676&&Xl!=68188&&Xl!=68700&&Xl!=69212&&Xl!=69724&&Xl!=70236&&Xl!=70748&&Xl!=71260&&Xl!=72796&&Xl!=73308&&Xl!=75356&&Xl!=75868&&Xl!=76892&&Xl!=77916&&Xl!=78428&&Xl!=78940&&Xl!=79452&&Xl!=79964&&Xl!=80476&&Xl!=82524&&Xl!=83036&&Xl!=83548&&Xl!=84060&&Xl!=84572&&Xl!=85084&&Xl!=85596&&Xl!=86108&&Xl!=86620&&Xl!=87132&&Xl!=88668&&Xl!=89180&&Xl!=89692&&Xl!=90716&&Xl!=91740&&Xl!=92764&&Xl!=93788&&Xl!=94300&&Xl!=94812&&Xl!=95836&&Xl!=96348&&Xl!=96860&&Xl!=99420&&Xl!=99932&&Xl!=100956&&Xl!=101468&&Xl!=103516&&Xl!=104028&&Xl!=104540&&Xl!=105052&&Xl!=105564&&Xl!=106076&&Xl!=107612&&Xl!=110684&&Xl!=111196&&Xl!=112732&&Xl!=113756&&Xl!=114268&&Xl!=114780&&Xl!=115292&&Xl!=115804&&Xl!=116828&&Xl!=117340&&Xl!=117852&&Xl!=118364&&Xl!=118876&&Xl!=119388&&Xl!=119900&&Xl!=122460&&Xl!=122972&&Xl!=123484&&Xl!=123996&&Xl!=125532&&Xl!=126556&&Xl!=127068&&Xl!=127580&&Xl!=129628&&Xl!=130140&&Xl!=130652&&Xl!=131164&&Xl!=131676&&Xl!=132188&&Xl!=132700&&Xl!=133212&&Xl!=134236&&Xl!=134748&&Xl!=136284&&Xl!=136796&&Xl!=137308&&Xl!=137820&&Xl!=139356&&Xl!=139868&&Xl!=141404)break}}function Mf(){sc.startNonterminal("TypeswitchStatement",$l),Ml(259),Bl(22),Ml(35),Bl(268),Pl(),Q(),Ml(38);for(;;){Bl(38),Pl(),Df(),Bl(115);if(Jl!=89)break}Ml(110),Bl(149),Jl==31&&(Ml(31),Bl(247),Pl(),Ei()),Bl(136);switch(Jl){case 224:Ml(224);break;default:Ml(233)}Bl(272),Pl(),sf(),sc.endNonterminal("TypeswitchStatement",$l)}function _f(){_l(259),Bl(22),_l(35),Bl(268),G(),_l(38);for(;;){Bl(38),Pf(),Bl(115);if(Jl!=89)break}_l(110),Bl(149),Jl==31&&(_l(31),Bl(247),Si()),Bl(136);switch(Jl){case 224:_l(224);break;default:_l(233)}Bl(272),of()}function Df(){sc.startNonterminal("CaseStatement",$l),Ml(89),Bl(259),Jl==31&&(Ml(31),Bl(247),Pl(),Ei(),Bl(33),Ml(80)),Bl(255),Pl(),Ns(),Bl(136);switch(Jl){case 224:Ml(224);break;default:Ml(233)}Bl(272),Pl(),sf(),sc.endNonterminal("CaseStatement",$l)}function Pf(){_l(89),Bl(259),Jl==31&&(_l(31),Bl(247),Si(),Bl(33),_l(80)),Bl(255),Cs(),Bl(136);switch(Jl){case 224:_l(224);break;default:_l(233)}Bl(272),of()}function Hf(){sc.startNonterminal("VarDeclStatement",$l);for(;;){Bl(100);if(Jl!=33)break;Pl(),H()}Ml(268),Bl(21),Ml(31),Bl(247),Pl(),Ei(),Bl(173),Jl==80&&(Pl(),xs()),Bl(154),Jl==53&&(Ml(53),Bl(268),Pl(),Rf());for(;;){if(Jl!=42)break;Ml(42),Bl(21),Ml(31),Bl(247),Pl(),Ei(),Bl(173),Jl==80&&(Pl(),xs()),Bl(154),Jl==53&&(Ml(53),Bl(268),Pl(),Rf())}Ml(54),sc.endNonterminal("VarDeclStatement",$l)}function Bf(){for(;;){Bl(100);if(Jl!=33)break;B()}_l(268),Bl(21),_l(31),Bl(247),Si(),Bl(173),Jl==80&&Ts(),Bl(154),Jl==53&&(_l(53),Bl(268),Uf());for(;;){if(Jl!=42)break;_l(42),Bl(21),_l(31),Bl(247),Si(),Bl(173),Jl==80&&Ts(),Bl(154),Jl==53&&(_l(53),Bl(268),Uf())}_l(54)}function jf(){sc.startNonterminal("WhileStatement",$l),Ml(273),Bl(22),Ml(35),Bl(268),Pl(),Q(),Ml(38),Bl(272),Pl(),sf(),sc.endNonterminal("WhileStatement",$l)}function Ff(){_l(273),Bl(22),_l(35),Bl(268),G(),_l(38),Bl(272),of()}function If(){sc.startNonterminal("VoidStatement",$l),Ml(54),sc.endNonterminal("VoidStatement",$l)}function qf(){_l(54)}function Rf(){sc.startNonterminal("ExprSingle",$l);switch(Jl){case 177:jl(167);break;case 256:jl(146);break;case 139:case 142:jl(180);break;case 154:case 248:case 259:jl(94);break;default:Xl=Jl}switch(Xl){case 16011:case 16014:case 16049:case 118961:case 122507:case 122510:case 131723:case 131726:Y();break;case 18074:bn();break;case 18168:un();break;case 144128:En();break;case 18179:pn();break;default:zf()}sc.endNonterminal("ExprSingle",$l)}function Uf(){switch(Jl){case 177:jl(167);break;case 256:jl(146);break;case 139:case 142:jl(180);break;case 154:case 248:case 259:jl(94);break;default:Xl=Jl}switch(Xl){case 16011:case 16014:case 16049:case 118961:case 122507:case 122510:case 131723:case 131726:Z();break;case 18074:wn();break;case 18168:an();break;case 144128:Sn();break;case 18179:dn();break;default:Wf()}}function zf(){sc.startNonterminal("ExprSimple",$l);switch(Jl){case 78:jl(270);break;case 161:jl(277);break;case 223:jl(171);break;case 111:case 222:jl(262);break;case 104:case 130:case 240:jl(141);break;default:Xl=Jl}if(Xl==17998||Xl==18031||Xl==18081||Xl==18142||Xl==99439||Xl==99489||Xl==99550||Xl==99951||Xl==100001||Xl==136927){Xl=Ul(10,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_n(),Xl=-2}catch(a){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),qo(),Xl=-3}catch(f){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Uo(),Xl=-4}catch(l){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Vo(),Xl=-5}catch(c){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Wo(),Xl=-6}catch(h){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Vf(),Xl=-8}catch(p){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Jf(),Xl=-9}catch(d){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Qf(),Xl=-10}catch(v){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Yf(),Xl=-11}catch(m){Xl=-12}}}}}}}}}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(10,$l,Xl)}}switch(Xl){case 16002:case 16112:sn();break;case-3:Io();break;case-4:Ro();break;case-5:Xo();break;case-6:case 99551:zo();break;case 15976:Zo();break;case-8:case 3183:case 4207:case 4719:case 5231:case 5743:case 15983:case 16495:case 17007:case 28271:case 28783:case 30831:case 35439:case 36463:case 37487:case 37999:case 38511:case 39023:case 40047:case 40559:case 41071:case 41583:case 42095:case 42607:case 43119:case 43631:case 44143:case 44655:case 45679:case 46191:case 46703:case 47215:case 48239:case 48751:case 49775:case 50287:case 50799:case 52335:case 52847:case 53359:case 53871:case 54383:case 54895:case 55919:case 56431:case 56943:case 57455:case 57967:case 58479:case 61039:case 61551:case 62063:case 62575:case 63087:case 63599:case 64111:case 64623:case 65135:case 66159:case 66671:case 67695:case 68207:case 68719:case 69231:case 69743:case 70255:case 70767:case 71279:case 72815:case 73327:case 75375:case 75887:case 76911:case 77935:case 78447:case 78959:case 79471:case 79983:case 80495:case 82543:case 83055:case 83567:case 84079:case 84591:case 85103:case 85615:case 86127:case 86639:case 87151:case 88687:case 89199:case 89711:case 90735:case 91759:case 92783:case 93807:case 94319:case 94831:case 95855:case 96367:case 96879:case 100975:case 101487:case 103535:case 104047:case 104559:case 105071:case 105583:case 106095:case 107631:case 110703:case 111215:case 112751:case 113775:case 114287:case 114799:case 115311:case 115823:case 116847:case 117359:case 117871:case 118383:case 118895:case 119407:case 119919:case 122479:case 122991:case 123503:case 124015:case 125551:case 126575:case 127087:case 127599:case 129647:case 130159:case 130671:case 131183:case 131695:case 132207:case 132719:case 133231:case 134255:case 134767:case 136303:case 136815:case 137327:case 137839:case 139375:case 139887:case 141423:case 143983:case 145007:Xf();break;case-9:case 3233:case 4257:case 4769:case 5281:case 5793:case 9889:case 16033:case 16545:case 17057:case 18593:case 21153:case 22177:case 24225:case 24737:case 28321:case 28833:case 30881:case 35489:case 36513:case 37537:case 38049:case 38561:case 39073:case 40097:case 40609:case 41121:case 41633:case 42145:case 42657:case 43169:case 43681:case 44193:case 44705:case 45729:case 46241:case 46753:case 47265:case 48289:case 48801:case 49825:case 50337:case 50849:case 52385:case 52897:case 53409:case 53921:case 54433:case 54945:case 55969:case 56481:case 56993:case 57505:case 58017:case 58529:case 61089:case 61601:case 62113:case 62625:case 63137:case 63649:case 64161:case 64673:case 65185:case 66209:case 66721:case 67745:case 68257:case 68769:case 69281:case 69793:case 70305:case 70817:case 71329:case 72865:case 73377:case 75425:case 75937:case 76961:case 77985:case 78497:case 79009:case 79521:case 80033:case 80545:case 82593:case 83105:case 83617:case 84129:case 84641:case 85153:case 85665:case 86177:case 86689:case 87201:case 88737:case 89249:case 89761:case 90785:case 91809:case 92833:case 93857:case 94369:case 94881:case 95905:case 96417:case 96929:case 100513:case 101025:case 101537:case 103585:case 104097:case 104609:case 105121:case 105633:case 106145:case 107681:case 110753:case 111265:case 112801:case 113825:case 114337:case 114849:case 115361:case 115873:case 116897:case 117409:case 117921:case 118433:case 118945:case 119457:case 119969:case 122529:case 123041:case 123553:case 124065:case 125601:case 126625:case 127137:case 127649:case 129697:case 130209:case 130721:case 131233:case 131745:case 132257:case 132769:case 133281:case 134305:case 134817:case 136353:case 136865:case 137377:case 137889:case 139425:case 139937:case 141473:case 144033:case 145057:$f();break;case-10:case 3294:case 4318:case 4830:case 5342:case 5854:case 16094:case 16606:case 17118:case 28382:case 28894:case 30942:case 35550:case 36574:case 37598:case 38110:case 38622:case 39134:case 40158:case 40670:case 41182:case 41694:case 42206:case 42718:case 43230:case 43742:case 44254:case 44766:case 45790:case 46302:case 46814:case 47326:case 48350:case 48862:case 49886:case 50398:case 50910:case 52446:case 52958:case 53470:case 53982:case 54494:case 55006:case 56030:case 56542:case 57054:case 57566:case 58078:case 58590:case 61150:case 61662:case 62174:case 62686:case 63198:case 63710:case 64222:case 64734:case 65246:case 66270:case 66782:case 67806:case 68318:case 68830:case 69342:case 69854:case 70366:case 70878:case 71390:case 72926:case 73438:case 75486:case 75998:case 77022:case 78046:case 78558:case 79070:case 79582:case 80094:case 80606:case 82654:case 83166:case 83678:case 84190:case 84702:case 85214:case 85726:case 86238:case 86750:case 87262:case 88798:case 89310:case 89822:case 90846:case 91870:case 92894:case 93918:case 94430:case 94942:case 95966:case 96478:case 96990:case 100062:case 101086:case 101598:case 103646:case 104158:case 104670:case 105182:case 105694:case 106206:case 107742:case 110814:case 111326:case 112862:case 113886:case 114398:case 114910:case 115422:case 115934:case 116958:case 117470:case 117982:case 118494:case 119006:case 119518:case 120030:case 122590:case 123102:case 123614:case 124126:case 125662:case 126686:case 127198:case 127710:case 129758:case 130270:case 130782:case 131294:case 131806:case 132318:case 132830:case 133342:case 134366:case 134878:case 136414:case 136926:case 137438:case 137950:case 139486:case 139998:case 141534:case 144094:case 145118:Kf();break;case-11:Gf();break;case-12:case 3150:case 4174:case 4686:case 5198:case 5710:case 15950:case 16462:case 16974:case 18510:case 21070:case 22094:case 24142:case 24654:case 28238:case 28750:case 30798:case 35406:case 36430:case 37454:case 37966:case 38478:case 38990:case 40014:case 40526:case 41038:case 41550:case 42062:case 42574:case 43086:case 43598:case 44110:case 44622:case 45646:case 46158:case 46670:case 47182:case 48206:case 48718:case 49742:case 50254:case 50766:case 52302:case 52814:case 53326:case 53838:case 54350:case 54862:case 55886:case 56398:case 56910:case 57422:case 57934:case 58446:case 61006:case 61518:case 62030:case 62542:case 63054:case 63566:case 64078:case 64590:case 65102:case 66126:case 66638:case 67662:case 68174:case 68686:case 69198:case 69710:case 70222:case 70734:case 71246:case 72782:case 73294:case 75342:case 75854:case 76878:case 77902:case 78414:case 78926:case 79438:case 79950:case 80462:case 82510:case 83022:case 83534:case 84046:case 84558:case 85070:case 85582:case 86094:case 86606:case 87118:case 88654:case 89166:case 89678:case 90702:case 91726:case 92750:case 93774:case 94286:case 94798:case 95822:case 96334:case 96846:case 99406:case 99918:case 100430:case 100942:case 101454:case 103502:case 104014:case 104526:case 105038:case 105550:case 106062:case 107598:case 110670:case 111182:case 112718:case 113742:case 114254:case 114766:case 115278:case 115790:case 116814:case 117326:case 117838:case 118350:case 118862:case 119374:case 119886:case 122446:case 122958:case 123470:case 123982:case 125518:case 126542:case 127054:case 127566:case 129614:case 130126:case 130638:case 131150:case 131662:case 132174:case 132686:case 133198:case 134222:case 134734:case 136270:case 136782:case 137294:case 137806:case 139342:case 139854:case 141390:case 143950:case 144974:Zf();break;default:Mn()}sc.endNonterminal("ExprSimple",$l)}function Wf(){switch(Jl){case 78:jl(270);break;case 161:jl(277);break;case 223:jl(171);break;case 111:case 222:jl(262);break;case 104:case 130:case 240:jl(141);break;default:Xl=Jl}if(Xl==17998||Xl==18031||Xl==18081||Xl==18142||Xl==99439||Xl==99489||Xl==99550||Xl==99951||Xl==100001||Xl==136927){Xl=Ul(10,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_n(),Rl(10,t,-2),Xl=-13}catch(a){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),qo(),Rl(10,t,-3),Xl=-13}catch(f){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Uo(),Rl(10,t,-4),Xl=-13}catch(l){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Vo(),Rl(10,t,-5),Xl=-13}catch(c){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Wo(),Rl(10,t,-6),Xl=-13}catch(h){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Vf(),Rl(10,t,-8),Xl=-13}catch(p){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Jf(),Rl(10,t,-9),Xl=-13}catch(d){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Qf(),Rl(10,t,-10),Xl=-13}catch(v){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Yf(),Rl(10,t,-11),Xl=-13}catch(m){Xl=-12,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(10,t,-12)}}}}}}}}}}}switch(Xl){case 16002:case 16112:on();break;case-3:qo();break;case-4:Uo();break;case-5:Vo();break;case-6:case 99551:Wo();break;case 15976:eu();break;case-8:case 3183:case 4207:case 4719:case 5231:case 5743:case 15983:case 16495:case 17007:case 28271:case 28783:case 30831:case 35439:case 36463:case 37487:case 37999:case 38511:case 39023:case 40047:case 40559:case 41071:case 41583:case 42095:case 42607:case 43119:case 43631:case 44143:case 44655:case 45679:case 46191:case 46703:case 47215:case 48239:case 48751:case 49775:case 50287:case 50799:case 52335:case 52847:case 53359:case 53871:case 54383:case 54895:case 55919:case 56431:case 56943:case 57455:case 57967:case 58479:case 61039:case 61551:case 62063:case 62575:case 63087:case 63599:case 64111:case 64623:case 65135:case 66159:case 66671:case 67695:case 68207:case 68719:case 69231:case 69743:case 70255:case 70767:case 71279:case 72815:case 73327:case 75375:case 75887:case 76911:case 77935:case 78447:case 78959:case 79471:case 79983:case 80495:case 82543:case 83055:case 83567:case 84079:case 84591:case 85103:case 85615:case 86127:case 86639:case 87151:case 88687:case 89199:case 89711:case 90735:case 91759:case 92783:case 93807:case 94319:case 94831:case 95855:case 96367:case 96879:case 100975:case 101487:case 103535:case 104047:case 104559:case 105071:case 105583:case 106095:case 107631:case 110703:case 111215:case 112751:case 113775:case 114287:case 114799:case 115311:case 115823:case 116847:case 117359:case 117871:case 118383:case 118895:case 119407:case 119919:case 122479:case 122991:case 123503:case 124015:case 125551:case 126575:case 127087:case 127599:case 129647:case 130159:case 130671:case 131183:case 131695:case 132207:case 132719:case 133231:case 134255:case 134767:case 136303:case 136815:case 137327:case 137839:case 139375:case 139887:case 141423:case 143983:case 145007:Vf();break;case-9:case 3233:case 4257:case 4769:case 5281:case 5793:case 9889:case 16033:case 16545:case 17057:case 18593:case 21153:case 22177:case 24225:case 24737:case 28321:case 28833:case 30881:case 35489:case 36513:case 37537:case 38049:case 38561:case 39073:case 40097:case 40609:case 41121:case 41633:case 42145:case 42657:case 43169:case 43681:case 44193:case 44705:case 45729:case 46241:case 46753:case 47265:case 48289:case 48801:case 49825:case 50337:case 50849:case 52385:case 52897:case 53409:case 53921:case 54433:case 54945:case 55969:case 56481:case 56993:case 57505:case 58017:case 58529:case 61089:case 61601:case 62113:case 62625:case 63137:case 63649:case 64161:case 64673:case 65185:case 66209:case 66721:case 67745:case 68257:case 68769:case 69281:case 69793:case 70305:case 70817:case 71329:case 72865:case 73377:case 75425:case 75937:case 76961:case 77985:case 78497:case 79009:case 79521:case 80033:case 80545:case 82593:case 83105:case 83617:case 84129:case 84641:case 85153:case 85665:case 86177:case 86689:case 87201:case 88737:case 89249:case 89761:case 90785:case 91809:case 92833:case 93857:case 94369:case 94881:case 95905:case 96417:case 96929:case 100513:case 101025:case 101537:case 103585:case 104097:case 104609:case 105121:case 105633:case 106145:case 107681:case 110753:case 111265:case 112801:case 113825:case 114337:case 114849:case 115361:case 115873:case 116897:case 117409:case 117921:case 118433:case 118945:case 119457:case 119969:case 122529:case 123041:case 123553:case 124065:case 125601:case 126625:case 127137:case 127649:case 129697:case 130209:case 130721:case 131233:case 131745:case 132257:case 132769:case 133281:case 134305:case 134817:case 136353:case 136865:case 137377:case 137889:case 139425:case 139937:case 141473:case 144033:case 145057:Jf();break;case-10:case 3294:case 4318:case 4830:case 5342:case 5854:case 16094:case 16606:case 17118:case 28382:case 28894:case 30942:case 35550:case 36574:case 37598:case 38110:case 38622:case 39134:case 40158:case 40670:case 41182:case 41694:case 42206:case 42718:case 43230:case 43742:case 44254:case 44766:case 45790:case 46302:case 46814:case 47326:case 48350:case 48862:case 49886:case 50398:case 50910:case 52446:case 52958:case 53470:case 53982:case 54494:case 55006:case 56030:case 56542:case 57054:case 57566:case 58078:case 58590:case 61150:case 61662:case 62174:case 62686:case 63198:case 63710:case 64222:case 64734:case 65246:case 66270:case 66782:case 67806:case 68318:case 68830:case 69342:case 69854:case 70366:case 70878:case 71390:case 72926:case 73438:case 75486:case 75998:case 77022:case 78046:case 78558:case 79070:case 79582:case 80094:case 80606:case 82654:case 83166:case 83678:case 84190:case 84702:case 85214:case 85726:case 86238:case 86750:case 87262:case 88798:case 89310:case 89822:case 90846:case 91870:case 92894:case 93918:case 94430:case 94942:case 95966:case 96478:case 96990:case 100062:case 101086:case 101598:case 103646:case 104158:case 104670:case 105182:case 105694:case 106206:case 107742:case 110814:case 111326:case 112862:case 113886:case 114398:case 114910:case 115422:case 115934:case 116958:case 117470:case 117982:case 118494:case 119006:case 119518:case 120030:case 122590:case 123102:case 123614:case 124126:case 125662:case 126686:case 127198:case 127710:case 129758:case 130270:case 130782:case 131294:case 131806:case 132318:case 132830:case 133342:case 134366:case 134878:case 136414:case 136926:case 137438:case 137950:case 139486:case 139998:case 141534:case 144094:case 145118:Qf();break;case-11:Yf();break;case-12:case 3150:case 4174:case 4686:case 5198:case 5710:case 15950:case 16462:case 16974:case 18510:case 21070:case 22094:case 24142:case 24654:case 28238:case 28750:case 30798:case 35406:case 36430:case 37454:case 37966:case 38478:case 38990:case 40014:case 40526:case 41038:case 41550:case 42062:case 42574:case 43086:case 43598:case 44110:case 44622:case 45646:case 46158:case 46670:case 47182:case 48206:case 48718:case 49742:case 50254:case 50766:case 52302:case 52814:case 53326:case 53838:case 54350:case 54862:case 55886:case 56398:case 56910:case 57422:case 57934:case 58446:case 61006:case 61518:case 62030:case 62542:case 63054:case 63566:case 64078:case 64590:case 65102:case 66126:case 66638:case 67662:case 68174:case 68686:case 69198:case 69710:case 70222:case 70734:case 71246:case 72782:case 73294:case 75342:case 75854:case 76878:case 77902:case 78414:case 78926:case 79438:case 79950:case 80462:case 82510:case 83022:case 83534:case 84046:case 84558:case 85070:case 85582:case 86094:case 86606:case 87118:case 88654:case 89166:case 89678:case 90702:case 91726:case 92750:case 93774:case 94286:case 94798:case 95822:case 96334:case 96846:case 99406:case 99918:case 100430:case 100942:case 101454:case 103502:case 104014:case 104526:case 105038:case 105550:case 106062:case 107598:case 110670:case 111182:case 112718:case 113742:case 114254:case 114766:case 115278:case 115790:case 116814:case 117326:case 117838:case 118350:case 118862:case 119374:case 119886:case 122446:case 122958:case 123470:case 123982:case 125518:case 126542:case 127054:case 127566:case 129614:case 130126:case 130638:case 131150:case 131662:case 132174:case 132686:case 133198:case 134222:case 134734:case 136270:case 136782:case 137294:case 137806:case 139342:case 139854:case 141390:case 143950:case 144974:el();break;case-13:break;default:_n()}}function Xf(){sc.startNonterminal("JSONDeleteExpr",$l),Ml(111),Bl(261);switch(Jl){case 168:jl(262);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(11,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(168),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(11,$l,Xl)}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==16040||Xl==16552||Xl==17064||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&Ml(168),Bl(261),Pl(),Gr(),sc.endNonterminal("JSONDeleteExpr",$l)}function Vf(){_l(111),Bl(261);switch(Jl){case 168:jl(262);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(11,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(168),Rl(11,t,-1)}catch(a){Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(11,t,-2)}Xl=-2}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==16040||Xl==16552||Xl==17064||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&_l(168),Bl(261),Yr()}function $f(){sc.startNonterminal("JSONInsertExpr",$l);switch(Jl){case 161:jl(269);break;default:Xl=Jl}if(Xl!=9889){Xl=Ul(12,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(161),Bl(268);switch(Jl){case 168:jl(270);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(13,$l);if(Xl==0){var a=Vl,f=$l,l=Jl,c=Kl,h=Ql,p=Gl,d=Yl,v=Zl;try{_l(168),Rl(13,f,-1)}catch(m){Vl=a,$l=f,Jl=l,Jl==0?lc=f:(Kl=c,Ql=h,Gl=p,Gl==0?lc=h:(Yl=d,Zl=v,lc=v)),Rl(13,f,-2)}Xl=-2}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==16040||Xl==16552||Xl==17064||Xl==18600||Xl==21160||Xl==22184||Xl==24232||Xl==24744||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==100520||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&_l(168),Bl(268),Uf(),_l(165),Bl(268),Uf();switch(Jl){case 82:jl(72);break;default:Xl=Jl}if(Xl==110162){Xl=Ul(14,$l);if(Xl==0){var a=Vl,f=$l,l=Jl,c=Kl,h=Ql,p=Gl,d=Yl,v=Zl;try{_l(82),Bl(72),_l(215),Bl(268),Uf(),Rl(14,f,-1)}catch(m){Vl=a,$l=f,Jl=l,Jl==0?lc=f:(Kl=c,Ql=h,Gl=p,Gl==0?lc=h:(Yl=d,Zl=v,lc=v)),Rl(14,f,-2)}Xl=-2}}Xl==-1&&(_l(82),Bl(72),_l(215),Bl(268),Uf()),Xl=-1}catch(g){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(12,$l,Xl)}}switch(Xl){case-1:Ml(161),Bl(268);switch(Jl){case 168:jl(270);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(13,$l);if(Xl==0){var a=Vl,f=$l,l=Jl,c=Kl,h=Ql,p=Gl,d=Yl,v=Zl;try{_l(168),Xl=-1}catch(m){Xl=-2}Vl=a,$l=f,Jl=l,Jl==0?lc=f:(Kl=c,Ql=h,Gl=p,Gl==0?lc=h:(Yl=d,Zl=v,lc=v)),Rl(13,$l,Xl)}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==16040||Xl==16552||Xl==17064||Xl==18600||Xl==21160||Xl==22184||Xl==24232||Xl==24744||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==100520||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&Ml(168),Bl(268),Pl(),Rf(),Ml(165),Bl(268),Pl(),Rf();switch(Jl){case 82:jl(72);break;default:Xl=Jl}if(Xl==110162){Xl=Ul(14,$l);if(Xl==0){var a=Vl,f=$l,l=Jl,c=Kl,h=Ql,p=Gl,d=Yl,v=Zl;try{_l(82),Bl(72),_l(215),Bl(268),Uf(),Xl=-1}catch(m){Xl=-2}Vl=a,$l=f,Jl=l,Jl==0?lc=f:(Kl=c,Ql=h,Gl=p,Gl==0?lc=h:(Yl=d,Zl=v,lc=v)),Rl(14,$l,Xl)}}Xl==-1&&(Ml(82),Bl(72),Ml(215),Bl(268),Pl(),Rf());break;default:Ml(161),Bl(269);switch(Jl){case 168:jl(283);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(15,$l);if(Xl==0){var a=Vl,f=$l,l=Jl,c=Kl,h=Ql,p=Gl,d=Yl,v=Zl;try{_l(168),Xl=-1}catch(m){Xl=-2}Vl=a,$l=f,Jl=l,Jl==0?lc=f:(Kl=c,Ql=h,Gl=p,Gl==0?lc=h:(Yl=d,Zl=v,lc=v)),Rl(15,$l,Xl)}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==9896||Xl==16040||Xl==16552||Xl==17064||Xl==18600||Xl==21160||Xl==22184||Xl==24232||Xl==24744||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==100520||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&Ml(168),Bl(269),Pl(),El(),Ml(165),Bl(268),Pl(),Rf()}sc.endNonterminal("JSONInsertExpr",$l)}function Jf(){switch(Jl){case 161:jl(269);break;default:Xl=Jl}if(Xl!=9889){Xl=Ul(12,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(161),Bl(268);switch(Jl){case 168:jl(270);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(13,$l);if(Xl==0){var a=Vl,f=$l,l=Jl,c=Kl,h=Ql,p=Gl,d=Yl,v=Zl;try{_l(168),Rl(13,f,-1)}catch(m){Vl=a,$l=f,Jl=l,Jl==0?lc=f:(Kl=c,Ql=h,Gl=p,Gl==0?lc=h:(Yl=d,Zl=v,lc=v)),Rl(13,f,-2)}Xl=-2}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==16040||Xl==16552||Xl==17064||Xl==18600||Xl==21160||Xl==22184||Xl==24232||Xl==24744||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==100520||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&_l(168),Bl(268),Uf(),_l(165),Bl(268),Uf();switch(Jl){case 82:jl(72);break;default:Xl=Jl}if(Xl==110162){Xl=Ul(14,$l);if(Xl==0){var a=Vl,f=$l,l=Jl,c=Kl,h=Ql,p=Gl,d=Yl,v=Zl;try{_l(82),Bl(72),_l(215),Bl(268),Uf(),Rl(14,f,-1)}catch(m){Vl=a,$l=f,Jl=l,Jl==0?lc=f:(Kl=c,Ql=h,Gl=p,Gl==0?lc=h:(Yl=d,Zl=v,lc=v)),Rl(14,f,-2)}Xl=-2}}Xl==-1&&(_l(82),Bl(72),_l(215),Bl(268),Uf()),Rl(12,t,-1),Xl=-3}catch(g){Xl=-2,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(12,t,-2)}}}switch(Xl){case-1:_l(161),Bl(268);switch(Jl){case 168:jl(270);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(13,$l);if(Xl==0){var a=Vl,f=$l,l=Jl,c=Kl,h=Ql,p=Gl,d=Yl,v=Zl;try{_l(168),Rl(13,f,-1)}catch(m){Vl=a,$l=f,Jl=l,Jl==0?lc=f:(Kl=c,Ql=h,Gl=p,Gl==0?lc=h:(Yl=d,Zl=v,lc=v)),Rl(13,f,-2)}Xl=-2}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==16040||Xl==16552||Xl==17064||Xl==18600||Xl==21160||Xl==22184||Xl==24232||Xl==24744||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==100520||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&_l(168),Bl(268),Uf(),_l(165),Bl(268),Uf();switch(Jl){case 82:jl(72);break;default:Xl=Jl}if(Xl==110162){Xl=Ul(14,$l);if(Xl==0){var a=Vl,f=$l,l=Jl,c=Kl,h=Ql,p=Gl,d=Yl,v=Zl;try{_l(82),Bl(72),_l(215),Bl(268),Uf(),Rl(14,f,-1)}catch(m){Vl=a,$l=f,Jl=l,Jl==0?lc=f:(Kl=c,Ql=h,Gl=p,Gl==0?lc=h:(Yl=d,Zl=v,lc=v)),Rl(14,f,-2)}Xl=-2}}Xl==-1&&(_l(82),Bl(72),_l(215),Bl(268),Uf());break;case-3:break;default:_l(161),Bl(269);switch(Jl){case 168:jl(283);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(15,$l);if(Xl==0){var a=Vl,f=$l,l=Jl,c=Kl,h=Ql,p=Gl,d=Yl,v=Zl;try{_l(168),Rl(15,f,-1)}catch(m){Vl=a,$l=f,Jl=l,Jl==0?lc=f:(Kl=c,Ql=h,Gl=p,Gl==0?lc=h:(Yl=d,Zl=v,lc=v)),Rl(15,f,-2)}Xl=-2}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==9896||Xl==16040||Xl==16552||Xl==17064||Xl==18600||Xl==21160||Xl==22184||Xl==24232||Xl==24744||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==100520||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&_l(168),Bl(269),Sl(),_l(165),Bl(268),Uf()}}function Kf(){sc.startNonterminal("JSONRenameExpr",$l),Ml(222),Bl(261);switch(Jl){case 168:jl(262);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(16,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(168),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(16,$l,Xl)}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==16040||Xl==16552||Xl==17064||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&Ml(168),Bl(261),Pl(),Gr(),Ml(80),Bl(268),Pl(),Rf(),sc.endNonterminal("JSONRenameExpr",$l)}function Qf(){_l(222),Bl(261);switch(Jl){case 168:jl(262);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(16,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(168),Rl(16,t,-1)}catch(a){Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(16,t,-2)}Xl=-2}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==16040||Xl==16552||Xl==17064||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&_l(168),Bl(261),Yr(),_l(80),Bl(268),Uf()}function Gf(){sc.startNonterminal("JSONReplaceExpr",$l),Ml(223),Bl(84),Ml(267),Bl(67),Ml(200),Bl(59),Ml(168),Bl(261),Pl(),Gr(),Ml(276),Bl(268),Pl(),Rf(),sc.endNonterminal("JSONReplaceExpr",$l)}function Yf(){_l(223),Bl(84),_l(267),Bl(67),_l(200),Bl(59),_l(168),Bl(261),Yr(),_l(276),Bl(268),Uf()}function Zf(){sc.startNonterminal("JSONAppendExpr",$l),Ml(78),Bl(268);switch(Jl){case 168:jl(270);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(17,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(168),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(17,$l,Xl)}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==16040||Xl==16552||Xl==17064||Xl==18600||Xl==21160||Xl==22184||Xl==24232||Xl==24744||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==100520||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&Ml(168),Bl(268),Pl(),Rf(),Ml(165),Bl(268),Pl(),Rf(),sc.endNonterminal("JSONAppendExpr",$l)}function el(){_l(78),Bl(268);switch(Jl){case 168:jl(270);break;default:Xl=Jl}if(Xl==18088){Xl=Ul(17,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(168),Rl(17,t,-1)}catch(a){Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(17,t,-2)}Xl=-2}}(Xl==-1||Xl==3240||Xl==4264||Xl==4776||Xl==5288||Xl==5800||Xl==16040||Xl==16552||Xl==17064||Xl==18600||Xl==21160||Xl==22184||Xl==24232||Xl==24744||Xl==28328||Xl==28840||Xl==30888||Xl==35496||Xl==36520||Xl==37544||Xl==38056||Xl==38568||Xl==39080||Xl==40104||Xl==40616||Xl==41128||Xl==41640||Xl==42152||Xl==42664||Xl==43176||Xl==43688||Xl==44200||Xl==44712||Xl==45736||Xl==46248||Xl==46760||Xl==47272||Xl==48296||Xl==48808||Xl==49832||Xl==50344||Xl==50856||Xl==52392||Xl==52904||Xl==53416||Xl==53928||Xl==54440||Xl==54952||Xl==55976||Xl==56488||Xl==57e3||Xl==57512||Xl==58024||Xl==58536||Xl==61096||Xl==61608||Xl==62120||Xl==62632||Xl==63144||Xl==63656||Xl==64168||Xl==64680||Xl==65192||Xl==66216||Xl==66728||Xl==67752||Xl==68264||Xl==68776||Xl==69288||Xl==69800||Xl==70312||Xl==70824||Xl==71336||Xl==72872||Xl==73384||Xl==75432||Xl==75944||Xl==76968||Xl==77992||Xl==78504||Xl==79016||Xl==79528||Xl==80040||Xl==80552||Xl==82600||Xl==83112||Xl==83624||Xl==84136||Xl==84648||Xl==85160||Xl==85672||Xl==86184||Xl==86696||Xl==87208||Xl==88744||Xl==89256||Xl==89768||Xl==90792||Xl==91816||Xl==92840||Xl==93864||Xl==94376||Xl==94888||Xl==95912||Xl==96424||Xl==96936||Xl==99496||Xl==100008||Xl==100520||Xl==101032||Xl==101544||Xl==103592||Xl==104104||Xl==104616||Xl==105128||Xl==105640||Xl==106152||Xl==107688||Xl==110760||Xl==111272||Xl==112808||Xl==113832||Xl==114344||Xl==114856||Xl==115368||Xl==115880||Xl==116904||Xl==117416||Xl==117928||Xl==118440||Xl==118952||Xl==119464||Xl==119976||Xl==122536||Xl==123048||Xl==123560||Xl==124072||Xl==125608||Xl==126632||Xl==127144||Xl==127656||Xl==129704||Xl==130216||Xl==130728||Xl==131240||Xl==131752||Xl==132264||Xl==132776||Xl==133288||Xl==134312||Xl==134824||Xl==136360||Xl==136872||Xl==137384||Xl==137896||Xl==139432||Xl==139944||Xl==141480||Xl==144040||Xl==145064)&&_l(168),Bl(268),Uf(),_l(165),Bl(268),Uf()}function tl(){sc.startNonterminal("CommonContent",$l);switch(Jl){case 12:Ml(12);break;case 23:Ml(23);break;case 282:Ml(282);break;case 288:Ml(288);break;default:kl()}sc.endNonterminal("CommonContent",$l)}function nl(){switch(Jl){case 12:_l(12);break;case 23:_l(23);break;case 282:_l(282);break;case 288:_l(288);break;default:Ll()}}function rl(){sc.startNonterminal("ContentExpr",$l),ef(),sc.endNonterminal("ContentExpr",$l)}function il(){tf()}function sl(){sc.startNonterminal("CompDocConstructor",$l),Ml(120),Bl(89),Pl(),kl(),sc.endNonterminal("CompDocConstructor",$l)}function ol(){_l(120),Bl(89),Ll()}function ul(){sc.startNonterminal("CompAttrConstructor",$l),Ml(83),Bl(251);switch(Jl){case 281:Ml(281),Bl(268),Pl(),Q(),Ml(287);break;default:Pl(),Wa()}Bl(89);switch(Jl){case 281:jl(282);break;default:Xl=Jl}if(Xl==147225){Xl=Ul(18,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(281),Bl(90),_l(287),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(18,$l,Xl)}}switch(Xl){case-1:Ml(281),Bl(90),Ml(287);break;default:Pl(),kl()}sc.endNonterminal("CompAttrConstructor",$l)}function al(){_l(83),Bl(251);switch(Jl){case 281:_l(281),Bl(268),G(),_l(287);break;default:Xa()}Bl(89);switch(Jl){case 281:jl(282);break;default:Xl=Jl}if(Xl==147225){Xl=Ul(18,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(281),Bl(90),_l(287),Rl(18,t,-1),Xl=-3}catch(a){Xl=-2,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(18,t,-2)}}}switch(Xl){case-1:_l(281),Bl(90),_l(287);break;case-3:break;default:Ll()}}function fl(){sc.startNonterminal("CompPIConstructor",$l),Ml(220),Bl(243);switch(Jl){case 281:Ml(281),Bl(268),Pl(),Q(),Ml(287);break;default:Pl(),Ja()}Bl(89);switch(Jl){case 281:jl(282);break;default:Xl=Jl}if(Xl==147225){Xl=Ul(19,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(281),Bl(90),_l(287),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(19,$l,Xl)}}switch(Xl){case-1:Ml(281),Bl(90),Ml(287);break;default:Pl(),kl()}sc.endNonterminal("CompPIConstructor",$l)}function ll(){_l(220),Bl(243);switch(Jl){case 281:_l(281),Bl(268),G(),_l(287);break;default:Ka()}Bl(89);switch(Jl){case 281:jl(282);break;default:Xl=Jl}if(Xl==147225){Xl=Ul(19,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{_l(281),Bl(90),_l(287),Rl(19,t,-1),Xl=-3}catch(a){Xl=-2,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(19,t,-2)}}}switch(Xl){case-1:_l(281),Bl(90),_l(287);break;case-3:break;default:Ll()}}function cl(){sc.startNonterminal("CompCommentConstructor",$l),Ml(97),Bl(89),Pl(),kl(),sc.endNonterminal("CompCommentConstructor",$l)}function hl(){_l(97),Bl(89),Ll()}function pl(){sc.startNonterminal("CompTextConstructor",$l),Ml(249),Bl(89),Pl(),kl(),sc.endNonterminal("CompTextConstructor",$l)}function dl(){_l(249),Bl(89),Ll()}function vl(){sc.startNonterminal("PrimaryExpr",$l);switch(Jl){case 187:jl(248);break;case 220:jl(246);break;case 281:jl(284);break;case 83:case 122:jl(254);break;case 97:case 249:jl(96);break;case 120:case 206:case 262:jl(146);break;case 135:case 197:case 255:jl(238);break;case 6:case 71:case 73:case 74:case 75:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 137:case 138:case 139:case 142:case 143:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:jl(94);break;default:Xl=Jl}if(Xl==3353||Xl==4377||Xl==4889||Xl==5401||Xl==5913||Xl==16153||Xl==16665||Xl==17177||Xl==18055||Xl==18117||Xl==18175||Xl==18201||Xl==18713||Xl==21273||Xl==22297||Xl==24345||Xl==24857||Xl==28441||Xl==28953||Xl==31001||Xl==35609||Xl==36633||Xl==37657||Xl==38169||Xl==38681||Xl==39193||Xl==40217||Xl==40729||Xl==41241||Xl==41753||Xl==42265||Xl==42777||Xl==43289||Xl==43801||Xl==44313||Xl==44825||Xl==45849||Xl==46361||Xl==46873||Xl==47385||Xl==48409||Xl==48921||Xl==49945||Xl==50457||Xl==50969||Xl==52505||Xl==53017||Xl==53529||Xl==54041||Xl==54553||Xl==55065||Xl==56089||Xl==56601||Xl==57113||Xl==57625||Xl==58137||Xl==58649||Xl==61209||Xl==61721||Xl==62233||Xl==62745||Xl==63257||Xl==63769||Xl==64281||Xl==64793||Xl==65305||Xl==66329||Xl==66841||Xl==67865||Xl==68377||Xl==68889||Xl==69401||Xl==69913||Xl==70425||Xl==70937||Xl==71449||Xl==72985||Xl==73497||Xl==75545||Xl==76057||Xl==77081||Xl==78105||Xl==78617||Xl==79129||Xl==79641||Xl==80153||Xl==80665||Xl==82713||Xl==83225||Xl==83737||Xl==84249||Xl==84761||Xl==85273||Xl==85785||Xl==86297||Xl==86809||Xl==87321||Xl==88857||Xl==89369||Xl==89881||Xl==90905||Xl==91929||Xl==92953||Xl==93977||Xl==94489||Xl==95001||Xl==96025||Xl==96537||Xl==97049||Xl==99609||Xl==100121||Xl==100633||Xl==101145||Xl==101657||Xl==103705||Xl==104217||Xl==104729||Xl==105241||Xl==105753||Xl==106265||Xl==107801||Xl==110873||Xl==111385||Xl==112921||Xl==113945||Xl==114457||Xl==114969||Xl==115481||Xl==115993||Xl==117017||Xl==117529||Xl==118041||Xl==118553||Xl==119065||Xl==119577||Xl==120089||Xl==122649||Xl==123161||Xl==123673||Xl==124185||Xl==125721||Xl==126745||Xl==127257||Xl==127769||Xl==129817||Xl==130329||Xl==130841||Xl==131353||Xl==131865||Xl==132377||Xl==132889||Xl==133401||Xl==134425||Xl==134937||Xl==136473||Xl==136985||Xl==137497||Xl==138009||Xl==139545||Xl==140057||Xl==141593||Xl==144153||Xl==145177||Xl==147225){Xl=Ul(20,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{hi(),Xl=-1}catch(a){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),_i(),Xl=-5}catch(f){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Ll(),Xl=-10}catch(l){Xl=-11}}}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(20,$l,Xl)}}switch(Xl){case-1:case 8:case 9:case 10:case 11:case 12935:case 12997:case 13055:case 13447:case 13509:case 13567:case 13959:case 14021:case 14079:case 19591:case 19653:case 19711:case 20103:case 20165:case 20223:case 21127:case 21189:case 21247:case 21639:case 21701:case 21759:case 22151:case 22213:case 22271:case 23175:case 23237:case 23295:case 24199:case 24261:case 24319:case 24711:case 24773:case 24831:case 25735:case 25797:case 25855:case 27783:case 27845:case 27903:case 28295:case 28357:case 28415:case 29831:case 29893:case 29951:case 30343:case 30405:case 30463:case 31367:case 31429:case 31487:case 31879:case 31941:case 31999:case 32391:case 32453:case 32511:case 32903:case 32965:case 33023:case 35463:case 35525:case 35583:case 35975:case 36037:case 36095:case 36487:case 36549:case 36607:case 39047:case 39109:case 39167:case 41095:case 41157:case 41215:case 41607:case 41669:case 41727:case 42119:case 42181:case 42239:case 43655:case 43717:case 43775:case 45191:case 45253:case 45311:case 45703:case 45765:case 45823:case 46215:case 46277:case 46335:case 46727:case 46789:case 46847:case 48775:case 48837:case 48895:case 51335:case 51397:case 51455:case 54407:case 54469:case 54527:case 56455:case 56517:case 56575:case 58503:case 58565:case 58623:case 61063:case 61125:case 61183:case 63111:case 63173:case 63231:case 63623:case 63685:case 63743:case 65159:case 65221:case 65279:case 66183:case 66245:case 66303:case 67719:case 67781:case 67839:case 71303:case 71365:case 71423:case 72839:case 72901:case 72959:case 75911:case 75973:case 76031:case 76935:case 76997:case 77055:case 77959:case 78021:case 78079:case 78471:case 78533:case 78591:case 83079:case 83141:case 83199:case 84103:case 84165:case 84223:case 84615:case 84677:case 84735:case 85127:case 85189:case 85247:case 89735:case 89797:case 89855:case 90759:case 90821:case 90879:case 92807:case 92869:case 92927:case 93831:case 93893:case 93951:case 94343:case 94405:case 94463:case 96903:case 96965:case 97023:case 103559:case 103621:case 103679:case 104583:case 104645:case 104703:case 105095:case 105157:case 105215:case 107143:case 107205:case 107263:case 114823:case 114885:case 114943:case 116871:case 116933:case 116991:case 119431:case 119493:case 119551:case 121479:case 121541:case 121599:case 123527:case 123589:case 123647:case 124039:case 124101:case 124159:case 129159:case 129221:case 129279:case 129671:case 129733:case 129791:case 130183:case 130245:case 130303:case 133255:case 133317:case 133375:case 139399:case 139461:case 139519:case 141447:case 141509:case 141567:case 142983:case 143045:case 143103:case 145543:case 145605:case 145663:case 146055:case 146117:case 146175:case 146567:case 146629:case 146687:case 147079:case 147141:case 147199:ci();break;case 31:bi();break;case 35:xi();break;case 32:Ni();break;case-5:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:Mi();break;case 144078:ki();break;case 144134:Ai();break;case 33:case 79:case 121:case 125:case 147:case 154:case 167:case 169:case 188:case 194:case 230:case 231:case 247:case 248:case 259:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14970:case 14971:case 14972:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14996:case 14998:case 15e3:case 15001:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15016:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15037:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:vs();break;case-10:case 27929:kl();break;case-11:case 10009:bl();break;case 69:Nl();break;case 283:gl();break;default:ji()}sc.endNonterminal("PrimaryExpr",$l)}function ml(){switch(Jl){case 187:jl(248);break;case 220:jl(246);break;case 281:jl(284);break;case 83:case 122:jl(254);break;case 97:case 249:jl(96);break;case 120:case 206:case 262:jl(146);break;case 135:case 197:case 255:jl(238);break;case 6:case 71:case 73:case 74:case 75:case 76:case 78:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 110:case 111:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 130:case 132:case 133:case 134:case 136:case 137:case 138:case 139:case 142:case 143:case 148:case 150:case 152:case 153:case 155:case 156:case 157:case 161:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 177:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 222:case 223:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 240:case 241:case 242:case 245:case 253:case 254:case 256:case 257:case 258:case 260:case 263:case 266:case 267:case 268:case 269:case 272:case 273:case 276:jl(94);break;default:Xl=Jl}if(Xl==3353||Xl==4377||Xl==4889||Xl==5401||Xl==5913||Xl==16153||Xl==16665||Xl==17177||Xl==18055||Xl==18117||Xl==18175||Xl==18201||Xl==18713||Xl==21273||Xl==22297||Xl==24345||Xl==24857||Xl==28441||Xl==28953||Xl==31001||Xl==35609||Xl==36633||Xl==37657||Xl==38169||Xl==38681||Xl==39193||Xl==40217||Xl==40729||Xl==41241||Xl==41753||Xl==42265||Xl==42777||Xl==43289||Xl==43801||Xl==44313||Xl==44825||Xl==45849||Xl==46361||Xl==46873||Xl==47385||Xl==48409||Xl==48921||Xl==49945||Xl==50457||Xl==50969||Xl==52505||Xl==53017||Xl==53529||Xl==54041||Xl==54553||Xl==55065||Xl==56089||Xl==56601||Xl==57113||Xl==57625||Xl==58137||Xl==58649||Xl==61209||Xl==61721||Xl==62233||Xl==62745||Xl==63257||Xl==63769||Xl==64281||Xl==64793||Xl==65305||Xl==66329||Xl==66841||Xl==67865||Xl==68377||Xl==68889||Xl==69401||Xl==69913||Xl==70425||Xl==70937||Xl==71449||Xl==72985||Xl==73497||Xl==75545||Xl==76057||Xl==77081||Xl==78105||Xl==78617||Xl==79129||Xl==79641||Xl==80153||Xl==80665||Xl==82713||Xl==83225||Xl==83737||Xl==84249||Xl==84761||Xl==85273||Xl==85785||Xl==86297||Xl==86809||Xl==87321||Xl==88857||Xl==89369||Xl==89881||Xl==90905||Xl==91929||Xl==92953||Xl==93977||Xl==94489||Xl==95001||Xl==96025||Xl==96537||Xl==97049||Xl==99609||Xl==100121||Xl==100633||Xl==101145||Xl==101657||Xl==103705||Xl==104217||Xl==104729||Xl==105241||Xl==105753||Xl==106265||Xl==107801||Xl==110873||Xl==111385||Xl==112921||Xl==113945||Xl==114457||Xl==114969||Xl==115481||Xl==115993||Xl==117017||Xl==117529||Xl==118041||Xl==118553||Xl==119065||Xl==119577||Xl==120089||Xl==122649||Xl==123161||Xl==123673||Xl==124185||Xl==125721||Xl==126745||Xl==127257||Xl==127769||Xl==129817||Xl==130329||Xl==130841||Xl==131353||Xl==131865||Xl==132377||Xl==132889||Xl==133401||Xl==134425||Xl==134937||Xl==136473||Xl==136985||Xl==137497||Xl==138009||Xl==139545||Xl==140057||Xl==141593||Xl==144153||Xl==145177||Xl==147225){Xl=Ul(20,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{hi(),Rl(20,t,-1),Xl=-14}catch(a){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),_i(),Rl(20,t,-5),Xl=-14}catch(f){try{Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Ll(),Rl(20,t,-10),Xl=-14}catch(l){Xl=-11,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(20,t,-11)}}}}}switch(Xl){case-1:case 8:case 9:case 10:case 11:case 12935:case 12997:case 13055:case 13447:case 13509:case 13567:case 13959:case 14021:case 14079:case 19591:case 19653:case 19711:case 20103:case 20165:case 20223:case 21127:case 21189:case 21247:case 21639:case 21701:case 21759:case 22151:case 22213:case 22271:case 23175:case 23237:case 23295:case 24199:case 24261:case 24319:case 24711:case 24773:case 24831:case 25735:case 25797:case 25855:case 27783:case 27845:case 27903:case 28295:case 28357:case 28415:case 29831:case 29893:case 29951:case 30343:case 30405:case 30463:case 31367:case 31429:case 31487:case 31879:case 31941:case 31999:case 32391:case 32453:case 32511:case 32903:case 32965:case 33023:case 35463:case 35525:case 35583:case 35975:case 36037:case 36095:case 36487:case 36549:case 36607:case 39047:case 39109:case 39167:case 41095:case 41157:case 41215:case 41607:case 41669:case 41727:case 42119:case 42181:case 42239:case 43655:case 43717:case 43775:case 45191:case 45253:case 45311:case 45703:case 45765:case 45823:case 46215:case 46277:case 46335:case 46727:case 46789:case 46847:case 48775:case 48837:case 48895:case 51335:case 51397:case 51455:case 54407:case 54469:case 54527:case 56455:case 56517:case 56575:case 58503:case 58565:case 58623:case 61063:case 61125:case 61183:case 63111:case 63173:case 63231:case 63623:case 63685:case 63743:case 65159:case 65221:case 65279:case 66183:case 66245:case 66303:case 67719:case 67781:case 67839:case 71303:case 71365:case 71423:case 72839:case 72901:case 72959:case 75911:case 75973:case 76031:case 76935:case 76997:case 77055:case 77959:case 78021:case 78079:case 78471:case 78533:case 78591:case 83079:case 83141:case 83199:case 84103:case 84165:case 84223:case 84615:case 84677:case 84735:case 85127:case 85189:case 85247:case 89735:case 89797:case 89855:case 90759:case 90821:case 90879:case 92807:case 92869:case 92927:case 93831:case 93893:case 93951:case 94343:case 94405:case 94463:case 96903:case 96965:case 97023:case 103559:case 103621:case 103679:case 104583:case 104645:case 104703:case 105095:case 105157:case 105215:case 107143:case 107205:case 107263:case 114823:case 114885:case 114943:case 116871:case 116933:case 116991:case 119431:case 119493:case 119551:case 121479:case 121541:case 121599:case 123527:case 123589:case 123647:case 124039:case 124101:case 124159:case 129159:case 129221:case 129279:case 129671:case 129733:case 129791:case 130183:case 130245:case 130303:case 133255:case 133317:case 133375:case 139399:case 139461:case 139519:case 141447:case 141509:case 141567:case 142983:case 143045:case 143103:case 145543:case 145605:case 145663:case 146055:case 146117:case 146175:case 146567:case 146629:case 146687:case 147079:case 147141:case 147199:hi();break;case 31:wi();break;case 35:Ti();break;case 32:Ci();break;case-5:case 17926:case 17991:case 17993:case 17994:case 17995:case 17996:case 17998:case 18e3:case 18001:case 18002:case 18004:case 18005:case 18006:case 18007:case 18009:case 18010:case 18011:case 18012:case 18014:case 18015:case 18018:case 18019:case 18022:case 18023:case 18024:case 18025:case 18026:case 18027:case 18029:case 18030:case 18031:case 18032:case 18033:case 18034:case 18039:case 18040:case 18043:case 18044:case 18046:case 18047:case 18049:case 18050:case 18052:case 18053:case 18054:case 18056:case 18057:case 18058:case 18059:case 18062:case 18063:case 18068:case 18070:case 18072:case 18073:case 18075:case 18076:case 18077:case 18081:case 18082:case 18083:case 18084:case 18085:case 18086:case 18088:case 18090:case 18093:case 18094:case 18095:case 18097:case 18099:case 18101:case 18103:case 18104:case 18105:case 18107:case 18109:case 18115:case 18118:case 18122:case 18123:case 18124:case 18125:case 18126:case 18127:case 18130:case 18136:case 18137:case 18142:case 18143:case 18144:case 18145:case 18146:case 18148:case 18149:case 18152:case 18153:case 18154:case 18159:case 18160:case 18161:case 18162:case 18165:case 18173:case 18174:case 18176:case 18177:case 18178:case 18180:case 18182:case 18183:case 18186:case 18187:case 18188:case 18189:case 18192:case 18193:case 18196:_i();break;case 144078:Li();break;case 144134:Oi();break;case 33:case 79:case 121:case 125:case 147:case 154:case 167:case 169:case 188:case 194:case 230:case 231:case 247:case 248:case 259:case 14854:case 14919:case 14921:case 14922:case 14923:case 14924:case 14926:case 14928:case 14929:case 14930:case 14931:case 14932:case 14933:case 14934:case 14935:case 14937:case 14938:case 14939:case 14940:case 14942:case 14943:case 14945:case 14946:case 14947:case 14950:case 14951:case 14952:case 14953:case 14954:case 14955:case 14957:case 14958:case 14959:case 14960:case 14961:case 14962:case 14967:case 14968:case 14970:case 14971:case 14972:case 14974:case 14975:case 14977:case 14978:case 14980:case 14981:case 14982:case 14983:case 14984:case 14985:case 14986:case 14987:case 14990:case 14991:case 14996:case 14998:case 15e3:case 15001:case 15003:case 15004:case 15005:case 15009:case 15010:case 15011:case 15012:case 15013:case 15014:case 15016:case 15018:case 15021:case 15022:case 15023:case 15025:case 15027:case 15029:case 15031:case 15032:case 15033:case 15035:case 15037:case 15043:case 15045:case 15046:case 15050:case 15051:case 15052:case 15053:case 15054:case 15055:case 15058:case 15064:case 15065:case 15068:case 15070:case 15071:case 15072:case 15073:case 15074:case 15076:case 15077:case 15080:case 15081:case 15082:case 15087:case 15088:case 15089:case 15090:case 15093:case 15097:case 15101:case 15102:case 15103:case 15104:case 15105:case 15106:case 15108:case 15110:case 15111:case 15114:case 15115:case 15116:case 15117:case 15120:case 15121:case 15124:ms();break;case-10:case 27929:Ll();break;case-11:case 10009:wl();break;case 69:Cl();break;case 283:yl();break;case-14:break;default:Fi()}}function gl(){sc.startNonterminal("JSONSimpleObjectUnion",$l),Ml(283),Bl(275),Jl!=286&&(Pl(),Q()),Ml(286),sc.endNonterminal("JSONSimpleObjectUnion",$l)}function yl(){_l(283),Bl(275),Jl!=286&&G(),_l(286)}function bl(){sc.startNonterminal("ObjectConstructor",$l),Ml(281),Bl(278),Jl!=287&&(Pl(),El()),Ml(287),sc.endNonterminal("ObjectConstructor",$l)}function wl(){_l(281),Bl(278),Jl!=287&&Sl(),_l(287)}function El(){sc.startNonterminal("PairConstructorList",$l),xl();for(;;){if(Jl!=42)break;Ml(42),Bl(269),Pl(),xl()}sc.endNonterminal("PairConstructorList",$l)}function Sl(){Tl();for(;;){if(Jl!=42)break;_l(42),Bl(269),Tl()}}function xl(){sc.startNonterminal("PairConstructor",$l);switch(Jl){case 78:jl(280);break;case 161:jl(283);break;case 177:jl(179);break;case 187:jl(253);break;case 220:jl(249);break;case 223:jl(181);break;case 266:jl(192);break;case 83:case 122:jl(258);break;case 97:case 249:jl(147);break;case 111:case 222:jl(263);break;case 139:case 142:jl(188);break;case 104:case 130:case 240:jl(166);break;case 135:case 197:case 255:jl(210);break;case 120:case 206:case 256:case 262:jl(168);break;case 121:case 125:case 167:case 188:case 194:case 230:case 231:jl(95);break;case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 133:case 134:case 136:case 137:case 138:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 268:case 269:case 272:case 273:case 276:jl(142);break;default:Xl=Jl}if(Xl==25735||Xl==25797||Xl==25855){Xl=Ul(21,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{Uf(),Xl=-1}catch(a){Xl=-2}Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(21,$l,Xl)}}switch(Xl){case-2:case 19:case 25671:case 25673:case 25674:case 25675:case 25676:case 25678:case 25680:case 25681:case 25682:case 25683:case 25684:case 25685:case 25686:case 25687:case 25689:case 25690:case 25691:case 25692:case 25694:case 25695:case 25697:case 25698:case 25699:case 25702:case 25703:case 25704:case 25705:case 25706:case 25707:case 25709:case 25710:case 25711:case 25712:case 25713:case 25714:case 25719:case 25720:case 25721:case 25722:case 25723:case 25724:case 25725:case 25726:case 25727:case 25729:case 25730:case 25732:case 25733:case 25734:case 25736:case 25737:case 25738:case 25739:case 25742:case 25743:case 25747:case 25748:case 25750:case 25752:case 25753:case 25754:case 25755:case 25756:case 25757:case 25761:case 25762:case 25763:case 25764:case 25765:case 25766:case 25767:case 25768:case 25770:case 25773:case 25774:case 25775:case 25777:case 25779:case 25781:case 25783:case 25784:case 25785:case 25787:case 25788:case 25789:case 25794:case 25795:case 25798:case 25802:case 25803:case 25804:case 25805:case 25806:case 25807:case 25810:case 25816:case 25817:case 25820:case 25822:case 25823:case 25824:case 25825:case 25826:case 25828:case 25829:case 25830:case 25831:case 25832:case 25833:case 25834:case 25839:case 25840:case 25841:case 25842:case 25845:case 25848:case 25849:case 25853:case 25854:case 25856:case 25857:case 25858:case 25859:case 25860:case 25862:case 25863:case 25866:case 25867:case 25868:case 25869:case 25872:case 25873:case 25876:Ja();break;default:Rf()}Bl(26),Ml(50),Bl(268),Pl(),Rf(),sc.endNonterminal("PairConstructor",$l)}function Tl(){switch(Jl){case 78:jl(280);break;case 161:jl(283);break;case 177:jl(179);break;case 187:jl(253);break;case 220:jl(249);break;case 223:jl(181);break;case 266:jl(192);break;case 83:case 122:jl(258);break;case 97:case 249:jl(147);break;case 111:case 222:jl(263);break;case 139:case 142:jl(188);break;case 104:case 130:case 240:jl(166);break;case 135:case 197:case 255:jl(210);break;case 120:case 206:case 256:case 262:jl(168);break;case 121:case 125:case 167:case 188:case 194:case 230:case 231:jl(95);break;case 71:case 73:case 74:case 75:case 76:case 80:case 81:case 82:case 84:case 85:case 86:case 87:case 89:case 90:case 91:case 92:case 94:case 95:case 98:case 99:case 102:case 103:case 105:case 106:case 107:case 109:case 110:case 112:case 113:case 114:case 119:case 123:case 124:case 126:case 127:case 129:case 132:case 133:case 134:case 136:case 137:case 138:case 143:case 147:case 148:case 150:case 152:case 153:case 154:case 155:case 156:case 157:case 162:case 163:case 164:case 165:case 166:case 168:case 170:case 173:case 174:case 175:case 179:case 181:case 183:case 184:case 185:case 189:case 195:case 198:case 202:case 203:case 204:case 205:case 207:case 210:case 216:case 217:case 224:case 225:case 226:case 228:case 229:case 232:case 233:case 234:case 239:case 241:case 242:case 245:case 248:case 253:case 254:case 257:case 258:case 259:case 260:case 263:case 267:case 268:case 269:case 272:case 273:case 276:jl(142);break;default:Xl=Jl}if(Xl==25735||Xl==25797||Xl==25855){Xl=Ul(21,$l);if(Xl==0){var e=Vl,t=$l,n=Jl,r=Kl,i=Ql,s=Gl,o=Yl,u=Zl;try{Uf(),Rl(21,t,-1),Xl=-3}catch(a){Xl=-2,Vl=e,$l=t,Jl=n,Jl==0?lc=t:(Kl=r,Ql=i,Gl=s,Gl==0?lc=i:(Yl=o,Zl=u,lc=u)),Rl(21,t,-2)}}}switch(Xl){case-2:case 19:case 25671:case 25673:case 25674:case 25675:case 25676:case 25678:case 25680:case 25681:case 25682:case 25683:case 25684:case 25685:case 25686:case 25687:case 25689:case 25690:case 25691:case 25692:case 25694:case 25695:case 25697:case 25698:case 25699:case 25702:case 25703:case 25704:case 25705:case 25706:case 25707:case 25709:case 25710:case 25711:case 25712:case 25713:case 25714:case 25719:case 25720:case 25721:case 25722:case 25723:case 25724:case 25725:case 25726:case 25727:case 25729:case 25730:case 25732:case 25733:case 25734:case 25736:case 25737:case 25738:case 25739:case 25742:case 25743:case 25747:case 25748:case 25750:case 25752:case 25753:case 25754:case 25755:case 25756:case 25757:case 25761:case 25762:case 25763:case 25764:case 25765:case 25766:case 25767:case 25768:case 25770:case 25773:case 25774:case 25775:case 25777:case 25779:case 25781:case 25783:case 25784:case 25785:case 25787:case 25788:case 25789:case 25794:case 25795:case 25798:case 25802:case 25803:case 25804:case 25805:case 25806:case 25807:case 25810:case 25816:case 25817:case 25820:case 25822:case 25823:case 25824:case 25825:case 25826:case 25828:case 25829:case 25830:case 25831:case 25832:case 25833:case 25834:case 25839:case 25840:case 25841:case 25842:case 25845:case 25848:case 25849:case 25853:case 25854:case 25856:case 25857:case 25858:case 25859:case 25860:case 25862:case 25863:case 25866:case 25867:case 25868:case 25869:case 25872:case 25873:case 25876:Ka();break;case-3:break;default:Uf()}Bl(26),_l(50),Bl(268),Uf()}function Nl(){sc.startNonterminal("ArrayConstructor",$l),Ml(69),Bl(274),Jl!=70&&(Pl(),Q()),Ml(70),sc.endNonterminal("ArrayConstructor",$l)}function Cl(){_l(69),Bl(274),Jl!=70&&G(),_l(70)}function kl(){sc.startNonterminal("BlockExpr",$l),Ml(281),Bl(282),Pl(),nf(),Ml(287),sc.endNonterminal("BlockExpr",$l)}function Ll(){_l(281),Bl(282),rf(),_l(287)}function Al(){sc.startNonterminal("FunctionDecl",$l),Ml(147),Bl(247),Pl(),Wa(),Bl(22),Ml(35),Bl(97),Jl==31&&(Pl(),R()),Ml(38),Bl(157),Jl==80&&(Pl(),Ol()),Bl(120);switch(Jl){case 281:Ml(281),Bl(282),Pl(),nf(),Ml(287);break;default:Ml(134)}sc.endNonterminal("FunctionDecl",$l)}function Ol(){sc.startNonterminal("ReturnType",$l),Ml(80),Bl(255),Pl(),Ns(),sc.endNonterminal("ReturnType",$l)}function Ml(e){Jl==e?(Pl(),sc.terminal(i.TOKEN[Jl],Kl,Ql>ac?ac:Ql),Vl=Kl,$l=Ql,Jl=Gl,Jl!=0&&(Kl=Yl,Ql=Zl,Gl=0)):ql(Kl,Ql,0,Jl,e)}function _l(e){Jl==e?(Vl=Kl,$l=Ql,Jl=Gl,Jl!=0&&(Kl=Yl,Ql=Zl,Gl=0)):ql(Kl,Ql,0,Jl,e)}function Dl(e){var t=Vl,n=$l,r=Jl,i=Kl,s=Ql;Jl=e,Kl=fc,Ql=lc,Gl=0,za(),Vl=t,$l=n,Jl=r,Jl!=0&&(Kl=i,Ql=s)}function Pl(){$l!=Kl&&(Vl=$l,$l=Kl,sc.whitespace(Vl,$l))}function Hl(e){var t;for(;;){t=zl(e);if(t!=22){if(t!=37)break;Dl(t)}}return t}function Bl(e){Jl==0&&(Jl=Hl(e),Kl=fc,Ql=lc)}function jl(e){Gl==0&&(Gl=Hl(e),Yl=fc,Zl=lc),Xl=Gl<<9|Jl}function Fl(e){Jl==0&&(Jl=zl(e),Kl=fc,Ql=lc)}function Il(e){Gl==0&&(Gl=zl(e),Yl=fc,Zl=lc),Xl=Gl<<9|Jl}function ql(e,t,n,r,i){throw t>tc&&(ec=e,tc=t,nc=n,rc=r,ic=i),new Wl.ParseException(ec,tc,nc,rc,ic)}function Rl(e,t,n){oc[(t<<5)+e]=n}function Ul(e,t){var n=oc[(t<<5)+e];return typeof n!="undefined"?n:0}function zl(e){var t=!1;fc=lc;var n=lc,r=i.INITIAL[e],s=0;for(var o=r&8191;o!=0;){var u,a=n>4;u=i.MAP1[(a&15)+i.MAP1[(f&31)+i.MAP1[f>>5]]]}else{if(a<56320){var f=n=56320&&f<57344&&(++n,a=((a&1023)<<10)+(f&1023)+65536,t=!0)}var l=0,c=5;for(var h=3;;h=c+l>>1){if(i.MAP2[h]>a)c=h-1;else{if(!(i.MAP2[6+h]c){u=0;break}}}s=o;var p=(u<<13)+o-1;o=i.TRANSITION[(p&31)+i.TRANSITION[p>>5]],o>8191&&(r=o,o&=8191,lc=n)}r>>=13;if(r==0){lc=n-1;var f=lc=56320&&f<57344&&--lc,ql(fc,lc,s,-1,-1)}if(t)for(var d=r>>9;d>0;--d){--lc;var f=lc=56320&&f<57344&&--lc}else lc-=r>>9;return(r&511)-1}n(e,t);var Wl=this;this.ParseException=function(e,t,n,r,i){var s=e,o=t,u=n,a=r,f=i;this.getBegin=function(){return s},this.getEnd=function(){return o},this.getState=function(){return u},this.getExpected=function(){return f},this.getOffending=function(){return a},this.getMessage=function(){return a<0?"lexical analysis failed":"syntax error"}},this.getInput=function(){return uc},this.getOffendingToken=function(e){var t=e.getOffending();return t>=0?i.TOKEN[t]:null},this.getExpectedTokenSet=function(e){var t;return e.getExpected()<0?t=i.getTokenSet(-e.getState()):t=[i.TOKEN[e.getExpected()]],t},this.getErrorMessage=function(e){var t=this.getExpectedTokenSet(e),n=this.getOffendingToken(e),r=uc.substring(0,e.getBegin()),i=r.split("\n"),s=i.length,o=i[s-1].length+1,u=e.getEnd()-e.getBegin();return e.getMessage()+(n==null?"":", found "+n)+"\nwhile expecting "+(t.length==1?t[0]:"["+t.join(", ")+"]")+"\n"+(u==0||n!=null?"":"after successfully scanning "+u+" characters beginning ")+"at line "+s+", column "+o+":\n..."+uc.substring(e.getBegin(),Math.min(uc.length,e.getBegin()+64))+"..."},this.parse_XQuery=function(){sc.startNonterminal("XQuery",$l),Bl(279),Pl(),s(),Ml(25),sc.endNonterminal("XQuery",$l)};var Xl,Vl,$l,Jl,Kl,Ql,Gl,Yl,Zl,ec,tc,nc,rc,ic,sc,oc,uc,ac,fc,lc};r.getTokenSet=function(e){var t=[],n=e<0?-e:INITIAL[e]&8191;for(var i=0;i<289;i+=32){var s=i,o=(i>>5)*4323+n-1,u=o>>2,a=u>>2,f=r.EXPECTED[(o&3)+r.EXPECTED[(u&3)+r.EXPECTED[(a&7)+r.EXPECTED[a>>3]]]];for(;f!=0;f>>>=1,++s)(f&1)!=0&&t.push(r.TOKEN[s])}return t},r.MAP0=[71,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,17,17,17,17,17,17,17,18,19,20,21,22,23,24,25,26,27,28,29,26,30,30,30,30,30,31,32,33,30,30,34,30,30,35,30,30,30,36,30,30,37,38,39,40,30,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,40,40],r.MAP1=[108,124,214,214,214,214,214,214,214,214,214,214,214,214,214,214,156,181,181,181,181,181,214,215,213,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,247,261,277,293,309,355,371,387,423,423,423,415,339,331,339,331,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,440,440,440,440,440,440,440,324,339,339,339,339,339,339,339,339,401,423,423,424,422,423,423,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,338,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,339,423,71,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,17,17,17,17,17,17,17,17,17,18,19,20,21,22,23,24,25,26,27,28,29,26,30,30,30,30,30,31,32,33,30,30,30,30,30,30,30,30,30,30,30,30,30,30,40,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,34,30,30,35,30,30,30,36,30,30,37,38,39,40,30,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,40,40,40,40,40,40,40,40,40,40,40,40,30,30,40,40,40,40,40,40,40,70,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70],r.MAP2=[57344,63744,64976,65008,65536,983040,63743,64975,65007,65533,983039,1114111,40,30,40,30,30,40],r.INITIAL=[1,24578,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291],r.TRANSITION=[61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,18432,18517,18522,18517,18517,18484,18512,18452,18517,18554,61967,59516,61967,74619,61967,61967,55527,19522,55520,19508,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31390,61967,61967,73090,22372,22399,61674,22448,61967,59516,61967,41832,61967,61967,55527,19522,30374,20913,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22538,61967,70056,61967,34633,62349,22589,41847,62466,62378,61967,59516,61967,22626,61967,61967,55527,19522,55520,41710,22665,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22724,61967,35451,61966,61947,33649,33678,20228,20251,22777,61967,20166,61967,22829,61967,61967,55527,19522,55520,38980,22868,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,21069,18745,27106,18633,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22927,61967,31390,22996,58037,23031,22589,71908,23095,23127,61967,59516,61967,74619,61967,61967,55527,19522,33749,19508,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31390,23195,61967,73090,23262,33056,23232,23311,61967,59516,61967,74619,61967,61967,55527,19522,55520,19508,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31390,61967,61967,63256,23363,61967,61967,23400,61967,59516,61967,74619,61967,61967,55527,19522,55520,19508,18606,18665,61967,70169,30458,18726,18778,19038,23468,18928,23545,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,23577,61967,72464,61967,57684,23628,22589,72719,23725,23657,61967,59516,61967,23757,61967,61967,55527,19522,55520,19460,23796,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,23855,23948,23953,23941,24006,23911,23985,23879,24038,24068,61967,26764,61967,74619,61967,61967,55527,19522,55520,19508,18606,24136,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,24234,61967,31390,24372,69698,73090,24290,24311,24343,24413,61967,22488,61967,74619,61967,61967,55527,19522,55520,19508,18606,24481,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,24541,61967,31390,61967,61967,67560,24598,24727,24629,24659,61967,59516,61967,74619,61967,61967,55527,19522,55520,19508,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,24786,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31390,61967,61967,20332,24818,47893,47878,24849,61967,59516,61967,74619,61967,61967,55527,19522,55520,19508,18606,18665,61967,72704,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,24917,61967,31390,22166,69121,24929,24961,24980,63830,25029,61967,59516,61967,74619,61967,61967,55527,19522,55520,19508,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,25081,61967,31390,61967,61967,73090,25120,40456,40441,25151,61967,59516,61967,74619,61967,61967,25386,70359,33542,44063,60878,74169,48358,73876,61967,61967,25392,25221,46058,56008,34317,59395,45145,35889,25258,33586,67359,61967,61967,74289,32691,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,34227,61967,61967,39423,61967,38058,59141,59141,42868,32848,52984,42485,53795,45145,38847,36411,45179,49739,61967,61967,31653,31517,54964,59141,46635,69258,52984,19712,25297,53636,36994,45179,49738,61967,35077,73614,59141,39309,52984,49561,45145,34410,45179,30090,25332,29726,25380,25434,58426,41951,25472,71032,68673,61967,25509,25555,25602,33496,25669,25747,56815,25790,25835,25867,25928,42600,26414,25960,26021,26093,26145,25698,41957,45600,50560,49862,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31390,61967,61967,73577,26289,22949,26342,26374,61967,59516,61967,57530,61967,61967,55527,19522,60302,19508,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,26446,61967,45837,61967,61967,73090,26514,26567,72558,26616,61967,59516,61967,43846,55593,61967,55527,19522,55520,41710,22665,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,26668,61967,31390,61967,61967,26680,22589,61967,26712,26744,61967,59516,61967,26814,61967,61967,25386,70359,27859,44063,61967,74169,61967,44524,61967,61967,25392,59141,46058,52984,34317,45145,45145,36983,45179,33586,26853,61967,61967,53249,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,45058,26893,61967,61967,23063,61967,25397,59141,59141,26933,52984,52984,42016,45145,45145,47967,45179,45179,58891,61967,61967,61967,31517,59141,59141,26972,52984,52984,27017,45145,53636,45179,45179,64222,61967,61967,73614,59141,73537,52984,39346,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,27055,61967,74626,39880,35594,36017,36045,36071,27139,27245,61967,29891,61967,74619,61967,61967,55527,29290,28935,28860,18606,27299,61967,70169,30458,18726,18778,19038,27395,27918,27454,29597,27486,59308,29378,28584,19146,19231,58583,74082,19266,19356,74753,19443,20085,28657,28641,27422,28779,28920,29492,29536,29518,28283,36556,19613,19681,19750,24509,29432,20022,19387,27518,29659,27577,20114,28406,28720,27638,28527,27732,27795,21982,20146,20198,19175,20445,20283,27891,27950,27982,59281,28751,28253,27763,28014,28075,20555,20624,28313,28345,28129,28191,28223,28377,28438,28497,28559,18808,20981,21038,18850,28616,27606,28689,29351,27669,18694,21298,21330,28811,28892,28967,28999,29031,21595,29063,29121,29095,29153,29185,27545,29217,29276,28841,28043,29322,29410,29464,28465,29568,29629,29691,28159,74475,29723,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,29758,61967,31390,19098,24381,27267,29803,29822,29771,29871,61967,59516,61967,74619,61967,61967,55527,19522,55520,19508,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,33022,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,29923,29951,19613,19681,29983,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,30024,21982,20146,20198,19175,20445,20283,30122,30300,20403,30275,30307,20410,20442,20477,20310,20555,20624,28313,28345,30181,20725,30247,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31390,61967,61967,61967,30339,30357,30406,30438,61967,59516,61967,74619,31473,61967,55527,19522,55520,30909,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,30490,61967,31390,61967,61967,73090,30561,30579,71270,30628,61967,59516,61967,74619,45464,61967,55527,19522,55520,21356,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,30683,61967,57342,61967,61967,73090,30735,30753,72498,30802,61967,59516,61967,74619,34645,61967,55527,19522,55520,19199,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,30855,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,30961,61967,31390,70791,61967,28097,22589,31007,32778,31050,61967,59516,61967,45974,61967,61967,55527,19522,36762,32200,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31390,61967,61967,73090,22589,61967,21436,31117,61967,59516,61967,74619,61967,61967,55527,19522,55520,19508,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,45429,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,31305,61967,61967,23060,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,50599,31344,61967,61967,23063,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,58891,61967,61967,31384,31517,59141,59141,34770,52984,52984,31422,45145,53636,45179,45179,64222,61967,61967,73614,59141,73537,52984,39346,45145,45146,45179,45179,56820,49285,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,45429,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,31305,61967,61967,23060,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,50599,31344,61967,61967,23063,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,58891,61967,61967,61967,31517,59141,59141,34770,52984,52984,31422,45145,53636,45179,45179,64222,61967,61967,73614,59141,73537,52984,39346,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,45429,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,31305,61967,61967,27084,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,50599,31344,61967,61967,23063,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,58891,61967,61967,61967,31517,59141,59141,34770,52984,52984,31422,45145,53636,45179,45179,64222,61967,61967,73614,59141,73537,52984,39346,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,45429,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,31305,61967,61967,23060,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,50599,31344,61967,61967,31460,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,58891,61967,61967,61967,31517,59141,59141,34770,52984,52984,31422,45145,53636,45179,45179,64222,61967,61967,73614,59141,73537,52984,39346,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,45429,61967,59516,61967,44659,61967,61967,25386,70359,33542,44780,61967,74169,61967,44652,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,31305,61967,61967,23060,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,50599,31344,61967,61967,23063,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,58891,61967,61967,61967,31517,59141,59141,34770,52984,52984,31422,45145,53636,45179,45179,64222,61967,61967,73614,59141,73537,52984,39346,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,45429,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,45429,61967,59516,61967,61967,61967,61967,25386,70359,33542,71110,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,61383,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,31505,25523,31221,45429,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,31550,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,60964,31586,31617,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,45429,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,26782,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31685,61967,45328,61967,61967,73090,22589,25523,31221,45429,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31722,61967,31390,61967,61967,73090,31797,31748,31850,31879,61967,59516,61967,74619,61967,61967,55527,19522,55520,19508,18606,18665,61967,72035,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,31966,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31390,61967,61967,73090,22589,61967,61967,31998,61967,59516,61967,74619,61967,61967,55527,19522,55520,41710,22665,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,32087,31390,61967,61967,73090,32050,32071,20592,32120,61967,59516,61967,74619,61967,61967,55527,19522,55520,19508,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,32172,21655,21713,21687,32267,21777,19818,32299,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31390,61967,61967,73090,22589,61967,61967,31117,61967,59516,61967,74619,61967,61967,55527,19522,55520,19508,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,32359,45328,32394,57696,65386,32464,32495,32603,32525,62034,70632,30651,32635,32733,19295,32810,32880,32912,32991,33054,74169,33088,33130,33163,45989,25392,59141,33241,52984,56024,45145,31428,36983,45179,70338,33310,32220,58099,27328,61967,33367,33433,25402,66092,33481,37911,33910,33528,47097,61157,33574,61753,33618,33731,31765,68742,23063,34945,33781,41368,33852,38560,52078,55949,33942,34017,27845,43023,34098,50430,34177,62248,57537,24258,43351,68443,56707,34259,34314,58276,34349,45145,34442,34495,72106,34542,34611,34677,34744,34815,73537,31252,34847,37261,34977,51083,35015,35053,31690,31518,35109,47283,58827,70275,61805,56796,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,52125,35177,35243,41332,35298,35365,33401,59626,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,35445,45328,61967,61967,73090,35483,35510,35542,35574,61967,59516,61967,61967,61967,61967,52163,48269,57216,35626,43781,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,31305,61967,62286,23060,35725,73613,59141,59141,35797,52984,52984,35865,45145,45145,35932,45179,45179,35986,31344,61967,61967,23063,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,58891,61967,36103,63318,36136,36230,59141,36264,52984,65801,36356,45145,56526,36406,45179,43758,61967,61967,73614,59141,73537,52984,39346,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,51661,67812,57941,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,32555,45328,23279,73166,19759,36443,36474,36505,36536,61967,36588,43861,44539,61967,19114,23147,36656,71728,67332,56205,74169,36716,22176,36794,36860,61640,59141,37718,36917,44877,36960,45145,37285,37026,33586,37060,26257,59568,24165,65366,73613,59968,37108,65487,55372,37167,69268,48100,37236,42027,37317,51793,50599,31344,60141,48701,23063,61967,25397,36232,55772,35138,52984,37349,35822,45145,61129,47967,45179,37426,58891,37499,31352,26821,31517,59141,52867,34770,52984,65140,31422,45145,37532,45179,54511,64222,61967,37577,58139,70018,73537,39632,39346,19718,45146,72426,45179,37613,60044,26466,37665,72228,37750,37787,43916,37853,61967,26636,59141,37904,47945,63759,45179,37943,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,46610,37980,38036,33401,34463,61516,69e3,26222,38090,38162,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,20574,45328,40138,52640,73090,38225,38256,38355,38286,61967,59516,61967,61967,43783,43782,21897,47178,42577,38387,54918,38446,38323,74131,48917,73999,38531,47646,35413,41239,38592,38624,38676,54441,43934,47786,31305,33098,65307,23060,61967,32432,59141,59141,38728,52984,52984,38807,45145,45145,38879,45179,45179,38933,39012,37500,60946,23063,26901,68795,39058,45875,68127,39093,53596,39131,70917,45145,39189,51783,45179,39260,61967,61967,20661,34712,59141,55880,62878,52984,39341,39378,25477,34983,45179,73008,64222,55507,39422,66949,46044,39455,58464,39514,67447,49193,71504,47769,46339,61967,31518,59141,50203,41951,45145,50986,45368,35693,32088,59141,39625,59730,36324,45179,39664,39725,25715,52935,49718,39701,25709,53833,42807,67039,39770,59825,42895,63165,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,36624,45328,74527,70800,39828,39925,39956,40038,39986,40262,40070,40102,40232,40170,40202,40294,40326,40358,40390,24566,30703,43994,40488,40534,52510,26061,68036,51395,40569,51336,64180,42132,40638,40717,40782,40835,40894,40926,40999,54209,41068,41100,62097,41179,41211,56932,41271,41400,48763,41502,41574,41631,41663,41742,52524,31899,41801,34206,41879,70010,41911,41990,42059,68924,42102,66773,71709,41302,42222,71091,42269,48816,36745,65446,54064,55792,42347,55288,42379,42460,42517,42632,50968,42664,51055,42716,31312,50294,26394,59852,33883,68540,64439,48450,44990,55438,42792,39669,67971,68098,42839,42962,42994,43118,43206,43294,43383,43461,43514,43571,43622,38775,43727,37872,26048,59986,48995,50587,43815,45229,43893,43966,59711,44044,44095,71632,44151,44223,44306,61516,44366,44439,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,51178,45328,44497,25348,62514,44571,44602,44698,44632,64126,59516,61967,61967,43339,43324,26535,44730,34877,44812,42739,74169,42756,61967,21098,23677,57958,59141,55717,44874,44877,73292,45145,60675,45179,33586,31305,61967,61967,23060,61967,44909,59141,59141,44946,52984,52984,45022,45145,45145,45090,45179,45180,50599,31344,61967,61967,23063,64117,25397,72876,59141,35138,72356,52984,35822,45145,45144,47967,45179,45178,58891,61967,61967,61967,45212,59141,61245,34770,52984,35200,31422,45145,45277,45179,59465,64222,61967,61967,73614,59141,73537,52984,39346,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,45322,32088,33808,52287,37755,53634,45360,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,45400,45496,45554,45632,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,22633,61967,73090,45695,45716,45748,45779,61967,59516,61967,58581,61967,61967,25386,70359,33542,35954,59106,74169,61967,61967,45831,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,61967,61967,61967,36815,55188,59141,59141,71414,52984,52984,55959,45145,45145,42027,45179,45179,49730,61967,31934,74576,68206,61967,45869,63370,59141,35138,36928,52984,35822,63942,45145,47967,53519,45179,34924,61967,63249,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,66882,45907,59141,47029,52984,49058,45145,27213,45179,48216,45943,42315,46021,71814,46090,46163,60837,46218,46315,19972,21122,46371,46469,46528,46580,65851,56815,46680,46730,56489,46791,46846,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,46927,46902,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,46759,61967,46959,61967,23764,29839,23331,47009,47061,47129,72801,61967,50682,51133,63558,61967,61967,25392,59141,47210,52984,26113,45145,65189,36983,45179,47262,67359,61967,61967,61967,54284,65706,59141,59141,49630,52984,52984,35211,45145,45145,55054,45179,45179,37467,24679,61967,61967,61967,23200,68018,59141,59141,36165,52984,52984,36289,45145,45145,35333,45179,45179,49739,61967,73744,61967,31517,59141,53759,46635,52984,26985,19712,45145,35319,45179,71373,49738,61967,48906,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,70672,40537,59141,50201,41956,53634,45179,65296,50129,68862,67432,45046,47315,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,68217,45328,74693,74678,30929,47371,47403,47485,47433,61967,33699,61967,22340,47517,43262,47623,47678,47738,64840,61967,32571,70485,47818,61967,47854,39738,49620,47925,47999,41147,38696,48070,48148,48204,48248,40417,49398,57662,48301,48335,59688,37703,52883,48407,62897,33278,48482,63058,66341,60365,69403,41599,48554,61967,61967,48631,48687,61967,63187,52035,68814,46400,64057,58479,48733,72392,46437,47706,63796,25758,48795,64755,48848,48880,48949,63657,37135,49042,34282,49090,30521,49165,49244,55096,49317,49371,49430,40121,49513,49593,49662,49771,69630,49831,38004,49942,43174,49974,44666,50017,50049,64416,70861,70987,41427,60737,24104,27348,59141,50201,41956,53634,45179,69465,46870,44119,60815,44761,50105,50184,53833,42237,47591,50235,50335,41957,55454,33401,34463,50378,50476,26222,26197,50529,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,73792,45328,61967,61967,73090,22589,44012,50631,50662,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,72319,67753,52984,50714,45145,48116,36983,59064,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,31554,45328,61967,61967,73090,22589,25523,31221,45429,61967,59516,19983,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,36607,61967,61967,61967,61967,73483,59141,59141,41129,52984,52984,38753,45145,45145,56129,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,19234,45328,50303,66566,50746,50775,50796,50828,50859,62276,59516,20856,58581,20933,23823,26310,50911,51025,68602,51165,30975,41036,51210,60514,32701,51265,51368,51427,51481,51527,51559,59764,43148,51632,51693,60460,61967,74328,24433,61967,73613,44334,46283,68455,49799,46131,36198,25896,66788,62981,51755,43695,65598,61967,51825,43086,48599,61967,25397,25440,69836,35138,63904,37394,35822,45145,51871,47967,45179,51903,49739,34571,31189,61967,31517,41354,59141,46635,51935,52984,61099,45145,53636,42190,45179,49738,51972,34579,35749,52025,63478,52067,52202,27199,27023,52110,71340,37948,61967,52157,46270,40803,41951,37808,44274,45368,32362,32088,59141,52195,49116,65552,35021,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,52234,65968,57194,52266,52364,52339,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61968,45328,67360,52396,38499,52429,52460,52556,52490,62403,59516,48375,61967,62398,24754,37633,66396,52588,52672,61967,52766,25088,36885,61967,30596,52827,53355,52915,52982,53018,65538,46548,53050,53187,53120,53219,53295,61967,52734,61967,73613,35392,53344,65487,37373,53387,69268,39157,42921,42027,53429,53512,49730,40967,31637,22594,25049,61967,46698,59141,53551,70734,53594,46117,37193,53628,66323,47967,53668,41452,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,53706,61967,31518,53753,67413,41951,53791,69776,45368,61967,32088,59141,50201,53827,38831,58320,56815,39725,25715,41958,47966,34066,50346,65910,45112,49886,53865,25698,41957,55454,33401,34463,45245,53921,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,53974,22305,54043,54096,54128,54159,54241,54189,72930,39856,54273,21006,22797,54316,54348,54410,54543,54605,62497,61005,50879,47545,56426,37076,54683,54738,67753,54770,55310,42428,35833,46186,68665,54819,64899,54881,61967,72837,61967,67016,54950,58717,65487,54996,25625,69268,55042,71226,42027,55086,55128,49730,61967,61967,61463,26861,55168,55220,59141,55262,58644,52984,55342,48432,45145,21256,55421,45179,59455,55486,55559,55625,38475,55680,55749,55857,43539,55925,55991,27700,56056,56115,54472,56161,68353,73974,52795,49481,37685,56237,59357,56309,62684,56366,53088,54573,56398,61967,74387,50152,56458,49693,38644,56083,56558,56627,70421,56666,59905,56739,44254,56771,49271,56852,56902,54787,45290,46814,26482,56964,61612,67127,57019,69570,58223,39570,33401,34463,61516,57051,57083,26197,57163,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,57248,63325,57336,73090,57374,57405,57467,57435,57499,19324,57569,20778,57635,57728,57805,57878,57910,57990,73755,58069,23693,22104,54004,32235,25392,58171,58255,60004,49910,61322,73267,58308,58352,58405,38414,61967,58511,58571,66547,58615,58693,58762,40685,58804,58923,43590,58964,59018,68269,39228,59058,39796,59096,60104,61967,61967,24202,25397,66700,59140,35138,33261,59174,35822,48522,47089,47967,73355,59210,49739,61967,59250,61967,31517,59141,59141,59340,52984,51940,59389,45145,40606,45179,45179,52618,42295,61967,51839,55230,63869,65149,72175,30529,45146,59427,45179,59497,61967,45911,63422,34145,44407,34395,56987,45368,59566,32088,59141,50201,41956,53634,45179,56577,47339,73498,67679,58870,53889,70446,59600,59658,39593,59796,25698,41957,55454,33401,34463,61516,59884,64496,26197,59937,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,32327,61967,60036,60076,60173,60204,60235,60267,22836,59516,61967,34700,40956,61967,27363,60334,58986,60433,56595,74169,22999,49460,32413,61967,43482,50073,51289,60546,51449,60601,60652,60707,60387,60788,60869,60910,31137,60996,61967,73613,59141,55809,65487,52984,67662,69268,45145,66019,42027,45179,39215,49730,61037,61967,20949,24449,31919,25397,61231,59141,32841,64341,52984,40595,58849,45145,47967,34903,45179,49739,55579,61967,68732,31517,59141,61277,67644,70519,52984,61316,21266,53636,45179,37454,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,60130,65237,59141,50203,41951,45145,50986,55136,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,67868,61354,31273,61435,61505,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,45429,61967,59516,61967,61548,42760,41769,45799,69947,61582,38901,61672,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,53721,61967,61967,61967,73613,59141,59141,73207,52984,52984,53397,45145,45145,42027,45179,45179,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,61706,46635,35145,52984,19712,71458,53636,45179,61745,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,64983,50497,41956,61785,54498,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,22692,61967,33191,33209,61837,61864,61896,61927,22745,62820,19946,40862,64737,62e3,62066,62154,62186,62218,43781,54011,62318,62435,54906,73915,62546,62583,62645,58446,39482,50942,39390,45584,62716,62748,67359,72280,62801,40502,62780,47568,62852,59141,62943,63013,52984,63103,70927,25300,63135,35900,37028,63219,61967,66641,32664,61967,63288,63357,63402,63469,49543,51313,63510,63038,69345,51585,64202,49339,32943,49739,63554,32018,63590,39286,63644,63689,62122,63723,52984,27170,73307,53636,43679,63791,53480,25171,63828,66889,63862,33820,63901,58932,63936,59026,63974,25265,56820,64014,57603,59141,64050,48038,71305,53178,33985,73658,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,48172,71172,51723,64089,33390,47959,46247,64158,64254,33401,34463,61516,64313,64390,64471,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,63612,64557,64528,64589,64618,64650,64681,64713,60478,32760,33131,61967,43406,44842,43429,64787,39544,64872,64944,33335,48584,61967,53263,54635,65031,52850,25570,65112,44877,34377,65181,67214,41470,33586,58017,24695,65221,45449,24088,73613,69860,59141,58730,57131,52984,55010,67270,45145,49010,65269,45179,40750,61967,65339,24869,65418,43075,65478,25226,67619,41941,52986,52307,62670,45145,65519,65584,45179,65630,65679,52722,19637,20650,68e3,59141,65749,46635,73129,65795,19712,66033,53636,45179,65833,49738,73050,69509,73614,64999,65883,68939,46496,63071,42154,69414,53075,56820,22506,57757,59141,50203,41951,45145,50986,59218,60287,67507,63691,50201,42409,51600,50993,56188,21836,65763,58661,49212,51108,57773,65942,50266,33390,47959,40667,66e3,66065,66124,66189,66277,66373,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,21376,61967,23495,23513,66428,66459,66490,66522,38306,66614,40006,22557,30149,35656,66673,66742,66820,66852,66921,22075,66991,51233,67071,57278,57304,54706,67159,68149,54849,67191,67246,34043,67302,67392,67479,74237,67539,61967,58539,67592,67711,56694,66220,67785,56265,71202,56340,38119,50408,67844,67900,67941,30770,55648,68068,68181,59534,56870,67739,33449,62613,48020,57846,66245,68249,42930,68301,68333,63982,68385,69687,51993,61967,68417,68487,71788,74412,47230,68519,30055,42548,43651,68572,68634,42684,68705,54651,68774,68846,58772,68894,73433,66303,68971,53459,69053,56820,69153,64912,38193,69234,69300,69326,69377,69446,69497,67100,45663,53942,53151,71012,69541,43050,29244,69602,60569,72779,69662,25709,53833,34510,33390,47959,25698,64358,65647,69730,69808,69892,69924,26222,26197,69979,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,53312,61967,70050,73090,70088,70119,70215,70149,61967,22468,60496,41027,24192,61967,66959,70247,70307,70391,70478,74169,61967,31818,60928,48303,35765,59141,64281,70517,25637,48506,45145,70551,45179,70576,69110,70608,39026,49985,70664,61403,55893,70704,63437,51495,70832,70893,52950,70959,64818,40734,71064,71142,61473,66582,61967,61967,71268,62551,59141,59141,54378,52984,52984,63748,71302,45145,47967,71337,45179,58373,19649,61967,61967,32140,59141,59141,48974,52984,52984,27826,45145,53636,71372,45179,26165,61967,58119,56634,71405,61713,44397,34783,71446,38130,71490,41542,71536,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,71601,55389,37545,35266,25709,53833,34510,33390,47959,25698,41957,32959,71687,71760,61516,69e3,71871,71846,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,31085,71952,71903,22895,71940,46977,71984,72015,61967,59516,61967,61967,61967,61967,65717,44465,72067,44780,36104,30823,61967,61967,61967,72138,25803,59142,67753,72171,65080,59747,37204,71655,45179,72207,67359,61967,61967,72276,61550,73613,59141,72312,65487,52984,72351,69268,45145,72388,42027,45179,72424,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,52397,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,72458,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,60756,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,22964,61967,72496,72530,72590,72621,72652,72684,61967,59516,61967,61967,61967,61967,25386,72751,60620,69083,61967,74169,61967,61967,31070,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,72833,61967,72869,59141,59141,44181,52984,52984,62968,45145,45145,30076,45179,45179,49739,23368,61967,61967,31517,73394,39061,46635,72244,42070,19712,36314,49133,53674,45179,72908,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31685,61967,45328,61967,61967,73090,22589,25523,31221,45429,61967,18574,70183,61967,47822,26584,47453,45522,72962,44780,61967,23596,23420,73040,61967,61967,25392,23163,58202,26940,62911,45145,36684,36983,50444,47157,73082,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,35683,61967,25397,55825,59141,73122,46648,52984,46426,71236,45145,47967,67909,45179,49739,73161,61967,61967,31517,73198,59141,21922,52984,52984,21232,45145,53636,61185,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,22589,25523,31221,70763,61967,59516,37581,61967,61967,61967,64966,73239,36374,43234,59108,74169,61967,61967,61967,64018,25392,59141,65058,52984,63522,45145,45145,73339,45179,34124,52699,61967,61967,61967,31152,73613,55703,53562,65487,36186,56277,69268,66146,37821,42027,72097,60401,49730,19527,61967,61967,61967,61967,25397,73387,59141,57834,73426,52984,44971,56515,45145,42174,72992,45179,49739,61967,61967,61967,73465,59141,73530,46635,39099,52984,19712,66157,53636,45179,41533,49738,61967,57590,73614,59141,61284,52984,59178,45145,45146,45179,45179,73569,72139,44914,59141,57109,44191,45145,33969,45368,61967,73609,66710,69021,41956,69756,61199,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,31184,61967,45328,61967,61967,73090,73646,25523,31221,45429,61967,59516,61967,61967,61967,61967,25386,70359,33542,44780,61967,74169,61967,61967,61967,61967,25392,59141,67753,52984,44877,45145,45145,36983,45179,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31018,73719,69179,73690,73787,69202,73824,73856,61967,59516,61967,73908,61967,61967,55527,21623,36828,19508,18606,18665,61967,70169,30458,18726,18778,19038,73947,18928,19004,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31390,61967,71562,71569,74031,74114,24997,74062,61967,59516,61967,74619,61967,74163,38964,19522,24885,19508,18606,18665,61967,70169,30458,18726,18778,19038,18896,18928,18960,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,29992,61967,61967,21447,74201,74220,22416,74269,61967,59516,61967,74321,23436,61967,41694,19522,55520,19508,18606,18665,61967,70169,30458,18726,18778,19038,74360,18928,74444,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,21595,21655,21713,21687,21745,21777,19818,21809,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,22337,61967,31390,61967,61967,73090,22589,61967,61967,74507,61967,59516,61967,61967,61967,61967,25386,70359,33542,44063,61967,74169,61967,61967,61967,61967,25392,59141,46058,52984,34317,45145,45145,36983,45179,33586,67359,61967,61967,61967,61967,73613,59141,59141,65487,52984,52984,69268,45145,45145,42027,45179,45179,49730,61967,61967,61967,61967,61967,25397,59141,59141,35138,52984,52984,35822,45145,45145,47967,45179,45179,49739,61967,61967,61967,31517,59141,59141,46635,52984,52984,19712,45145,53636,45179,45179,49738,61967,61967,73614,59141,61284,52984,59178,45145,45146,45179,45179,56820,61967,31518,59141,50203,41951,45145,50986,45368,61967,32088,59141,50201,41956,53634,45179,56815,39725,25715,41958,47966,35266,25709,53833,34510,33390,47959,25698,41957,55454,33401,34463,61516,69e3,26222,26197,25989,26254,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,62021,61967,25189,74559,39893,74608,61967,61967,61967,74619,61967,61967,55527,19522,55520,19508,18606,74658,61967,70169,30458,18726,18778,19038,73947,18928,19004,18916,18992,48655,19036,19070,19146,19231,58583,74082,19266,19356,74753,19443,19917,18745,27106,74847,18746,27107,30883,74757,19492,19559,36556,19613,19681,19750,24509,29432,20022,19387,19791,30215,19854,61068,30211,19850,19886,20015,20054,19411,21982,20146,20198,19175,20445,20283,20364,30300,20403,20371,30307,20410,20442,20477,20310,20555,20624,28313,28345,20693,20725,20757,20722,20810,28340,20888,19581,20981,21038,18850,21154,21201,21169,18833,18864,18694,21298,21330,21509,21408,21531,21479,21563,74725,21655,21713,21687,74789,21777,19818,74821,20837,55524,20506,21868,20523,21954,22014,22046,22136,22208,22240,22272,22302,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,61967,1,24578,3,0,0,0,0,0,0,0,180525,180525,180525,180525,0,188718,188718,188718,180525,180525,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,0,188718,180525,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,139264,147456,188718,188718,188718,188718,131072,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,188718,368,188718,180525,188718,188718,188718,188718,188718,1,24578,3,0,0,4366336,0,0,0,180525,188718,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,368,0,0,0,0,705,0,0,0,0,0,0,0,0,0,0,0,0,4857856,4874240,0,0,4923392,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5480448,0,0,0,0,0,0,0,0,0,0,6299648,0,0,0,0,0,0,0,0,0,0,0,0,2088,0,0,0,4825088,0,0,0,0,0,0,0,0,0,5840896,5849088,0,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,0,0,5898240,5963776,0,0,6193152,0,0,5406720,6397952,5300224,5234688,5423104,0,0,0,0,5988352,0,0,6135808,6307840,0,5996544,4800512,0,5259264,0,5414912,5447680,0,0,5562368,5636096,5685248,0,5750784,5873664,0,0,0,0,5636096,5873664,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5177344,0,0,0,0,0,5242880,0,0,0,0,0,0,0,5341184,0,0,5873664,0,0,0,0,0,0,0,5480448,4358144,4358144,4358144,4358144,4857856,4874240,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5259264,4358144,4358144,4358144,915,915,915,0,0,0,0,0,0,5029888,5038080,0,0,5103616,5201920,0,0,0,0,0,0,0,0,0,0,0,0,0,6406144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4997120,4358144,4358144,5038080,4358144,4358144,4358144,5095424,5103616,4358144,4358144,5201920,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5890048,4358144,4358144,4358144,6029312,4358144,4358144,4358144,4358144,6160384,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6406144,4358144,4358144,4358144,0,0,0,4890624,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6275072,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,916,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,0,0,0,0,0,0,5259264,0,0,0,0,0,0,0,0,5414912,0,5447680,0,5464064,0,5480448,5562368,0,0,0,5636096,0,5685248,0,0,5750784,0,0,0,0,0,5873664,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,0,992,0,5464064,0,5480448,5562368,0,0,0,5636096,0,5685248,0,0,5750784,0,0,0,0,0,5873664,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5414912,4358144,5447680,4358144,5464064,4358144,5480448,5562368,4358144,4358144,4358144,5636096,4358144,5685248,4358144,4358144,5750784,4358144,4358144,4358144,4358144,4358144,5873664,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6275072,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4923392,4358144,4358144,4358144,4358144,4358144,0,4923392,0,0,0,0,0,0,0,0,0,450560,450560,0,0,450560,450560,450560,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,825,0,0,0,0,0,0,0,0,0,0,0,4366336,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5242880,0,0,0,0,0,0,0,0,6283264,6332416,0,0,0,5881856,0,5382144,0,0,0,0,0,0,6266880,4784128,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,0,0,0,368640,0,0,0,0,0,5603328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,340,341,0,0,0,4759552,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4825088,0,0,5177344,0,0,0,0,0,0,0,649,0,0,0,0,0,0,820,0,0,0,0,0,0,0,0,0,0,0,0,0,649,0,0,0,0,0,0,0,692,0,0,0,0,0,0,699,368,368,368,0,0,0,0,0,0,0,0,0,0,0,712,0,0,0,5701632,0,0,0,0,0,0,0,0,0,0,5808128,0,0,0,0,4792320,4833280,0,0,5701632,0,0,0,0,0,4358144,4358144,4358144,4825088,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6119424,4358144,6168576,4358144,4358144,4358144,4358144,6242304,4358144,6291456,4358144,6316032,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6463488,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,0,0,0,0,0,0,0,4956160,4964352,0,5341184,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5627904,5652480,4358144,5701632,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,0,0,0,0,303,0,304,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5627904,5652480,4358144,5701632,4358144,4358144,5808128,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2314,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6299648,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,0,0,0,5029888,5038080,0,0,5103616,5201920,0,0,0,0,0,0,0,0,0,0,0,0,0,6406144,5570560,5578752,0,5668864,0,0,5791744,0,0,0,0,0,0,0,0,0,6201344,6242304,6250496,0,0,0,0,6422528,0,0,0,0,0,0,0,0,0,0,0,2813,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2800,0,0,0,0,0,0,0,0,0,0,0,5619712,0,0,0,0,0,0,0,5726208,5758976,0,0,5791744,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6152192,0,0,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60689,57917,57917,0,0,6316032,0,0,0,0,5816320,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139264,147456,0,0,320,0,4358144,4358144,6463488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4931584,4939776,0,0,0,0,0,0,5054464,0,0,0,0,0,0,0,0,0,0,6324224,0,0,5005312,0,0,0,512e4,5136384,0,0,0,0,0,0,0,0,0,0,6324224,4358144,4358144,0,0,0,5791744,5816320,0,5857280,0,0,0,0,0,0,0,0,0,0,0,0,0,6119424,0,6168576,0,0,0,0,0,6242304,0,6291456,0,6316032,0,0,0,6316032,0,0,0,0,0,0,0,0,0,6463488,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4931584,4939776,4358144,4358144,4358144,4358144,4358144,4358144,5054464,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6299648,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,4825088,0,0,0,0,0,0,0,722,0,724,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,741,0,0,0,0,0,0,0,0,0,0,3669,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,739,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5210112,4358144,4358144,4358144,4358144,5292032,4358144,4358144,4358144,4358144,5365760,4358144,4358144,4358144,5455872,4358144,4358144,4358144,4358144,4358144,5554176,5570560,5578752,5619712,5668864,4358144,4358144,4358144,5791744,5816320,4358144,5857280,4358144,4358144,4358144,5791744,5816320,4358144,5857280,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6119424,4358144,6168576,4358144,4358144,4358144,4358144,4358144,6242304,4358144,6291456,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6299648,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,915,915,915,4826003,915,915,915,915,915,915,6464403,0,0,0,0,991,991,991,991,991,991,991,991,991,991,991,4932575,4940767,991,991,991,991,991,991,5055455,991,0,0,0,0,6184960,5316608,0,0,5644288,0,0,0,0,0,0,0,0,0,0,6217728,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,368,0,0,0,303104,0,0,0,0,0,0,0,0,0,0,5390336,5308416,5488640,0,0,0,0,0,0,0,0,0,5070848,5431296,0,6430720,0,5160960,0,0,0,0,0,0,0,0,0,0,0,4784128,0,0,0,0,0,0,0,245760,0,0,0,245760,0,0,245760,245760,245760,0,0,0,0,0,245760,0,245760,245760,0,0,0,245760,245760,0,0,0,0,0,0,245760,0,0,0,0,0,0,245760,0,0,245760,0,0,245760,0,0,245760,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5799936,4358144,4358144,5881856,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6103040,4358144,4358144,4358144,6184960,4358144,4358144,6283264,4358144,4358144,6332416,4358144,4358144,4358144,6389760,4358144,4358144,6430720,6438912,4358144,4358144,4358144,6266880,6488064,0,0,0,6266880,6488064,0,0,0,0,0,0,0,0,0,0,0,0,344064,0,0,0,0,0,0,0,0,0,0,0,0,0,139264,147456,0,0,344064,0,4358144,4358144,6389760,4358144,4358144,6430720,6438912,0,0,0,0,0,0,4784128,0,0,0,4849664,0,0,0,0,0,4915200,0,4956160,4972544,0,0,0,0,0,0,5070848,0,0,0,0,0,0,0,5881856,0,0,0,0,0,0,0,0,0,6103040,0,0,0,6184960,0,0,0,6283264,0,0,6332416,0,0,0,6389760,0,0,6430720,6438912,4784128,4358144,4358144,4358144,4849664,4358144,4358144,4358144,4358144,4358144,4915200,4358144,4956160,4972544,4358144,4358144,4358144,4358144,4358144,4358144,5070848,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5218304,4358144,5267456,4358144,4358144,5308416,5316608,4358144,4358144,4358144,5431296,4358144,5488640,4358144,4358144,5488640,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5799936,4358144,4358144,5881856,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6103040,4358144,4358144,4358144,6184960,4358144,4358144,4358144,0,5013504,0,0,6053888,0,0,0,0,0,0,0,0,6012928,4358144,4358144,5013504,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6053888,4358144,4358144,4358144,0,0,0,0,5193728,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,5660672,5718016,0,5865472,0,0,0,0,6078464,0,0,6340608,0,6455296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,327,328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,581632,0,0,0,0,0,0,0,0,0,0,0,581632,0,0,0,0,0,6037504,6111232,0,0,0,5472256,0,0,0,6209536,0,0,0,0,0,0,0,0,0,0,0,6176768,0,0,0,0,0,0,0,0,0,0,2840,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2850,0,0,0,0,0,2855,0,5824512,5865472,4358144,4358144,5922816,4358144,4358144,6021120,4358144,6037504,4358144,4358144,6078464,6111232,4358144,6176768,6209536,6234112,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,4841472,0,0,0,4898816,0,0,0,0,0,0,0,0,0,0,0,5111808,0,0,0,0,0,5283840,0,0,0,0,5472256,5521408,0,0,0,0,5595136,5709824,5718016,0,5824512,5865472,0,0,5922816,0,0,6021120,0,6037504,0,0,6078464,6111232,0,6176768,6209536,0,6234112,0,0,0,0,0,0,0,0,0,0,0,0,647,757,0,759,0,761,762,676,0,0,766,767,0,0,0,0,0,0,0,0,0,5595136,5709824,5718016,0,5824512,5865472,0,0,5922816,0,0,6021120,0,6037504,0,0,6078464,6111232,0,6176768,6209536,0,6234112,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,731,0,0,0,0,0,0,0,0,0,742,0,0,0,0,742,4358144,4358144,5595136,5709824,5718016,4358144,5824512,5865472,4358144,4358144,5922816,4358144,4358144,6021120,4358144,6037504,4358144,4358144,6078464,6111232,4358144,6176768,6209536,4358144,6234112,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,1066,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,662,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2356,0,0,0,0,0,0,0,0,0,0,0,5357568,0,5505024,0,0,0,0,0,5890048,0,0,0,6160384,0,5095424,5349376,0,5275648,0,0,0,0,0,0,4997120,0,0,0,0,0,0,0,0,0,0,755,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,776,0,0,0,5947392,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6471680,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4997120,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6299648,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,1988,0,0,0,4825088,0,0,0,0,0,0,0,1287,0,0,0,0,0,0,0,0,0,0,0,0,0,1299,0,1177,0,0,0,0,0,0,0,0,0,0,0,3689,0,0,0,0,0,0,0,3696,0,0,0,0,0,0,0,0,0,0,0,529,4358144,4358144,4358144,4358144,6406144,0,0,0,0,0,0,0,0,4997120,0,0,5038080,0,0,0,5095424,5103616,0,0,5201920,0,0,0,0,0,0,0,0,0,0,0,5890048,0,0,0,6029312,0,0,0,0,6160384,0,0,0,0,0,5890048,0,0,0,6029312,0,0,0,0,6160384,0,0,0,0,0,0,0,6406144,0,0,0,0,0,0,0,0,4997120,0,0,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60363,57917,57917,57917,57917,57917,57917,57917,57917,57917,59997,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60389,57917,57917,57917,57917,57917,57917,57917,57917,0,6356992,0,0,0,0,0,0,0,0,5496832,0,0,0,0,0,5611520,0,0,0,0,0,4947968,5021696,5529600,0,0,5169152,0,0,0,4800512,4808704,4358144,4358144,4890624,4358144,4947968,4358144,4358144,4358144,5046272,4358144,4358144,4358144,4358144,5185536,4358144,5234688,5300224,4358144,4358144,5406720,5529600,4358144,4358144,4358144,5898240,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,491520,0,0,0,0,0,0,0,0,0,0,0,0,0,0,357,358,359,360,0,0,0,0,0,0,0,0,0,368,0,297,0,0,0,0,5898240,0,0,0,0,0,0,0,0,6307840,0,0,6356992,6381568,6397952,4800512,4808704,0,0,4890624,0,4947968,0,0,0,5046272,0,0,0,0,0,0,0,0,0,557056,557056,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2359296,420,420,0,0,0,0,4358144,4947968,4358144,4358144,4358144,5046272,4358144,4358144,4358144,4358144,5185536,4358144,5234688,5300224,4358144,4358144,5406720,5529600,4358144,4358144,4358144,4358144,5898240,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6307840,4358144,4358144,6356992,6381568,6397952,4800512,4808704,0,0,4890624,0,4947968,0,0,0,5046272,0,0,0,0,5185536,0,5234688,5300224,0,0,5406720,5529600,0,0,0,0,5898240,0,0,0,0,0,0,0,0,6307840,0,0,6356992,6381568,6397952,4800512,4808704,4358144,4358144,4890624,4358144,4358144,6356992,6381568,6397952,5021696,4358144,4358144,5021696,0,0,0,4980736,0,0,0,0,0,5373952,5734400,6045696,0,6258688,6447104,0,0,6127616,0,6348800,5906432,0,5537792,3681,4882432,0,0,0,0,0,0,0,0,5939200,0,0,5677056,6365184,4866048,0,6070272,5545984,5152768,0,0,6144e3,4358144,4866048,4882432,4358144,4980736,4358144,4358144,4358144,4358144,4358144,0,916,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,992,0,0,4358144,4358144,4358144,4358144,5324800,5373952,5537792,5545984,5734400,5971968,4358144,6045696,4358144,6070272,4358144,4358144,4358144,6348800,0,4866048,4882432,0,4980736,0,0,0,0,0,0,0,0,5324800,5586944,5734400,5971968,0,6045696,0,6070272,0,0,0,0,6348800,4358144,4866048,4882432,4358144,4980736,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5324800,5373952,5537792,5545984,5586944,5734400,5971968,0,6045696,0,6070272,0,0,0,0,6348800,0,4866048,4882432,0,4980736,0,0,0,0,0,0,0,0,5324800,5373952,5537792,5545984,4358144,6045696,4358144,6070272,4358144,4358144,4358144,4358144,6348800,4358144,6144e3,0,6144e3,0,4988928,5005312,0,0,0,0,5775360,0,0,0,3681,0,0,0,0,0,0,5693440,0,6496256,5144576,5136384,0,5914624,4358144,4358144,5005312,4358144,4358144,4358144,512e4,5136384,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6324224,0,0,5005312,0,0,0,512e4,5136384,5005312,4358144,4358144,4358144,512e4,5136384,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6324224,5914624,5914624,0,0,0,0,0,5513216,5783552,0,3681,0,0,0,0,0,0,3839,0,0,0,0,3843,0,0,0,0,0,0,0,0,3846,0,529,529,529,3848,529,529,529,3851,529,0,0,5013504,0,0,0,0,0,0,0,0,0,6053888,0,0,0,0,0,5013504,0,0,0,0,0,0,0,0,0,6053888,0,0,0,0,0,0,0,806,0,0,0,0,0,0,806,0,529,529,529,529,529,529,529,529,874,529,529,529,529,529,529,529,0,0,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60296,57894,5193728,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,5193728,0,0,0,0,0,0,0,0,0,0,0,0,0,5193728,0,0,0,0,0,0,0,0,0,5218304,0,0,0,0,5799936,0,5881856,0,0,0,0,0,0,0,0,6373376,6389760,0,0,6488064,6103040,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,5193728,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4907008,0,5079040,6094848,5742592,0,0,0,0,0,4358144,4907008,4358144,5079040,4358144,5226496,4358144,5742592,4358144,4358144,4358144,6094848,0,4907008,0,5079040,0,5226496,0,5742592,0,0,0,6094848,0,0,4907008,0,5079040,0,5226496,0,5742592,0,0,0,0,0,0,0,1194,0,0,0,1198,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,0,1202,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1275,0,0,0,1279,6094848,0,4358144,4907008,4358144,5079040,4358144,5226496,4358144,5742592,4358144,4358144,4358144,6094848,4358144,5062656,0,0,0,0,0,4358144,5062656,4358144,4358144,4358144,4358144,4358144,0,5062656,0,0,0,0,0,0,0,352256,0,352256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1273,0,0,0,0,0,0,0,0,0,6225920,0,5062656,0,0,0,0,0,6225920,4358144,5062656,4358144,4358144,4358144,4358144,4358144,6225920,0,6086656,0,0,0,4816896,4358144,4358144,4358144,4358144,6086656,4816896,0,0,0,0,6086656,4816896,0,0,0,0,6086656,4816896,4358144,4358144,4358144,4358144,6086656,0,5087232,0,5931008,4358144,5332992,5980160,4358144,0,5332992,5980160,0,0,5332992,5980160,0,4358144,5332992,5980160,4358144,0,5439488,5128192,4358144,5128192,0,5128192,0,5128192,4358144,0,4358144,0,0,4358144,0,4358144,0,0,4358144,0,4358144,0,0,4358144,6004736,6004736,6004736,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,386,0,0,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,774,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,221654,221654,221654,470,470,470,470,470,470,470,470,470,470,470,221654,470,221654,221654,221654,470,221654,221654,221654,221654,221654,221654,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2359296,0,2359296,0,0,0,2359296,0,2359296,2359296,2359296,2359296,221654,221654,221654,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,368,0,703,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,425984,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3455,0,0,0,0,0,0,0,0,0,0,0,0,0,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,237568,303,0,307,237568,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,760,0,0,0,0,0,0,0,0,0,770,0,0,0,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2364,0,0,0,114688,0,0,0,0,0,4268032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,383,0,0,0,0,307,0,0,4857856,4874240,0,0,4923392,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5480448,0,0,0,0,0,0,0,0,0,352,353,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,0,297,0,0,4210980,24578,3,0,0,298,0,0,0,0,298,0,0,0,0,0,0,0,0,0,245760,0,0,0,0,0,0,0,0,0,0,0,0,665,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,681,682,0,0,245760,245760,0,4210980,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,664,0,794,0,0,0,0,0,0,0,798,0,0,0,0,807,0,0,746,0,0,0,0,4268032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,680,0,0,0,0,0,1160,0,4857856,4874240,0,0,4923392,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5480448,0,0,0,0,0,0,0,0,0,378,0,363,0,0,0,0,0,0,0,0,0,363,0,0,0,0,139264,147456,0,0,0,0,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,262144,0,0,0,0,0,0,0,0,0,0,0,0,376832,0,376832,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,364,365,366,367,0,0,368,0,297,0,0,0,262144,262144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1244,0,0,0,0,0,0,262144,0,262144,262144,0,0,0,0,0,0,0,0,0,0,0,262144,262144,0,262144,0,0,0,139264,147456,262144,0,0,0,0,0,0,0,1829,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,262144,0,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,262739,0,262739,0,0,262739,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,702,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1390,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,0,0,0,278528,278528,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2417,0,0,0,0,0,0,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,278528,0,278528,278528,0,131072,278528,0,0,0,278528,0,0,0,0,0,0,278528,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,317,0,0,0,0,0,0,0,0,0,0,0,0,0,0,278528,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,771,0,0,771,0,0,0,0,0,771,771,0,830,0,0,0,0,0,0,0,0,418,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2803,0,0,0,0,0,0,1,24578,3,0,0,4366336,0,0,0,0,0,303,639,0,4268032,307,642,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1230,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2351104,0,0,0,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6275072,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,1433,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,0,0,402,0,0,0,0,0,0,0,0,0,0,0,0,402,0,0,0,0,0,0,0,0,0,0,0,413,359,0,0,402,0,0,0,0,0,139264,147456,402,413,0,426,0,5750784,0,0,0,0,0,5873664,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,0,1528,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,286720,304,0,308,286720,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1203,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,0,0,308,0,0,0,0,0,0,0,0,0,0,0,0,308,0,0,0,0,0,0,308,139264,287141,0,0,0,308,1,24578,3,0,0,4366336,0,0,0,0,0,303,66176,0,4268032,307,98947,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1317,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1235,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,308,0,308,0,0,0,0,122880,0,4268032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,771,0,0,0,0,307,0,308,4857856,4874240,0,0,4923392,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5480448,0,0,0,0,0,0,0,0,0,662,0,0,0,0,0,0,0,0,0,662,0,0,662,0,0,0,828,0,0,0,662,0,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,305,305,305,0,0,305,305,295217,305,305,305,305,305,305,305,305,305,295217,305,295217,295217,295217,295217,295217,295217,295217,305,0,305,0,305,305,305,295217,305,305,305,295217,295217,305,295217,305,305,305,305,305,295286,295217,295217,295217,295217,295217,295217,305,305,305,305,305,305,295286,295217,295217,295217,305,305,305,295286,139264,147456,295217,295217,305,305,305,305,305,295217,374,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,369,305,0,295217,305,295217,305,295217,305,131072,305,305,305,305,295217,305,305,305,305,305,305,295217,305,295217,295217,295217,305,305,305,305,305,305,305,305,305,305,305,305,305,295217,295217,295217,295217,295217,295217,305,305,305,305,295217,305,305,305,305,305,305,305,305,305,295217,305,295217,295217,295217,295217,295217,295217,295217,295217,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295286,295217,295217,295217,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1749,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3673,3674,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5840896,5849088,0,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,4399804,4399804,0,0,0,0,0,0,0,1829,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1842,0,0,0,0,0,0,0,0,0,703,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2415,0,0,0,0,0,0,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319488,0,0,0,0,0,0,0,0,0,0,0,2841,0,0,0,0,2843,0,0,0,0,0,0,0,0,0,2852,0,0,0,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,319488,0,0,0,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,319488,0,0,0,0,319488,0,0,0,0,0,0,0,0,0,0,319488,0,0,0,319488,0,0,0,0,0,0,0,0,0,0,319488,0,0,0,0,0,0,0,0,0,319488,0,0,0,0,319488,0,0,0,0,0,319488,319488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,450560,450560,0,0,0,0,319488,319488,319488,0,24578,3,0,0,4366336,253952,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1832,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2382,0,0,0,0,2387,0,0,0,0,0,0,0,0,0,0,0,5840896,5849088,0,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,368,0,0,0,0,0,0,0,0,0,5857280,0,6463488,4939776,0,0,5455872,0,0,0,0,0,0,0,0,6062080,6463488,0,5398528,0,0,0,6479872,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,327680,0,0,0,0,0,0,0,0,0,0,1168,0,0,0,0,0,0,0,0,0,1178,0,0,0,0,0,0,0,1185,0,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,327680,327680,327680,0,0,0,0,0,0,0,0,0,0,327680,49724,0,0,0,0,0,0,0,49724,49724,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,327680,327680,327680,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2302,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1780,0,0,0,0,0,0,0,0,0,0,0,327680,327680,327680,327680,327680,327680,335872,327680,327680,327680,335872,327680,327680,327680,327680,327680,327680,0,0,0,0,0,0,0,0,0,49724,0,0,0,0,0,0,0,0,0,663,0,0,0,0,0,0,0,0,0,663,0,0,663,0,0,0,0,0,0,0,663,0,0,5750784,0,0,0,0,0,5873664,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,49152,992,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,344064,344064,344064,0,0,0,0,0,0,0,0,0,0,344064,344064,344064,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2319,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2326528,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,352256,0,0,0,0,0,0,0,0,0,0,0,0,139264,147456,0,0,352256,0,0,0,0,0,131072,0,0,0,0,0,352256,0,0,352256,352256,352256,0,352256,0,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,352256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,469,0,0,0,0,0,0,0,0,0,0,2335239,2335206,352256,352256,352256,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2377,0,0,2380,0,0,0,0,2385,0,0,0,0,0,2391,0,0,1,293,3,0,0,0,299,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1242,0,0,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,360448,360448,360448,0,0,0,0,0,0,0,0,0,0,360448,360448,360448,1,0,3,155943,155943,297,0,637,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3162,0,3163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212992,0,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,529,529,529,529,1379,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2471,2472,529,529,529,57944,57944,57944,57944,57944,57944,59007,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60756,57944,57944,57944,57944,57917,57917,60373,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59507,529,529,529,57894,57894,57894,0,0,0,0,0,0,0,0,0,3430,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,405,0,0,0,0,0,0,0,0,0,333,0,0,3469,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1958,529,529,1961,529,529,529,529,529,3500,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2470,529,529,529,529,529,57917,57917,57917,57917,60926,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60395,57917,57917,0,0,0,0,3683,0,0,0,0,3688,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,57894,529,57894,529,529,57894,529,529,57917,57894,529,529,57894,57894,3704,529,529,529,3707,529,529,529,529,529,529,529,529,529,3715,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,58776,916,57894,57894,57894,57894,57894,57894,57894,58786,57894,57894,57894,58790,529,529,529,529,529,529,529,57894,61075,57894,57894,57894,61078,57894,57894,57894,57894,57894,57894,57894,57894,57894,61086,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59386,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58858,57894,57894,57894,57894,57894,57894,57894,57894,50679,58776,992,61115,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,61133,57944,57944,57944,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61136,57944,57944,57944,57944,57944,57944,57944,57944,57944,61144,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60091,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,3681,0,0,3835,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1363,529,529,529,529,529,529,529,529,529,529,529,3857,529,529,529,3858,3859,529,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61219,57894,57894,57894,57894,61220,61221,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61238,57917,57917,57917,57917,57917,57917,59450,59451,57917,57917,57917,57917,59458,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59473,57917,57917,57917,61239,61240,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61257,57944,57944,57944,57944,61258,61259,57894,57894,57894,57894,57894,61311,57894,57894,57894,61315,57894,57917,57917,57917,57917,57917,57917,61321,57917,57917,57917,57917,57917,57917,61327,57917,57917,57917,61331,57917,57944,57944,57944,57944,0,0,529,529,57894,57894,57917,57917,57944,57944,0,529,57894,57917,57944,0,529,57894,57917,57944,0,529,57894,57917,57944,0,529,57944,57944,57944,57944,61337,57944,57944,57944,57944,57944,57944,61343,57944,57944,57944,61347,57944,529,57894,0,0,0,0,0,0,0,0,3681,0,0,0,0,0,3838,0,0,3841,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,1350,529,529,529,529,529,529,1365,529,529,529,1370,529,0,0,0,0,4018,529,529,529,529,529,529,529,529,529,529,529,529,529,529,61377,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58848,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,58776,992,57894,57894,57894,61393,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61409,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,0,0,0,0,0,3148,0,0,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,0,0,0,0,529,529,529,529,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,529,529,529,529,529,529,57894,57894,57917,57944,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1789,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,376832,376832,376832,0,0,0,0,0,0,0,0,0,0,0,0,742,662,0,0,529,844,529,529,529,859,529,529,529,529,529,529,529,529,529,529,0,0,0,0,0,422,422,422,422,598,598,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,422,0,422,0,0,422,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3216,3217,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,3946,529,529,529,529,529,529,3952,529,529,529,529,57894,57894,57894,57894,57894,57894,61305,57894,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,309,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3482,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,3950,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,393687,393687,393687,0,0,0,0,0,0,0,0,0,0,0,0,788,0,0,0,529,843,529,529,529,529,529,529,875,529,529,529,529,529,529,529,0,0,0,0,0,393687,0,393687,393687,393687,0,393687,393687,393687,393687,393687,393687,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,737,0,0,803,0,0,0,0,0,0,0,803,0,393687,393687,0,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3693,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,306,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139264,147456,0,0,0,423,0,0,0,0,0,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,423,0,423,0,0,423,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,306,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4399804,4399804,4399804,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,750,423,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2853,2854,0,0,0,1153,1727,1728,0,0,0,1734,1735,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2388,0,0,0,0,0,2295,0,0,0,0,2297,1735,2298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2416,0,0,0,0,0,529,529,529,2504,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58829,57894,57894,57894,57894,529,529,529,529,529,529,529,2504,2938,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60341,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,2593,3005,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60710,57917,57944,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,417792,310,311,0,0,0,0,0,0,0,1829,0,0,0,0,0,0,0,0,0,0,0,0,0,1837,0,0,0,0,0,0,0,0,0,0,0,0,5627904,5652480,0,5701632,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,417792,0,0,0,0,417792,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,417792,0,0,417792,0,0,417792,0,0,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60362,57917,57917,57917,57917,57917,60367,57917,57917,57917,57917,57917,57917,60669,57917,57917,57917,57917,57917,57917,60677,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60703,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,417792,418102,417792,1,24578,3,0,0,4366972,0,0,0,0,0,303,304,311296,4268032,307,308,0,434176,0,0,0,0,0,0,0,0,0,0,0,0,450560,450560,0,0,0,0,0,0,0,0,0,0,0,0,139264,147456,0,0,450560,0,0,0,0,0,0,5840896,5849088,0,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,4399805,0,0,0,0,0,0,0,1829,0,0,0,0,0,0,0,0,0,0,0,1836,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3692,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,846,529,529,529,529,529,529,529,529,529,529,529,892,529,529,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6275072,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,916,915,915,915,915,915,4858771,4875155,915,915,915,915,915,915,915,915,915,915,6300563,915,915,915,915,915,915,915,915,915,915,915,0,0,991,991,991,4826079,991,991,991,991,915,5751699,915,915,915,915,915,5874579,915,915,915,915,915,915,915,915,915,915,915,6275987,915,915,915,915,915,915,915,915,915,0,0,992,991,5465055,991,5481439,5563359,991,991,991,5637087,991,5686239,991,991,5751775,991,991,991,991,991,5874655,991,991,991,991,991,991,991,991,991,991,991,6276063,4358144,4358144,6463488,0,0,0,0,915,915,915,915,915,915,915,915,915,915,915,4932499,4940691,915,915,915,915,915,915,5055379,915,915,915,915,915,915,915,915,915,915,6325139,991,991,5006303,991,991,991,5120991,5137375,991,991,991,991,991,991,991,991,991,991,6325215,4359059,4359059,5817235,915,5858195,915,915,915,915,915,915,915,915,915,915,915,915,915,6120339,915,6169491,915,915,915,915,915,6243219,915,6292371,915,6316947,915,915,915,915,5890963,915,915,915,6030227,915,915,915,915,6161299,915,915,915,915,915,915,915,6407059,991,991,991,991,991,991,991,991,4998111,991,6317023,991,991,991,991,991,991,991,991,991,6464479,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4932499,4940691,4359059,4359059,4359059,4359059,4359059,4359059,5055379,4359059,4359059,4359059,4359059,4359059,4359059,5890963,4359059,4359059,4359059,6030227,4359059,4359059,4359059,4359059,6161299,4359059,4359059,4359059,4359059,4359059,4359059,4359059,6407059,4358144,4358144,4358144,915,915,915,4890624,0,0,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60361,57917,57917,60364,60365,57917,57917,57917,57917,57917,60370,4359059,4359059,4359059,5792659,5817235,4359059,5858195,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,6120339,4359059,6169491,4359059,4359059,4359059,4359059,4359059,6243219,4359059,6292371,4359059,4359059,4359059,4916115,4359059,4957075,4973459,4359059,4359059,4359059,4359059,4359059,4359059,5071763,4359059,4359059,4359059,4359059,4359059,4359059,4359059,5219219,4359059,5268371,4359059,4359059,5309331,5317523,4359059,4359059,4359059,5432211,6316947,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,6464403,4358144,4358144,4358144,4358144,4358144,915,915,915,915,915,0,0,0,0,0,0,0,0,4956160,4964352,0,0,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,60356,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60001,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,0,0,750,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,4358144,4358144,6389760,4358144,4358144,6430720,6438912,0,0,0,0,0,0,4785043,915,915,915,4850579,915,915,915,915,915,4916115,915,4957075,4973459,915,915,915,915,915,915,915,915,5260179,915,915,915,915,915,915,915,915,5415827,915,5448595,915,5464979,915,5481363,5563283,915,915,915,5637011,915,5686163,915,915,5071763,915,915,915,915,915,915,915,5219219,915,5268371,915,915,5309331,5317523,915,915,915,5432211,915,5489555,915,915,915,915,915,915,915,915,915,5800851,915,915,5882771,915,915,915,915,915,915,915,915,915,6103955,915,915,915,6185875,915,915,915,6284179,915,915,6333331,915,915,915,6390675,915,915,6431635,6439827,4359059,5489555,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,5800851,4359059,4359059,5882771,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,6103955,4359059,4359059,4359059,6185875,4359059,4359059,4359059,0,5013504,0,0,6053888,0,0,0,0,0,0,0,0,6012928,4358144,4358144,5013504,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6053888,4358144,4358144,6284179,4359059,4359059,6333331,4359059,4359059,4359059,6390675,4359059,4359059,6431635,6439827,4358144,4358144,4358144,6266880,6488064,915,915,915,6267795,6488979,0,0,0,0,0,0,0,0,0,0,0,0,540672,0,0,0,0,0,0,0,0,0,0,0,0,0,139264,147456,0,0,540672,0,5824512,5865472,4358144,4358144,5922816,4358144,4358144,6021120,4358144,6037504,4358144,4358144,6078464,6111232,4358144,6176768,6209536,6234112,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,915,915,4842387,915,915,915,915,6087571,4817887,991,991,991,991,6087647,4817811,4359059,4359059,4359059,4359059,6087571,0,5087232,0,5931008,4358144,5332992,5980160,4358144,915,5333907,5981075,915,991,5333983,5981151,915,4899731,915,915,915,915,915,915,915,915,915,915,915,5112723,915,915,915,915,915,5284755,915,915,915,915,5473171,5522323,915,915,915,915,5596051,5710739,5718931,915,5825427,5866387,915,915,5923731,915,915,6022035,915,6038419,915,915,6079379,6112147,915,6177683,6210451,915,6235027,915,915,915,915,915,915,915,0,0,991,991,991,991,991,6104031,991,991,991,6185951,991,991,991,6284255,991,991,6333407,991,991,991,6390751,991,991,6431711,6439903,4785043,4359059,4359059,4359059,4850579,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,6300563,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4358144,4358144,4358144,4358144,4358144,915,915,915,915,915,0,0,0,0,0,0,0,4898816,0,5709824,0,0,0,5283840,0,0,0,0,5251072,0,6414336,5832704,0,5955584,0,0,4358144,4358144,4841472,4358144,4358144,4358144,4898816,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5111808,4358144,4358144,4358144,4358144,4358144,5283840,4358144,4358144,4358144,4358144,5472256,5521408,4358144,4358144,4358144,5595136,5709824,5718016,4358144,4842463,991,991,991,4899807,991,991,991,991,991,991,991,991,991,991,991,5112799,991,991,991,991,991,5284831,991,991,991,991,5473247,5522399,991,991,991,991,991,991,991,5211103,991,991,991,991,5293023,991,991,991,991,5366751,991,991,991,5456863,991,991,991,991,991,5555167,5571551,5579743,5620703,5669855,991,5596127,5710815,5719007,991,5825503,5866463,991,991,5923807,991,991,6022111,991,6038495,991,991,6079455,6112223,991,6177759,6210527,991,6235103,991,991,991,991,991,991,991,4359059,4359059,4359059,4359059,4359059,5194643,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4907008,0,5079040,6094848,5742592,0,0,0,0,0,4358144,4907008,4358144,5079040,4359059,4842387,4359059,4359059,4359059,4899731,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,5112723,4359059,4359059,4359059,4359059,4359059,5284755,4359059,4359059,4359059,4359059,5473171,5522323,4359059,4359059,4359059,4359059,4359059,4359059,4359059,5211027,4359059,4359059,4359059,4359059,5292947,4359059,4359059,4359059,4359059,5366675,4359059,4359059,4359059,5456787,4359059,4359059,4359059,4359059,4359059,5555091,5571475,5579667,5620627,5669779,4359059,4359059,5596051,5710739,5718931,4359059,5825427,5866387,4359059,4359059,5923731,4359059,4359059,6022035,4359059,6038419,4359059,4359059,6079379,6112147,4359059,6177683,6210451,4359059,6235027,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,6275987,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4923392,4358144,4358144,4358144,4358144,4358144,915,4924307,915,915,915,915,4358144,4358144,4358144,4358144,6406144,915,915,915,915,915,915,915,915,4998035,915,915,5038995,915,915,915,5096339,5104531,915,915,5202835,915,915,915,915,915,915,915,915,915,915,915,915,5628819,5653395,915,5702547,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,5178259,915,915,915,915,915,5243795,915,915,915,915,915,915,915,5342099,991,5039071,991,991,991,5096415,5104607,991,991,5202911,991,991,991,991,991,991,991,991,991,991,991,5891039,991,991,991,6030303,991,991,991,991,6161375,991,991,991,5792735,5817311,991,5858271,991,991,991,991,991,991,991,991,991,991,991,991,991,6120415,991,6169567,991,991,991,991,991,6243295,991,6292447,991,991,5219295,991,5268447,991,991,5309407,5317599,991,991,991,5432287,991,5489631,991,991,991,991,991,991,991,991,991,5800927,991,991,5882847,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,5178335,991,991,991,991,991,5243871,991,991,991,991,991,991,991,5342175,991,4358144,6307840,4358144,4358144,6356992,6381568,6397952,4801427,4809619,915,915,4891539,915,4948883,915,915,915,5047187,915,915,915,915,5186451,915,5235603,5301139,915,915,5407635,5530515,915,915,915,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4358144,4358144,4358144,4358144,4358144,4358144,0,915,915,915,915,915,915,0,0,0,0,0,0,915,915,5899155,915,915,915,915,915,915,915,915,6308755,915,915,6357907,6382483,6398867,4801503,4809695,991,991,4891615,991,4948959,991,991,991,5047263,991,991,991,991,991,991,991,991,991,991,991,5628895,5653471,991,5702623,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,991,0,0,0,0,915,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,5186527,991,5235679,5301215,991,991,5407711,5530591,991,991,991,991,5899231,991,991,991,991,991,991,991,991,6308831,991,991,6357983,6382559,6398943,4801427,4809619,4359059,4359059,4891539,4359059,4948883,4359059,4359059,4359059,5047187,4359059,4359059,4359059,4359059,5186451,4359059,5235603,5301139,4359059,4359059,5407635,5530515,4359059,4359059,4359059,4359059,5899155,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,6308755,4359059,4359059,6357907,6382483,6398867,5021696,4358144,4358144,5022611,915,915,0,4980736,0,0,0,0,0,5373952,5734400,6045696,0,6258688,6447104,0,0,6127616,0,6348800,5906432,0,5537792,4358144,4358144,4358144,4358144,5324800,5373952,5537792,5545984,5734400,5971968,4358144,6045696,4358144,6070272,4358144,4358144,4358144,6348800,915,4866963,4883347,915,4981651,915,915,915,915,915,915,915,915,5325715,5587935,5735391,5972959,991,6046687,991,6071263,991,991,991,991,6349791,4359059,4866963,4883347,4359059,4981651,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,5325715,5374867,5538707,5546899,5587859,5735315,5972883,915,6046611,915,6071187,915,915,915,915,6349715,991,4867039,4883423,991,4981727,991,991,991,991,991,991,991,991,5325791,5374943,5538783,5546975,4359059,6046611,4359059,6071187,4359059,4359059,4359059,4359059,6349715,4358144,6144e3,915,6144915,0,4988928,5005312,0,0,0,0,5775360,0,0,0,3681,0,0,0,0,0,0,5693440,0,6496256,5144576,5136384,0,5914624,4358144,4358144,5005312,4358144,4358144,4358144,512e4,5136384,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6324224,915,915,5006227,915,915,915,5120915,5137299,5006227,4359059,4359059,4359059,5120915,5137299,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,6325139,5914624,5915539,0,0,0,0,0,5513216,5783552,0,3681,0,0,0,0,3837,0,0,0,0,0,3842,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,3849,529,529,529,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,915,990,991,991,991,991,915,915,5014419,915,915,915,915,915,915,915,915,915,6054803,915,915,915,991,991,5014495,991,991,991,991,991,991,991,991,991,6054879,991,991,991,991,991,991,6407135,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4998035,4359059,4359059,5038995,4359059,4359059,4359059,5096339,5104531,4359059,4359059,5202835,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,5415827,4359059,5448595,4359059,5464979,4359059,5481363,5563283,4359059,4359059,4359059,5637011,4359059,5686163,4359059,4359059,5751699,4359059,4359059,4359059,4359059,4359059,5874579,4359059,4359059,4359059,5014419,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,6054803,4359059,4359059,4359059,0,0,0,0,5193728,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4931584,4939776,4358144,4358144,4358144,4358144,4358144,4358144,5054464,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5193728,4358144,4358144,4358144,4358144,4358144,4358144,4358144,915,915,915,915,915,5194643,915,915,915,915,915,915,915,915,991,991,991,991,991,5194719,991,991,991,991,991,991,991,991,991,6300639,991,991,991,991,991,991,991,991,991,991,991,5809043,4359059,4359059,4359059,4826003,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,5628819,5653395,4359059,5702547,4359059,4359059,5809043,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,5178259,4359059,4359059,4359059,4359059,4359059,5243795,4359059,4359059,4359059,4359059,4359059,4359059,4359059,5342099,4359059,4359059,4359059,4358144,5226496,4358144,5742592,4358144,4358144,4358144,6094848,915,4907923,915,5079955,915,5227411,915,5743507,915,915,915,6095763,915,991,4907999,991,5080031,991,5227487,991,5743583,991,991,991,991,991,4858847,4875231,991,991,991,991,991,991,991,991,991,991,991,991,991,5260255,991,991,991,991,991,991,991,991,5415903,991,5448671,6095839,991,4359059,4907923,4359059,5079955,4359059,5227411,4359059,5743507,4359059,4359059,4359059,6095763,4359059,5062656,0,0,0,0,0,4358144,5062656,4358144,4358144,4358144,4358144,4358144,915,5063571,915,915,915,5211027,915,915,915,915,5292947,915,915,915,915,5366675,915,915,915,5456787,915,915,915,915,915,5555091,5571475,5579667,5620627,5669779,915,915,915,5792659,915,915,915,6226835,991,5063647,991,991,991,991,991,6226911,4359059,5063571,4359059,4359059,4359059,4359059,4359059,6226835,0,6086656,0,0,0,4816896,4358144,4358144,4358144,4358144,6086656,4817811,6005651,6005727,6005651,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3465,0,0,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,450560,0,0,0,0,0,0,450560,0,0,450560,0,450560,450560,450560,450560,0,0,0,0,131072,0,0,0,0,0,0,450560,0,0,0,0,0,450560,0,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,450560,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,771,0,0,0,0,0,0,0,0,0,0,0,0,450560,450560,450560,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4399805,311296,4399805,0,0,0,311296,0,0,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6299648,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,304,0,0,308,0,0,0,308,0,0,0,4931584,0,0,0,0,0,0,0,0,0,0,0,0,5210112,0,5365760,0,5554176,0,0,6316032,0,196608,0,0,5816320,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2359296,368,0,0,0,0,6316032,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6463488,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,304,0,0,308,0,0,0,4956160,4964352,0,0,0,0,0,0,57917,57917,60352,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60360,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,60027,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60751,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,4358144,4358144,6389760,4358144,4358144,6430720,6438912,916,0,0,0,916,0,4784128,0,0,0,4849664,0,0,0,0,0,4915200,0,4956160,4972544,0,0,0,0,0,0,0,0,0,666,0,645,0,0,0,0,0,0,796,0,0,0,0,0,0,0,0,0,0,805,0,810,5824512,5865472,4358144,4358144,5922816,4358144,4358144,6021120,4358144,6037504,4358144,4358144,6078464,6111232,4358144,6176768,6209536,6234112,4358144,4358144,4358144,4358144,4358144,4358144,4358144,916,0,0,0,4841472,0,0,0,0,0,0,0,5210112,0,0,0,0,5292032,0,0,0,0,5365760,0,0,0,5455872,0,0,0,0,0,5554176,5570560,5578752,5619712,5668864,0,0,0,5791744,5718016,0,5824512,5865472,0,0,5922816,0,0,6021120,0,6037504,0,0,6078464,6111232,0,6176768,6209536,0,6234112,0,0,0,0,0,0,0,992,0,0,0,992,0,4784128,0,0,0,4849664,0,0,0,0,0,4915200,0,4956160,4972544,0,0,0,0,0,0,5070848,0,0,0,0,0,0,0,5218304,0,5267456,0,0,5308416,5316608,0,0,0,5431296,0,5488640,0,0,0,0,0,0,0,0,0,5799936,0,0,5881856,0,0,0,0,0,0,0,0,459183,0,0,0,0,0,0,0,0,0,0,0,0,0,459224,459224,459224,459224,459224,459224,459224,459224,459224,459224,459224,459224,459224,459224,459224,459224,459224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1066,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459348,459224,459380,459224,459224,459380,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5767168,0,0,0,0,4857856,0,0,0,0,0,0,0,0,0,0,0,1,24578,3,0,0,0,0,507904,0,0,0,507904,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,507904,0,0,0,0,0,0,57917,60351,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60688,57917,57917,57917,57917,57917,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,507904,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1321,0,0,0,0,0,0,0,0,0,0,0,0,507904,507904,507904,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,442368,0,0,0,0,0,0,0,0,0,0,0,726,0,0,0,0,0,0,0,0,0,0,0,738,0,0,0,0,0,0,0,0,1,24578,3,0,0,0,0,0,516096,0,0,0,516096,0,0,0,0,0,0,516096,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1201,0,0,1204,1205,0,0,0,0,1209,0,0,0,368,368,0,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,516569,516569,516569,516569,516569,516569,516569,516569,516569,516569,516569,516569,516569,516569,516569,516569,516569,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2306,2307,0,0,0,0,0,0,0,0,0,0,0,516569,516569,516569,1,24578,0,0,0,4366336,0,0,548864,0,0,303,304,0,4268032,307,308,409600,0,0,0,0,0,0,0,0,0,0,0,0,1199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,5005312,4358144,4358144,4358144,512e4,5136384,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6324224,5914624,5914624,0,0,0,0,0,5513216,5783552,0,40960,0,0,0,0,0,0,0,0,0,6299648,0,0,0,0,0,0,0,0,0,0,0,5808128,4358144,4358144,4358144,4825088,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,483328,0,0,0,0,0,0,0,0,0,0,0,0,0,0,335,0,0,0,0,0,0,0,0,335,0,0,139264,147456,0,0,0,0,1,24578,4227366,0,0,0,0,0,0,300,0,0,0,300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1208,0,1210,0,0,368,368,0,0,0,0,0,0,540672,0,0,540672,0,0,0,540672,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2310144,0,368,0,0,0,0,0,0,0,1,24578,4227366,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1294,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,363,0,0,0,0,0,0,368,0,297,0,0,0,0,0,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1806,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1866,0,0,0,0,0,0,0,0,0,0,1,24578,3,155943,297,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2829,0,0,0,57894,57917,57894,57894,57894,57894,57894,57894,57894,57917,57917,57894,57894,57944,57894,57894,57894,57894,57894,57894,57894,57944,57944,57894,57894,57894,57894,57944,57944,57894,529,57894,57894,57894,57894,57894,57894,60623,57894,57894,60627,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60636,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,61317,57917,57917,61319,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,61333,1153,1727,0,0,0,0,1734,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3172,0,0,0,0,2295,0,0,0,0,2297,0,2298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2827,0,0,0,0,0,0,0,0,0,0,2835,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,0,0,0,0,0,3005,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58948,57917,57917,57917,0,0,0,0,1829,0,0,0,0,0,0,0,2374,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,483328,0,0,0,0,0,0,0,0,0,0,0,0,131072,0,0,0,0,0,0,445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,0,0,0,1283,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,339,0,0,0,57895,57918,57895,57895,57895,57895,57895,57895,57895,57918,57918,57895,57895,57945,57895,57895,57895,57895,57895,57895,57895,57945,57945,57895,57895,57895,57895,57945,57945,57895,529,57895,57895,57895,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2326,2327,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2846,0,0,0,0,0,0,0,0,0,0,0,1,24578,3,155944,297,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3464,0,0,0,1,24578,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,573440,0,573440,573440,573440,0,573440,573440,573440,573440,573440,573440,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2328,0,0,0,0,0,0,0,0,0,2337,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,0,573440,573440,573440,0,0,0,0,0,0,0,0,0,0,0,0,1260,0,0,0,0,1265,0,0,0,0,0,0,0,0,0,0,0,1277,0,0,0,0,0,0,0,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,573440,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2351,0,0,0,0,2355,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2406,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2330,0,0,0,0,0,0,0,0,0,0,0,6356992,3681,0,0,0,0,0,0,0,5496832,0,0,0,0,0,5611520,0,0,0,0,0,4947968,5021696,5529600,0,0,5169152,0,0,0,4800512,0,0,0,1,24578,3,0,0,4366336,0,0,0,0,0,638,304,0,4268032,641,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2816,0,0,2819,0,0,0,0,0,0,2825,0,0,0,0,0,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,581632,0,0,0,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,581632,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,581632,581632,581632,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2868,0,0,0,0,0,0,0,0,529,529,529,529,529,529,2880,529,529,3833,4882432,0,0,0,0,0,0,0,0,5939200,0,0,5677056,6365184,4866048,0,6070272,5545984,5152768,0,0,6144e3,4358144,4866048,4882432,4358144,4980736,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,499712,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1774,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1324,0,0,0,0,0,0,0,0,0,0,4358144,6045696,4358144,6070272,4358144,4358144,4358144,4358144,6348800,4358144,6144e3,0,6144e3,0,4988928,5005312,0,0,0,0,5775360,0,0,0,3932,0,0,0,0,0,0,5693440,5005312,4358144,4358144,4358144,512e4,5136384,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6324224,5914624,5914624,0,0,0,0,0,5513216,5783552,0,3932,0,0,0,0,0,0,0,0,351,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,0,297,0,0,0,312,313,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3679,0,0,0,0,0,0,0,313,0,0,0,0,0,312,0,312,313,0,312,312,313,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1295,0,1175,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1888,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,0,0,0,0,131072,0,433,0,0,0,0,0,0,0,0,312,0,460,474,474,474,487,487,487,487,487,487,487,487,487,507,487,487,487,487,487,487,525,487,487,487,525,487,487,487,487,487,487,530,57896,530,57896,530,530,57896,530,530,57919,57896,530,530,57896,57896,57896,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,646,0,0,649,650,0,0,0,0,0,0,317,318,319,320,321,322,323,324,325,326,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1206,1207,0,0,0,0,0,368,368,0,0,0,57896,57919,57896,57896,57896,57896,57896,57896,57896,57919,57919,57896,57896,57946,57896,57896,57896,57896,57896,57896,57896,57946,57946,57896,57896,57896,57896,57946,57946,57896,530,57896,0,747,0,0,0,0,0,752,0,0,0,0,646,0,0,0,0,0,0,763,0,0,0,0,0,0,0,0,772,0,0,0,0,0,0,0,2346,0,0,0,0,0,2350,0,0,2352,0,0,0,0,2357,0,0,0,0,2362,0,0,0,0,0,0,0,0,0,1854,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1328,0,1330,0,0,1169,0,0,778,0,0,782,0,0,0,0,0,0,0,0,791,0,0,0,0,795,0,0,0,0,0,0,0,799,0,0,0,0,0,0,0,0,0,694,0,0,0,0,0,368,368,368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,540672,0,0,0,0,0,0,0,540672,0,0,0,0,0,0,0,0,835,795,0,0,0,0,0,839,840,0,0,0,0,795,529,529,849,853,529,529,865,529,529,529,881,529,886,529,894,529,529,529,0,2507,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59899,57894,57894,57894,57894,57894,57894,897,529,529,911,529,57894,57894,57894,58268,58272,57894,57894,58284,57894,57894,57894,58300,57894,58305,57894,58313,57894,58316,57894,57894,58330,57894,0,57917,57917,57917,58344,58348,57917,57917,58360,57917,57917,57917,58376,57917,58381,57917,58389,57917,58392,57917,57917,58406,57917,0,0,0,0,58305,57944,57944,57944,58419,58423,57944,57944,58435,57944,57944,57944,57944,57944,57944,57944,57944,60079,57944,57944,57944,57944,57944,60085,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,0,4153,0,0,0,529,529,529,529,529,57944,57944,58451,57944,58456,57944,58464,57944,58467,57944,57944,58481,57944,849,853,1143,897,529,529,0,58272,58268,58493,58316,57894,57894,155943,1153,0,0,1156,0,0,0,0,0,0,196608,0,0,0,106496,0,0,4284416,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5341184,0,5652480,0,1161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,278528,0,0,0,0,1219,0,0,0,0,1224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1785,1786,1787,0,0,0,0,1247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,644,0,1281,0,0,0,0,0,0,0,0,0,0,1292,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1304,0,0,0,0,0,0,0,0,399,0,0,0,0,0,0,0,0,352,0,0,0,399,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139264,147456,0,0,0,0,529,529,529,529,529,1414,529,529,529,529,529,529,529,529,529,529,529,529,58776,916,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59889,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59389,57894,57894,57894,57894,57894,59396,57894,57894,57894,57894,57894,57894,57894,57894,59405,57894,1153,1727,0,0,0,0,1734,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1754,0,0,0,0,0,0,0,0,0,0,1197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,0,0,1875,0,0,0,0,0,0,0,0,0,0,0,0,1887,0,0,0,1889,0,0,1890,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,529,529,529,529,529,1903,529,529,529,529,529,529,529,529,529,1916,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2489,529,529,529,2492,529,529,529,529,529,2497,529,529,529,529,57894,57894,57894,57894,59346,57894,57894,57894,57894,57894,57894,57894,57894,57894,59359,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,61104,57917,57917,57917,61107,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59446,57917,57917,57917,57917,57917,57917,57917,57917,57917,59459,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59542,57944,57944,57944,57944,57944,57944,57944,57944,57944,59555,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57944,57944,57944,57944,57944,57944,59614,57944,57944,57944,57944,57944,57944,59620,57944,57944,57944,57944,57944,57944,529,2285,529,529,529,57894,59634,57894,57894,57894,2294,0,0,0,0,0,0,245760,245760,245760,245760,245760,245760,0,0,0,0,0,0,0,245760,245760,245760,0,0,0,0,139264,147456,245760,245760,0,0,0,131072,0,0,0,0,245760,0,0,0,0,0,0,245760,0,245760,0,245760,0,0,0,0,0,0,0,0,0,0,0,0,697,698,0,368,368,368,0,0,0,0,0,0,0,0,0,710,0,0,0,0,2295,0,0,0,0,2297,0,2298,0,0,0,0,0,0,0,0,0,2304,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,270336,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,2404,529,529,529,529,529,529,529,529,529,529,529,2434,529,529,2437,529,529,529,529,529,529,2445,529,529,529,529,529,529,529,529,529,529,529,3712,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3265,529,529,529,529,0,0,57894,57894,57894,57894,57894,529,529,529,529,529,529,2480,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2500,529,529,529,529,529,529,529,529,3257,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2938,0,57894,57894,57894,57894,57894,57894,57894,57894,59418,57894,57894,57894,57894,57894,57894,59424,57894,57894,57894,57894,57894,57894,50679,2089,57917,57917,57917,57917,57917,59440,57917,57917,57894,57894,59933,57894,57894,57894,57894,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59954,57917,57917,59957,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,60961,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60991,57944,57944,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,57917,59965,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59985,57917,57917,57917,57917,57917,57917,57917,57917,58965,0,58966,58967,57944,57944,57944,57944,57944,58974,57944,57944,57944,57944,58980,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,57894,57894,0,0,0,0,0,0,0,0,0,0,3931,3681,0,0,0,0,0,0,0,57944,60048,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60068,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59049,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,60879,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60892,57894,57894,57944,57944,57944,57944,57944,57944,60105,57944,57944,57944,57944,2765,529,529,529,529,60114,57894,57894,57894,57894,2775,2295,0,2776,2298,0,0,2778,0,0,0,0,0,0,0,2401,0,0,0,0,0,0,0,0,0,0,0,0,2411,0,0,0,0,0,0,0,0,0,0,0,0,2300,0,0,0,0,0,0,0,0,0,0,2310,0,0,0,0,0,0,0,0,529,2935,529,529,529,529,529,0,2938,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,60291,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60307,57894,57894,57894,57894,57894,57894,57894,60312,57894,57894,57894,57894,57894,57894,57894,60318,57894,57894,57894,57894,57894,57894,57894,60299,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,0,992,0,3005,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,60358,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60366,57917,57917,57917,57917,57917,57917,57917,58881,57917,57917,57917,58885,57917,57917,58896,57917,57917,58900,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60934,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60702,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57917,57917,57917,57917,60402,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60413,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,0,0,0,0,529,529,529,529,57944,57944,60423,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60431,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,57894,0,0,0,0,0,0,0,0,3681,0,0,0,0,57944,57944,57944,57944,57944,57944,60478,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,303,307,0,0,0,0,3147,0,0,0,0,0,0,0,2787,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3198,0,0,0,0,3203,3151,0,0,0,0,0,0,3156,0,0,0,0,0,0,0,0,0,0,0,0,0,3166,0,0,0,0,0,0,0,0,0,0,0,303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,532480,0,0,0,0,0,0,0,0,0,3179,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3195,0,0,0,0,0,0,0,0,0,0,0,756,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,2877,2878,529,529,529,529,0,0,0,0,3208,3209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3221,0,529,529,529,529,529,529,529,0,2938,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60655,57894,57894,57894,57894,57894,57894,57894,57894,0,0,57917,57917,529,529,529,529,529,3232,529,529,3236,529,529,529,529,529,529,529,529,529,529,3245,529,529,529,529,529,529,529,529,529,529,529,3252,57894,60644,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,3005,0,57917,57917,57917,57917,57917,58370,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,58412,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60057,57944,57944,57944,57944,57944,57944,60062,57944,60064,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,2766,529,529,529,57894,60115,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,2404,2405,0,0,2407,0,0,0,0,2412,0,0,0,0,0,0,0,0,0,0,57917,57917,57917,57917,60693,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,60418,57944,60419,57944,57944,57944,57944,57944,57944,60742,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61158,57944,57944,529,3418,529,57894,60765,57894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3436,0,0,0,0,0,0,0,0,0,0,0,3185,0,0,0,0,0,0,0,0,0,0,0,0,3197,0,0,0,0,0,0,0,529,529,529,529,529,529,529,3501,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3518,529,3520,529,529,529,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60319,57894,57894,57894,57894,4014,0,4016,0,529,4019,529,4021,529,529,529,529,529,529,529,529,529,529,529,57894,61378,57894,61380,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60334,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59431,50679,0,57917,57917,57917,57917,57917,57917,57917,57917,57894,57894,57894,57917,61394,57917,61396,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,61410,57944,61412,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,57894,57894,0,0,0,0,0,0,0,0,0,0,0,3681,0,0,0,0,0,0,0,57894,57894,57894,57894,61452,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,61466,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60408,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60038,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61480,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,0,0,4154,0,4156,529,529,529,529,529,529,529,529,529,529,1909,529,529,529,529,529,529,529,529,529,1920,529,529,529,529,529,529,529,529,529,529,529,529,529,1425,529,529,529,529,58776,916,57894,57894,58781,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,0,0,314,315,316,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,0,0,245760,245760,0,0,0,429,131072,0,0,429,0,0,0,0,0,0,0,0,429,461,0,0,0,461,461,461,461,461,461,461,461,461,461,461,524,461,524,524,524,461,524,524,524,524,524,524,531,57897,531,57897,531,531,57897,531,531,57920,57897,531,531,57897,57897,57897,57920,57897,57897,57897,57897,57897,57897,57897,57920,57920,57897,57897,57947,57897,57897,57897,57897,57897,57897,57897,57947,57947,57897,57897,57897,57897,57947,57947,57897,622,57897,57974,57974,57974,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,417792,0,0,0,0,417792,0,0,0,0,0,0,311,0,311,0,0,0,57944,57944,57944,57944,57944,58460,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,155943,1153,0,303,0,0,0,0,0,0,645,0,0,0,805,0,810,0,796,0,822,0,0,0,0,0,0,0,0,0,645,0,0,0,0,0,0,0,0,0,2371,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3677,0,0,0,0,0,0,1846,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1846,0,0,0,0,0,0,0,0,0,0,0,3213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,1349,529,529,529,1358,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1969,529,529,529,529,529,529,1976,529,529,529,529,529,529,529,529,529,529,58776,0,57894,57894,57894,57894,57894,57894,57894,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58938,57917,57917,57917,57917,57917,57917,57917,57917,57917,57894,57894,57894,57894,59412,57894,57894,57894,57894,57894,57894,59420,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,1269,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59563,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57917,57917,57917,59512,57917,57917,57917,57917,57917,57917,59520,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,155943,1153,0,0,1157,0,57944,57944,59608,57944,57944,57944,57944,57944,57944,59616,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,2294,0,0,0,0,0,0,417792,0,417792,0,0,0,0,311,0,0,0,0,0,417792,0,417792,0,0,0,0,139264,147456,417792,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,311,0,417792,417792,0,0,417792,417792,417792,417792,417792,417792,417792,417792,417792,417792,417792,418103,417792,417792,418102,418103,417792,417792,418102,417792,418102,417792,0,0,0,0,0,0,0,0,417792,0,0,0,417792,0,0,2805,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1188,0,0,0,2860,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,2879,529,529,529,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59866,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59355,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59430,57894,50679,2090,57917,57917,57917,57917,57917,57917,57917,57917,529,2883,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2473,529,529,529,529,2936,529,529,529,0,2938,0,0,0,0,57894,57894,57894,57894,57894,57894,60288,57894,57894,57894,57894,60292,57894,57894,57894,57894,57894,57894,57894,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59955,57917,57917,57917,57917,57917,57917,57917,57917,57917,60377,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61132,57917,57917,57917,57944,57944,57944,57944,57944,0,3005,0,0,0,0,57917,57917,57917,57917,57917,57917,60355,57917,57917,57917,57917,60359,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58403,57917,57917,57917,0,0,0,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60424,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60071,57944,57944,0,321,321,430,131072,432,434,430,439,432,439,0,317,456,456,456,457,462,475,475,475,488,488,488,488,488,488,488,488,488,488,509,509,522,522,523,523,509,523,523,523,509,523,523,523,523,523,523,532,57898,532,57898,532,532,57898,532,532,57921,57898,532,532,57898,57898,57921,57898,57898,57898,57898,57898,57898,57898,57921,57921,57898,57898,57948,57898,57898,57898,57898,57898,57898,57898,57948,57948,57898,57898,57898,57898,57948,57948,57898,623,57973,57973,57973,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4931584,0,0,0,0,0,0,0,0,0,0,0,0,5210112,0,5365760,0,5554176,0,686,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,368,702,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2303,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,329,330,331,332,0,0,0,0,0,0,0,0,0,0,898,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58317,57894,57894,57894,57894,0,57917,57917,57917,57917,57917,57917,57917,58924,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58951,57917,0,1217,1176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1243,0,0,0,0,0,0,0,2810,0,0,0,0,0,2815,0,2817,2818,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,499712,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,1284,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1298,0,0,0,0,0,0,0,0,0,0,0,0,1858,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4358144,4359060,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,1310,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1327,0,0,0,0,0,0,0,0,0,0,1257,0,0,0,0,0,0,0,0,0,0,0,0,0,1272,0,1274,0,0,0,0,0,57894,57894,58798,57894,58803,57894,57894,58807,57894,57894,58810,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59897,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,58875,57917,57917,58879,57917,57917,57917,57917,57917,57917,57917,57917,58893,57917,58898,57917,57917,58902,57917,57917,58905,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60438,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58999,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59603,57944,1153,1727,0,0,0,0,1734,0,0,0,0,0,0,0,1744,1745,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1211,0,0,0,0,0,0,0,0,0,1308,0,529,529,529,1933,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1956,1957,529,529,529,529,529,529,529,529,529,529,2916,529,529,529,529,529,529,2923,529,529,529,529,529,529,529,529,529,529,2931,529,529,529,57894,57894,59376,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59399,59400,57894,57894,57894,57894,57894,57894,57894,0,2595,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58941,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59476,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59499,59500,57917,57917,57917,57917,57917,57917,57917,57917,57917,60672,57917,57917,60676,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60685,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,57894,57944,57944,58969,57944,57944,58973,57944,57944,57944,57944,57944,57944,57944,57944,58987,57944,58992,57944,57944,58996,57944,57944,57944,57944,59545,57944,57944,57944,57944,57944,57944,57944,57944,57944,59557,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59572,57894,59905,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59918,57894,57894,57894,57894,57894,59922,59923,59924,57894,57894,57894,57894,57894,57894,57894,57894,57894,59352,57894,57894,57894,57894,57894,57894,57894,57894,57894,59363,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59914,57894,57894,57894,57894,57894,57894,57894,59920,57894,57894,57894,57894,57894,57894,57894,59926,57894,57894,57894,57894,57944,57944,57944,57944,57944,60077,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60090,57944,57944,57944,57944,57944,60094,60095,60096,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60454,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59627,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,2780,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2339,60398,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61256,57944,57944,57944,57944,57944,57944,57944,0,0,0,3180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,743,0,0,0,529,529,3419,57894,57894,60766,0,0,0,0,0,3428,0,0,0,0,0,0,0,3432,0,0,0,0,0,0,0,0,0,0,0,0,0,663,0,0,529,529,529,529,529,860,529,529,876,529,529,529,529,529,529,529,3497,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3512,3513,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3241,529,529,3244,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1914,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,58776,916,57894,57894,58780,57894,57894,58784,57894,57894,57894,57894,57894,57894,57894,60896,57894,60898,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61112,57917,57917,60923,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60938,57917,60940,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60932,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59495,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,60980,57944,60982,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3832,0,529,529,3729,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59401,57894,57894,59404,57894,57894,61160,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3442,0,0,57894,61450,57894,61451,57894,57894,57894,61455,57894,57894,57894,57894,57894,57894,57894,57894,57917,61464,57917,61465,57917,57917,57917,61469,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60696,57917,57917,57917,60699,57917,60701,57917,57917,57917,57917,57917,57917,57917,57917,60706,57917,57917,57917,57917,57917,57944,57944,61478,57944,61479,57944,57944,57944,61483,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,2430,529,529,529,529,529,529,529,529,529,529,529,2442,529,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,4294,0,0,0,529,529,529,4297,57894,57894,57894,61643,57917,57917,57917,57917,57917,57917,59482,57917,57917,57917,59487,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60704,57917,57917,57917,57917,57917,57917,57917,57917,57944,61645,57944,57944,57944,61647,0,0,529,529,57894,57894,57917,57917,57944,57944,0,529,57894,57917,57944,0,529,57894,57917,57944,0,529,57894,57917,57944,0,529,529,529,529,529,529,529,529,3503,529,529,529,529,529,529,529,529,3511,529,529,529,529,529,529,529,529,529,529,529,529,529,3523,0,0,0,377,131072,0,435,377,0,0,0,446,452,0,0,0,377,463,476,476,476,489,489,489,489,489,489,489,489,489,489,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,510,533,57899,533,57899,533,533,57899,533,533,57922,57899,533,533,57899,57899,57899,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,666,0,0,669,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1233,1234,0,0,0,0,0,0,0,0,0,0,0,0,57899,57922,57899,57899,57899,57899,57899,57899,57899,57922,57922,57899,57899,57949,57899,57899,57899,57899,57899,57899,57899,57949,57949,57899,57899,57899,57899,57949,57949,57899,533,57899,58444,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,155943,1153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1759,1760,0,1190,0,1192,1193,0,0,0,1195,1196,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,0,2837,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2849,0,0,0,0,0,0,0,0,0,0,342,0,0,0,0,0,0,0,0,0,0,0,0,0,389,0,139264,147456,0,0,0,0,1334,1195,0,0,0,0,0,0,0,0,529,529,1343,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1369,529,529,529,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59865,57894,57894,59868,57894,57894,57894,57894,57894,57894,59876,57894,57894,57894,57894,58834,57894,57894,57894,57894,58839,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58864,57894,57894,57894,57894,50679,58776,992,57917,57917,58876,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58903,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60933,57917,60935,57917,57917,57917,57917,57917,57917,57917,60942,57917,57917,60944,57917,57917,57917,57917,57917,57917,57917,57917,58918,57917,57917,57917,57917,57917,57917,57917,58927,57917,57917,58929,57917,57917,57917,57917,58934,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58887,57917,57917,57917,57917,57917,57917,57917,57917,57917,58906,57917,57917,57917,57917,57917,57917,57917,57917,57917,529,529,529,1967,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,58776,0,57894,57894,57894,57894,57894,57894,57894,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59953,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61122,57917,57917,57917,57917,57917,57917,57917,57917,61130,57917,57917,57917,57917,57917,57917,57944,57944,57944,61135,57944,57894,57894,59410,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61121,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,60033,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60045,57944,57917,59510,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,155943,1153,0,0,1158,0,59606,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,2288,57894,57894,57894,57894,59637,2294,0,0,0,0,0,0,2342912,0,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,0,0,0,0,0,1155,0,2295,0,0,0,0,2297,0,2298,0,0,0,0,0,2301,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1814,0,0,0,0,0,0,0,0,0,529,529,2452,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2932,529,529,57894,57894,57894,57894,57894,59883,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60320,57894,57894,57894,59931,57894,57894,57894,57894,57894,57894,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,59952,57917,57917,57917,57917,59956,57917,57917,57917,57917,57917,57917,57917,57917,59452,57917,57917,57917,57917,57917,57917,57917,57917,57917,59463,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59474,57917,57917,60018,57917,60020,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,60035,57944,57944,57944,57944,60039,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59584,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59562,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59571,57944,57944,57944,60101,57944,60103,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,2775,2295,0,2776,2298,0,0,0,0,0,0,0,0,0,0,2865,0,0,0,0,0,0,0,0,0,2873,0,0,529,529,529,529,529,529,529,529,529,529,529,529,3261,529,529,529,529,529,529,529,529,529,529,529,529,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,60328,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,3005,0,57917,57917,0,3005,0,0,0,0,57917,57917,57917,60353,57917,60354,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58935,57917,57917,57917,57917,57917,57917,57917,58949,57917,57917,57917,3177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2393,529,529,3253,529,529,529,529,529,529,529,3259,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2938,0,57894,57894,57894,57894,57894,57894,57894,57894,58840,57894,57894,57894,57894,57894,57894,57894,58854,57894,57894,57894,57894,57894,57894,57894,57894,58866,58867,57894,57894,50679,58776,992,57894,57894,57894,57894,60645,57894,57894,57894,57894,57894,57894,57894,60651,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,3005,0,57917,57917,57917,57917,57917,58373,58375,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,58417,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61487,57944,57944,61489,57944,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,4023,529,529,529,4027,529,529,529,529,529,57894,57894,57894,57894,57894,61382,57894,57894,57894,61386,57894,57894,57894,529,529,529,3730,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60640,57894,57894,57894,57894,57894,57944,61161,57944,57944,57944,529,529,529,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3441,0,0,0,57944,57944,57944,57944,57944,57944,61264,57944,57944,529,529,57894,57894,0,0,0,0,0,0,0,0,0,0,0,3681,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,1353,529,529,529,529,529,529,529,529,529,1372,57894,57894,57894,57917,57917,57917,57917,57917,57917,61399,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,61415,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59618,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,332,0,0,0,0,0,0,0,0,376,0,0,0,0,0,0,0,0,0,0,0,0,0,0,332,0,139264,147456,0,0,0,0,0,0,0,0,693,0,0,0,0,0,0,368,368,368,0,0,0,0,0,706,0,0,0,0,0,0,0,0,0,0,311,311,311,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,212992,0,0,0,0,0,212992,212992,212992,0,0,0,0,131072,0,329,0,0,0,0,0,0,0,331,0,0,464,477,477,477,490,490,490,500,490,500,503,490,490,490,511,511,511,511,511,511,526,511,511,511,526,511,511,511,511,511,511,534,57900,534,57900,534,534,57900,534,534,57923,57900,534,534,57900,57900,57900,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,728,0,0,0,0,0,0,0,0,0,0,740,0,645,740,0,744,745,645,57900,57923,57900,57900,57900,57900,57900,57900,57900,57923,57923,57900,57900,57950,57900,57900,57900,57900,57900,57900,57900,57950,57950,57900,57900,57900,57900,57950,57950,57900,534,57900,685,0,0,0,689,0,0,0,0,0,0,0,0,0,0,368,368,368,0,0,0,0,0,0,707,708,0,0,0,0,0,714,0,0,0,718,0,720,0,0,0,0,0,0,727,0,729,730,0,0,733,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,328,328,377,0,0,0,0,0,0,0,0,0,0,0,0,779,780,0,0,0,0,0,0,0,0,0,790,0,792,0,0,0,730,0,0,0,0,0,0,0,0,0,0,804,0,809,0,812,0,0,0,0,0,0,792,0,804,0,818,0,730,0,0,812,824,0,0,826,0,0,824,824,0,0,0,792,0,0,0,0,0,0,751,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,769,730,0,0,773,0,0,0,0,0,0,659,660,0,0,0,0,0,0,0,0,0,0,671,672,0,0,0,0,0,0,0,0,0,0,0,684,0,0,0,836,0,0,0,0,0,0,0,790,0,0,0,836,529,529,850,529,856,529,529,871,529,529,882,529,887,529,529,896,899,904,529,912,529,57894,57894,57894,58269,57894,58275,57894,57894,58290,57894,57894,58301,57894,58306,57894,57894,58315,58318,58323,57894,58331,57894,0,57917,57917,57917,58345,57917,58351,57917,57917,58366,57917,57917,58377,57917,58382,57917,57917,58391,58394,58399,57917,58407,57917,0,0,0,0,58306,57944,57944,57944,58420,57944,58426,57944,57944,58441,57944,57944,58452,57944,58457,57944,57944,58466,58469,58474,57944,58482,57944,850,529,529,1144,904,529,0,57894,58269,57894,58494,58323,57894,155943,1153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1753,0,0,0,0,0,0,0,0,0,0,0,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,360448,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1251,0,0,1201,0,0,0,0,0,751,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1838,0,0,0,0,0,0,0,0,0,0,0,1282,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3702,0,529,57894,57894,57894,57894,57894,58804,57894,57894,57894,58809,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58826,57894,57894,57894,57894,57894,57894,57894,0,2596,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60415,57917,57917,57944,57944,57944,57944,57944,57944,57944,58952,57917,57917,57917,57917,57917,57917,58963,57917,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58978,57944,57944,57944,57944,57944,57944,58993,57944,57944,57944,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4092,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1978,529,529,529,529,529,529,529,529,58776,0,57894,59337,57894,57894,57894,57894,57894,58998,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59015,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59558,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59624,57944,57944,57944,1910,529,529,529,529,59353,57894,57894,57894,57894,0,0,59031,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59047,57944,57944,57944,57944,57944,57944,59058,57944,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60890,57894,57894,57894,57894,1153,1727,0,0,0,0,1734,0,0,0,0,1741,0,1743,0,0,0,0,0,0,0,0,0,0,0,0,1756,0,0,0,0,0,0,0,0,0,754,0,0,0,0,0,0,0,0,0,0,764,0,0,665,768,0,0,0,0,0,775,0,0,0,0,1763,0,0,1766,1767,1768,0,1770,1771,0,0,0,1775,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1791,0,0,0,0,0,1797,0,0,1800,0,1802,0,0,0,0,0,1808,1809,0,0,0,0,0,1815,0,0,0,0,1820,1821,0,0,0,0,0,0,785,0,0,0,680,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2311,0,0,0,0,0,0,0,0,0,0,0,1827,0,0,1829,0,0,0,0,0,0,0,0,1833,1834,1835,0,0,0,0,0,0,1841,0,1843,0,0,0,0,0,0,0,0,753,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1240,0,0,0,0,0,0,1874,0,0,0,0,0,0,1880,1881,0,0,0,0,0,0,0,0,0,0,0,1874,0,0,0,1892,1743,1743,1894,529,1896,529,1897,1898,529,1900,529,529,529,1904,529,529,529,529,529,529,529,529,529,1917,529,529,529,529,1921,529,529,529,529,1925,529,1927,529,529,529,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59864,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58851,57894,57894,58855,57894,57894,57894,57894,57894,58862,57894,57894,57894,58869,57894,50679,58776,992,1963,529,1965,529,1968,529,529,529,529,529,1975,529,529,1977,529,529,529,529,529,529,529,529,529,58776,0,59336,57894,59338,57894,59339,57894,59341,57894,59343,57894,57894,57894,59347,57894,57894,57894,57894,57894,57894,57894,57894,57894,59360,57894,57894,57894,57894,59364,57894,57894,57894,57894,59368,57894,59370,57894,57894,57894,57894,57894,57894,57894,58808,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58823,57894,57894,57894,57894,57894,57894,57894,58832,57894,59408,57894,59411,57894,57894,57894,57894,57894,59419,57894,57894,59421,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,0,59436,57917,59438,57917,59439,57917,59441,57917,57917,57917,57917,57917,60021,57917,57917,60024,60025,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60041,57944,60043,57944,57944,57944,0,0,0,4083,0,0,0,0,0,0,0,4090,0,0,529,529,529,529,4095,529,529,529,529,529,529,529,529,529,529,529,529,529,2892,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2465,529,529,529,529,529,529,529,529,529,529,529,529,529,59443,57917,57917,57917,59447,57917,57917,57917,57917,57917,57917,57917,57917,57917,59460,57917,57917,57917,57917,59464,57917,57917,57917,57917,59468,57917,59470,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,60960,57944,57944,57944,57944,60964,57944,57944,57944,57944,57944,57944,57944,60970,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60083,57944,57944,57944,57944,60088,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59013,57944,57944,57944,59017,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59508,57917,59511,57917,57917,57917,57917,57917,59519,57917,57917,59521,57917,57917,57917,57917,57917,57917,57917,57917,57917,57894,59532,57944,59534,57944,59535,57944,59537,57944,59539,57944,57944,57944,57944,57944,57944,57944,57944,60452,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60753,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59543,57944,57944,57944,57944,57944,57944,57944,57944,57944,59556,57944,57944,57944,57944,59560,57944,57944,57944,57944,59564,57944,59566,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59585,57944,57944,57944,57944,57944,57944,59592,57944,57944,57944,57944,57944,57944,57944,57944,59601,57944,57944,57944,57944,57944,57944,59576,59577,59579,57944,57944,57944,57944,57944,57944,57944,59587,59588,57944,57944,59590,57944,57944,59593,59594,57944,57944,57944,57944,57944,57944,57944,59602,57944,59604,57944,59607,57944,57944,57944,57944,57944,59615,57944,57944,59617,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,1955,529,2287,529,57894,59398,57894,59636,57894,2294,0,0,0,0,0,0,2351104,0,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,0,0,0,0,303,0,0,2295,0,0,0,0,2297,0,2298,0,0,0,0,0,0,0,0,0,0,2305,0,0,2308,2309,0,0,0,2313,0,0,0,0,0,0,0,0,0,802,0,0,0,0,0,0,0,0,0,802,0,0,802,0,0,0,0,0,0,0,802,0,0,0,0,0,1829,0,2370,0,0,0,0,0,0,0,2376,0,0,2379,0,0,0,0,2384,0,0,0,0,0,2390,0,2392,0,0,0,0,0,0,4268032,0,0,0,0,0,0,0,758,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,307,0,0,0,0,0,0,307,0,0,0,0,0,2422,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2438,529,2440,529,529,529,529,529,529,2448,529,2450,529,529,529,2477,2478,529,529,529,529,529,529,2485,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2499,529,529,529,0,0,0,0,57894,57894,59856,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,2502,2503,529,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59869,57894,59871,57894,57894,57894,57894,57894,57894,57894,2593,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59879,57894,59881,57894,57894,57894,57894,57894,57894,57894,59887,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60343,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59932,57894,57894,59935,59936,57894,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59958,57917,59960,57917,57917,57917,57917,57917,58921,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58936,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60697,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,60030,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60433,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60051,57944,60053,57944,57944,57944,57944,57944,57944,57944,60059,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,57894,0,0,0,0,0,0,0,0,3681,0,0,4012,4013,57944,57944,57944,57944,57944,60104,57944,57944,60107,60108,57944,2440,529,2767,529,529,59871,57894,60116,57894,57894,2775,2295,0,2776,2298,0,0,0,0,0,0,0,0,0,0,3158,0,0,0,0,0,0,0,0,3164,0,0,0,0,0,0,0,0,0,0,0,0,0,3453,0,0,0,0,0,3456,0,3458,0,0,0,0,0,0,0,0,3466,0,529,529,529,529,529,2911,529,529,529,529,2915,529,529,529,2920,529,529,529,529,529,529,529,529,2928,529,529,529,529,529,529,529,2933,57894,57894,57894,57894,57894,60302,57894,60304,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60321,57894,57894,57894,57894,57894,57894,57894,61098,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58890,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58914,57917,57917,57917,57894,57894,60325,57894,57894,57894,60330,57894,57894,57894,57894,57894,57894,57894,57894,60338,57894,57894,57894,57894,57894,57894,57894,57894,60344,57894,57894,57894,57894,57894,57894,57894,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,59950,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59962,57917,0,3005,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,60357,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60369,57917,57917,57917,57917,57917,60375,57917,57917,57917,57917,60378,57917,57917,60380,57917,60381,57917,57917,57917,57917,57917,57917,57917,57917,57917,60390,57917,57917,60394,57917,57917,57917,57917,57917,58369,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,57894,57894,0,0,0,0,0,0,0,0,0,0,0,3681,0,0,3935,0,0,0,0,60371,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60388,57917,57917,57917,57917,60392,57917,57917,57917,60397,57944,60422,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60434,57944,60436,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,0,0,0,3146,0,0,3149,3150,57944,57944,57944,57944,60476,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,303,307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1177,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,802,0,0,0,60740,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60747,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,57894,0,0,0,0,0,0,0,0,3681,4010,0,0,0,529,529,3498,529,529,529,529,529,529,529,3504,529,529,529,529,529,3510,529,529,529,529,529,529,529,529,529,529,3519,3521,529,529,529,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,59861,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59873,57894,57894,57894,57894,57894,57894,57894,57894,57894,61457,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,61471,57917,57917,57917,57917,57917,57917,57917,57917,59485,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60010,57917,57917,57917,57917,60014,57917,57917,3524,529,3526,3527,529,57894,57894,57894,57894,57894,57894,60878,57894,57894,57894,57894,57894,60882,57894,57894,57894,57894,57894,57894,57894,60888,57894,57894,57894,57894,57894,60894,57894,57894,60897,57894,57894,57894,57894,57894,57894,57894,57894,60904,60906,57894,57894,57894,57894,60910,57894,60912,60913,57894,57917,57917,57917,57917,57917,57917,60920,57917,57917,57917,57917,57917,57917,60022,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60037,57944,57944,60040,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,0,3824,0,0,0,0,0,0,0,0,0,3829,0,0,0,0,0,0,0,0,0,0,2403,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2360,0,0,0,0,0,0,0,57917,57917,60924,57917,57917,57917,57917,57917,57917,57917,60930,57917,57917,57917,57917,57917,60936,57917,57917,60939,57917,57917,57917,57917,57917,57917,57917,57917,60946,60948,57917,57917,57917,57917,57917,58960,57917,57917,57917,0,57894,57944,58968,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58982,58989,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60745,57944,57944,57944,60748,57944,60750,57944,57944,57944,57944,57944,57944,57944,57944,60755,57944,57944,57944,57944,57944,57917,57917,60952,57917,60954,60955,57917,57944,57944,57944,57944,57944,57944,60962,57944,57944,57944,57944,57944,60966,57944,57944,57944,57944,57944,57944,57944,60972,57944,57944,57944,57944,57944,57944,57944,57944,57944,58478,57944,57944,57944,1141,529,529,529,908,529,0,57894,58492,57894,57894,58327,57894,155943,1153,0,0,0,0,0,0,0,0,816,0,0,0,0,0,0,821,0,0,821,0,0,0,0,0,821,821,0,0,0,801,0,0,57944,60978,57944,57944,60981,57944,57944,57944,57944,57944,57944,57944,57944,60988,60990,57944,57944,57944,57944,60994,57944,60996,60997,57944,529,529,3656,57894,57894,61003,0,0,0,0,0,0,788,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,788,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,2882,0,0,0,0,3665,0,0,3668,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3675,0,0,0,0,0,0,0,0,0,0,0,789,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,808,0,0,0,0,789,0,808,0,529,847,529,529,529,529,529,529,878,880,529,529,529,529,529,529,0,0,0,3682,0,3684,0,0,0,0,0,0,0,3691,0,0,0,3694,3695,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,1344,529,529,529,529,529,529,529,529,1357,529,529,529,529,1367,529,529,529,529,529,529,3706,529,529,529,529,529,529,529,3711,529,529,529,529,529,529,529,529,529,529,529,529,529,3721,529,529,529,529,529,529,529,0,0,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60294,57894,57894,60297,529,529,529,529,529,529,529,57894,57894,57894,61077,57894,57894,57894,57894,57894,57894,57894,61082,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59422,57894,57894,57894,57894,57894,57894,57894,57894,50679,0,57917,59437,57917,57917,57917,57917,57917,57917,57894,61093,57894,57894,57894,57894,57894,57894,57894,57894,61101,57894,57894,57894,57894,57894,57894,57917,57917,57917,61106,57917,57917,57917,57917,57917,57917,57917,61111,57917,57917,57917,57917,57917,57917,60403,57917,57917,57917,60406,60407,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,60417,57944,57944,57944,57944,57944,57944,57944,57944,57944,60427,57944,57944,57944,57944,57944,60432,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59589,57944,57944,57944,57944,57944,57944,57944,57944,59598,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61140,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61151,57944,57944,57944,57944,57944,57944,57944,57944,61159,57944,57944,57944,57944,57944,57944,57944,57944,60479,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,303,307,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,806,0,57944,57944,57944,57944,57944,61263,57944,57944,57944,529,529,57894,57894,0,0,0,0,0,0,0,0,3929,3930,0,3681,0,0,0,0,0,3938,0,0,0,0,0,0,4268032,0,0,0,0,0,0,0,475136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,736,0,0,0,0,0,0,0,0,0,0,57894,61307,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,61323,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60965,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59012,57944,57944,57944,57944,57944,57944,57944,59021,57944,57944,59023,57944,57944,57944,57944,59029,57944,57944,57944,57944,57944,57944,57944,57944,61339,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,57894,0,0,0,0,0,0,0,4009,3681,0,0,0,0,0,0,0,0,1223,0,0,0,0,0,0,0,0,1232,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,538,57904,538,57904,538,538,57904,538,538,57927,57904,538,538,57904,57904,57894,61391,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61407,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,155943,0,0,0,0,0,57944,61423,57944,0,0,0,0,0,0,4085,0,0,0,0,0,0,0,529,529,529,529,529,529,4097,529,529,529,529,529,529,529,529,529,529,529,529,3861,529,529,529,529,529,57894,57894,57894,57894,57894,57894,61212,57894,57894,57894,57894,57894,57894,57894,57944,57944,57944,57944,57944,57944,61482,57944,57944,57944,57944,57944,57944,57944,57944,57944,4147,4148,0,0,0,4151,0,0,0,0,0,4157,4158,4159,529,529,529,0,0,0,0,57894,59855,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,60919,57917,57917,57917,57917,529,4162,529,4164,529,529,529,529,61513,61514,61515,57894,57894,57894,61518,57894,61520,57894,57894,57894,57894,61525,61526,61527,61528,57917,57917,57917,61531,57917,61533,57917,57917,57917,57917,57917,61118,57917,57917,57917,57917,57917,57917,57917,57917,61124,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60974,57944,57944,57917,57917,57917,61538,61539,61540,61541,57944,57944,57944,61544,57944,61546,57944,57944,57944,57944,61551,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,1907,1908,529,529,529,529,1915,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1930,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,4246,0,0,0,529,529,4251,529,529,529,4255,57894,57894,61601,57894,57894,57894,57894,57894,57894,60624,57894,60626,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,60921,57917,57917,57894,57894,61605,57894,57917,57917,61607,57917,57917,57917,61611,57917,57944,57944,61613,57944,57944,57944,61617,57944,0,0,0,0,0,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,58282,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,57917,57917,57917,57917,0,0,0,372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,372,0,0,0,380,382,0,0,0,0,0,0,0,0,0,1255,0,0,0,750,1262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,765,0,0,0,0,0,0,0,0,0,0,0,372,372,0,131072,372,0,334,440,372,440,0,0,440,440,440,458,440,0,0,0,440,497,497,497,497,497,497,497,497,497,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,440,535,57901,535,57901,535,535,57901,535,535,57924,57901,535,535,57901,57901,57901,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,751,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3463,0,0,0,0,57901,57924,57901,57901,57901,57901,57901,57901,57901,57924,57924,57901,57901,57951,57901,57901,57901,57901,57901,57901,57901,57951,57951,57901,57901,57901,57901,57951,57951,57901,535,57901,529,529,529,529,529,57894,57894,58261,57894,57894,57894,57894,57894,57894,58294,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,57917,57917,58337,57917,57917,57917,57917,57917,61242,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,61250,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,155943,1153,0,0,0,0,58445,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,155943,1153,0,303,0,0,0,0,0,0,789,0,0,0,0,808,0,0,0,0,0,0,0,0,0,0,0,694,0,0,789,0,0,0,0,808,57894,57894,58799,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,58776,992,0,0,0,0,1877,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,3493,529,529,529,529,529,529,1966,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,58776,0,57894,57894,57894,57894,57894,57894,57894,0,0,0,0,57917,57917,57917,57917,59947,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60698,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57894,59409,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61246,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,2294,1728,59509,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61346,57944,57944,529,57894,0,0,0,4007,0,0,0,0,3681,0,0,0,0,59990,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,60073,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59605,0,0,2859,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,3948,529,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61572,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60401,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61255,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,3666,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,0,297,0,0,57944,57944,57944,57944,57944,57944,57944,61141,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,4250,529,529,529,529,529,529,61600,57894,57894,57894,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1831,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229376,0,491520,524288,0,0,0,0,0,0,0,57894,57894,57894,57894,61606,57917,57917,57917,57917,57917,57917,57917,61612,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,58283,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,57917,57917,57917,57917,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,0,0,0,0,4296,529,529,529,61642,57894,57894,57894,61644,57917,57917,57917,57917,57917,58961,58962,57917,57917,0,57894,57944,57944,57944,57944,58972,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,4161,57917,61646,57944,57944,57944,0,0,529,529,57894,57894,57917,57917,57944,57944,0,529,57894,57917,57944,0,529,57894,57917,57944,0,529,57894,57917,57944,0,529,529,529,529,529,529,529,529,3710,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3720,529,529,529,529,529,3725,529,3727,0,0,0,0,131072,0,0,0,441,0,441,447,0,441,441,441,0,441,478,478,478,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,491,536,57902,536,57902,536,536,57902,536,536,57925,57902,536,536,57902,57902,57902,57925,57902,57902,57902,57902,57902,57902,57902,57925,57925,57902,57902,57952,57902,57902,57902,57902,57902,57902,57902,57952,57952,57902,57902,57902,57902,57952,57952,57902,536,57902,57902,57902,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,802,0,0,529,529,529,529,529,862,529,529,529,529,529,529,529,529,529,529,0,0,0,0,0,1285,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,0,309,0,0,0,2421,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2496,529,2498,529,529,529,0,0,0,3207,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,3495,529,529,529,529,529,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3433,0,0,0,3437,0,0,0,0,0,3443,0,0,0,0,0,0,4268032,0,0,0,0,0,0,0,499712,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1323,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3471,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3488,529,529,529,529,529,529,529,529,529,529,529,529,529,3240,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,0,916,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,529,3525,529,529,529,60872,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60889,57894,57894,57894,57894,57894,57894,57894,57894,59911,57894,57894,57894,57894,59916,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59393,57894,57894,57894,57894,57894,57894,57894,57894,59402,57894,57894,57894,57894,57894,57894,57894,57894,57894,60899,57894,57894,57894,57894,57894,57894,57894,57894,57894,60908,57894,57894,60911,57894,57894,57894,60914,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58984,57944,57944,57944,57944,57944,57944,57944,60950,57917,57917,60953,57917,57917,57917,60956,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60973,57944,57944,57944,0,0,0,0,0,0,0,0,0,0,4089,0,4091,0,529,529,529,529,529,4096,529,529,529,529,529,529,529,529,529,529,529,529,3506,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1950,529,529,529,529,529,529,529,529,1959,529,529,529,57944,57944,57944,57944,57944,57944,57944,60983,57944,57944,57944,57944,57944,57944,57944,57944,57944,60992,57944,57944,60995,57944,57944,57944,529,529,529,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3439,0,0,0,0,0,529,3705,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3717,529,529,529,529,529,529,529,3722,529,3724,529,529,529,0,0,0,0,57894,57894,57894,57894,57894,57894,59860,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59872,57894,57894,57894,57894,57894,57894,57894,2594,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60008,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,529,529,529,529,529,529,529,57894,57894,61076,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61088,57894,57894,57894,57894,57894,57894,57894,57894,60648,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,2597,57917,57917,57894,57894,57894,61094,57894,61096,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,61105,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58928,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58947,57917,57917,57917,57917,57917,57917,57917,57917,61117,57917,57917,57917,57917,57917,57917,57917,57917,61123,57917,61125,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,61134,57944,57944,57944,4081,0,4082,0,0,0,0,0,0,0,0,0,0,0,529,4093,529,4094,529,529,529,4098,529,529,529,529,529,529,529,0,0,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,3681,0,0,0,3836,0,0,0,0,0,0,0,0,0,0,0,3844,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2444,529,529,529,529,2449,529,529,3854,529,529,529,529,529,529,529,529,3860,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61216,57894,57894,57894,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,651,0,57917,57917,57917,61241,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61254,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,57894,57894,0,0,0,0,0,0,0,0,0,0,0,3681,0,3934,0,0,0,0,0,61260,57944,57944,57944,57944,57944,57944,57944,57944,529,529,57894,57894,0,0,0,0,0,0,0,0,0,0,0,3681,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,3850,529,529,57894,61627,61628,57894,57894,57917,57917,61631,61632,57917,57917,57944,57944,61635,61636,57944,57944,0,0,0,0,529,529,529,529,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,529,529,4279,4280,529,529,57894,0,0,0,0,0,690,691,0,0,0,0,696,0,0,0,368,368,368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,548,57914,548,57914,548,548,57914,548,548,57937,57914,548,548,57914,57914,0,0,0,0,0,771,0,0,0,0,0,0,0,0,0,0,529,529,529,854,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3262,529,529,529,529,529,529,529,529,529,529,0,0,57894,57894,57894,57894,57894,529,529,529,529,913,57894,57894,57894,57894,58273,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58332,0,57917,57917,57917,57917,57917,57917,57917,59995,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59501,57917,57917,59504,57917,57917,57917,58349,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58408,0,0,0,0,57894,57944,57944,57944,57944,58424,57944,57944,57944,57944,57944,57944,57944,57944,57944,59046,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,58293,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,57917,57917,57917,57917,529,1409,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,58776,916,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60308,57894,57894,57894,57894,60311,57894,57894,60313,57894,60314,57894,57894,57894,57894,57894,57894,57894,57894,57894,57944,57944,57944,59038,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60885,57894,57894,57894,57894,57894,57894,57894,57894,57894,57944,57944,57944,57944,57944,57944,57944,61265,57944,529,529,57894,57894,0,0,0,0,0,0,0,0,0,0,0,3681,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3847,529,529,529,529,529,529,529,3852,0,427,427,0,131072,427,0,0,0,427,0,448,0,0,0,0,427,336,479,479,479,492,492,492,492,492,492,492,492,492,492,512,520,520,520,520,520,520,527,520,520,520,527,520,520,520,520,520,520,537,57903,537,57903,537,537,57903,537,537,57926,57903,537,537,57903,57903,57903,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,841,0,0,529,529,529,529,529,864,529,529,529,529,529,529,529,529,529,529,57903,57926,57903,57903,57903,57903,57903,57903,57903,57926,57926,57903,57903,57953,57903,57903,57903,57903,57903,57903,57903,57953,57953,57903,57903,57903,57903,57953,57953,57903,537,57903,777,0,0,781,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,797,0,0,0,0,0,0,0,801,0,0,0,0,0,0,0,0,1254,0,0,0,0,0,0,0,0,0,0,0,1172,0,1174,0,0,0,0,0,0,0,0,0,0,0,1884,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,4026,529,4028,4029,529,4031,529,57894,57894,57894,57894,57894,57894,57894,57894,61385,57894,61387,61388,57894,0,0,0,0,837,797,0,0,837,0,0,0,0,0,0,0,529,529,529,529,857,529,866,529,529,529,529,529,529,529,529,529,529,529,529,1384,529,529,529,529,529,529,529,1393,529,529,1395,529,529,529,529,1400,529,529,529,529,529,529,529,914,57894,57894,57894,57894,57894,58276,57894,58285,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58333,0,57917,57917,57917,57917,57917,57917,57917,60023,57917,57917,57917,57944,57944,57944,57944,57944,57944,60032,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60044,57944,57944,57917,58352,57917,58361,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58409,0,0,0,0,57894,57944,57944,57944,57944,57944,58427,57944,58436,57944,57944,57944,57944,57944,57944,57944,57944,60743,57944,57944,57944,57944,57944,57944,57944,60749,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59054,57944,57944,57944,57944,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,0,0,1249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,803,0,0,0,0,0,0,0,0,1311,0,0,0,0,0,0,0,0,1316,0,0,0,0,0,0,0,0,1326,0,0,0,0,0,0,0,0,0,0,0,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,344064,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,1412,529,529,1416,529,529,529,529,529,1423,529,529,529,1430,529,58776,916,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61102,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58792,57894,57894,57894,57894,57894,57894,57894,57894,57894,58811,57894,57894,57894,57894,57894,57894,57894,57894,57894,58821,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59888,57894,57894,57894,59891,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60907,57894,57894,57894,57894,57894,57894,57894,57917,60915,57917,57917,57917,57917,57917,57917,57917,57917,58916,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58946,57917,57917,58950,57917,57917,57917,57917,57917,59449,57917,57917,57917,57917,57917,57917,57917,57917,57917,59461,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58931,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58957,57917,57917,57917,58964,57917,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58981,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,57894,57894,0,0,0,0,0,3927,0,0,0,0,0,3681,0,0,0,3936,0,0,0,57944,59e3,57944,57944,57944,57944,57944,57944,57944,57944,57944,59010,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60752,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59041,57944,57944,59045,57944,57944,57944,57944,57944,59052,57944,57944,57944,59059,57944,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58309,57894,57894,57894,57894,57894,57894,57894,0,57917,57917,57917,57917,0,1824,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1277,0,0,0,0,1848,1849,0,1851,0,0,0,0,0,0,0,0,0,0,0,0,0,1865,0,1867,0,0,0,0,0,0,0,0,0,0,0,1226,0,0,0,0,1231,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,734,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,1971,529,529,529,529,529,529,529,529,529,529,1981,1983,529,529,529,529,58776,0,57894,57894,57894,57894,57894,57894,57894,0,0,0,0,57917,57917,57917,59946,57917,59948,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60678,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60691,57894,57894,57894,57894,57894,59414,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59425,59427,57894,57894,57894,57894,50679,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,58883,57917,57917,57917,58892,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59978,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,59610,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59621,59623,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,0,0,0,0,1221,0,0,0,0,0,1227,0,1229,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2383,0,0,0,0,0,0,0,0,0,0,2340,0,0,0,2343,0,0,0,0,0,2349,0,0,0,0,0,0,0,0,0,0,0,0,2359,0,0,0,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4857856,4874240,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5259264,2367,0,0,0,0,0,0,0,0,0,0,0,0,2375,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2358,0,0,0,0,0,0,0,0,2366,57894,57894,57894,59934,57894,57894,57894,0,0,0,0,57917,57917,57917,57917,57917,57917,59949,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59961,57917,57917,57917,57917,57917,59480,59481,59483,57917,57917,57917,57917,57917,57917,57917,59491,59492,57917,59494,57917,57917,59497,59498,57917,57917,57917,57917,57917,57917,57917,59506,57917,57944,57944,57944,57944,57944,57944,57944,60106,57944,57944,57944,2441,529,529,529,529,59872,57894,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,2791,0,0,0,0,0,0,0,0,0,0,0,2801,0,0,0,0,0,0,0,0,0,2807,0,0,0,0,0,0,2811,0,0,0,0,0,0,0,0,0,0,0,0,0,2824,0,0,0,0,0,0,0,2832,0,0,0,0,2834,0,0,0,0,0,0,0,0,0,0,0,0,0,2844,2845,0,0,2848,0,0,2851,0,0,0,0,0,0,0,0,0,0,3184,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1301,0,0,0,0,1306,0,0,0,0,0,0,2861,0,0,0,0,0,0,0,0,0,0,0,0,0,2871,0,0,0,0,529,2875,529,529,529,529,529,529,529,0,0,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,60289,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61225,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59528,57917,57917,57917,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,2934,529,529,529,529,529,529,0,0,0,0,0,0,57894,60284,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60654,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,0,57917,57917,57894,57894,60326,57894,57894,57894,57894,57894,57894,60333,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60342,57894,57894,57894,60345,57894,57894,57894,57894,57894,57894,57894,57894,57894,61100,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60410,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57917,57917,57917,60374,57917,57917,57917,57917,57917,57917,57917,60379,57917,57917,57917,57917,57917,57917,57917,60385,57917,57917,57917,57917,57917,57917,57917,60393,57917,57917,57917,57917,57917,57917,57917,60694,57917,57917,57917,57917,57917,57917,57917,60700,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,61248,57944,57944,57944,61251,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57917,57917,60400,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60409,57917,57917,57917,60412,57917,57917,57917,57917,57917,57917,57944,60416,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,3823,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3459,0,0,0,0,0,0,0,0,0,57944,57944,57944,57944,57944,57944,60450,57944,57944,57944,57944,57944,57944,57944,60458,57944,57944,57944,57944,57944,57944,60465,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60058,57944,57944,57944,57944,57944,57944,57944,57944,60065,57944,60067,57944,60070,57944,57944,57944,57944,57944,57944,60474,57944,57944,57944,60477,57944,57944,57944,57944,57944,57944,3137,529,529,529,529,60484,57894,57894,57894,57894,0,0,0,0,3145,0,0,0,0,0,0,0,0,0,1769,0,0,1772,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1790,0,0,0,0,0,3155,0,0,0,0,0,0,3159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3173,3174,0,0,0,0,0,0,1253,0,0,0,1258,0,0,0,0,0,0,0,0,0,1175,0,0,0,0,0,0,0,0,0,0,0,0,3214,0,0,0,0,0,0,0,0,0,0,0,0,0,3223,529,529,529,529,529,0,3205,0,0,0,0,3210,0,0,0,3212,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,3225,529,529,529,0,0,0,0,59854,57894,57894,57894,57894,57894,57894,57894,59862,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60653,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,0,57917,57917,529,529,529,3230,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3246,3247,529,529,529,529,3250,529,529,529,529,529,529,529,529,529,1382,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1987,58776,0,57894,57894,57894,57894,57894,57894,57894,529,529,529,529,529,3255,529,529,529,3258,529,3260,529,529,529,529,529,529,529,3264,529,529,529,529,529,0,0,57894,57894,57894,60616,57894,57894,57894,57894,57894,57894,60900,57894,57894,60902,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,60916,57917,57917,57917,57917,57917,57917,57917,57917,57917,61245,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,57894,57894,57894,57894,60621,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60637,60638,57894,57894,57894,57894,60641,57894,57894,57894,57894,57894,57894,57894,59350,59351,57894,57894,57894,57894,59358,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59373,57894,57917,60665,57917,57917,57917,57917,57917,60670,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60686,60687,57917,57917,57917,57917,60690,57917,57917,57917,57917,57944,57944,57944,57944,61543,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,0,0,0,0,529,529,529,529,4022,529,529,529,529,529,529,529,529,529,529,57894,57894,57894,57894,61381,57894,57894,57894,57894,57894,57894,57894,57894,57894,58842,57894,57894,58849,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58863,57894,57894,57894,57894,57894,50679,58776,992,57944,57944,60714,57944,57944,57944,57944,57944,60719,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60735,60736,57944,57944,57944,57944,60739,529,529,529,57894,57894,57894,3423,0,0,3426,3427,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1840,0,0,0,0,0,1845,0,3468,0,0,0,0,3472,0,0,0,0,3477,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,3492,529,529,529,529,3496,529,529,529,529,529,529,529,3502,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3516,529,529,529,529,529,529,529,529,529,529,529,1383,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1405,57944,57944,61261,57944,57944,57944,57944,57944,57944,529,529,57894,57894,0,0,0,0,0,0,0,0,0,0,0,3681,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3845,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,3507,529,3509,529,529,529,529,529,529,3515,529,529,3517,529,529,529,529,529,529,0,0,0,0,3940,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61390,57894,61392,57917,57917,57917,57917,57917,57917,57917,57917,61401,57917,61403,61404,57917,61406,57917,61408,57944,57944,57944,57944,57944,57944,57944,57944,61417,57944,61419,61420,57944,57944,57944,57944,57944,57944,57944,57944,61340,57944,61342,57944,57944,57944,57944,57944,57944,529,57894,0,0,0,0,0,0,0,0,3681,0,0,0,0,0,0,0,0,3183,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,381,0,384,0,0,0,384,61422,57944,61424,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3955,529,57894,57894,57894,57894,57894,57894,57894,57894,529,529,4217,529,4218,529,529,529,57894,57894,57894,57894,57894,57894,61568,57894,61569,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,61576,57917,61577,57917,57917,57917,57917,57917,59516,59517,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60084,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59018,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57917,57917,57944,57944,57944,57944,57944,57944,61584,57944,61585,57944,57944,57944,57944,0,0,0,0,0,0,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61087,57894,57894,57894,57894,57894,57894,57894,57894,57917,57944,57944,57944,57944,0,0,529,529,57894,57894,57917,57917,57944,57944,4309,4310,61655,61656,61657,0,529,57894,57917,57944,0,529,57894,57917,57944,0,529,529,529,529,529,529,529,529,57894,57894,57894,57894,61517,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,61530,57917,57917,57917,57917,57917,57917,57917,57917,61244,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,2294,0,57904,57927,57904,57904,57904,57904,57904,57904,57904,57927,57927,57904,57904,57954,57904,57904,57904,57904,57904,57904,57904,57954,57954,57904,57904,57904,57904,57954,57954,57904,538,57904,57904,57904,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,1200,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,57894,57894,57894,57894,58836,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,58776,992,0,408,0,0,0,0,0,0,0,0,0,0,0,0,0,0,408,0,0,0,0,0,0,0,384,0,139264,147456,0,408,0,0,0,131072,0,0,0,442,0,442,0,453,442,442,442,0,442,480,480,480,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,493,539,57905,539,57905,539,539,57905,539,539,57928,57905,539,539,57905,57905,57905,57928,57905,57905,57905,57905,57905,57905,57905,57928,57928,57905,57905,57955,57905,57905,57905,57905,57905,57905,57905,57955,57955,57905,57905,57905,57905,57955,57955,57905,539,57905,57905,57905,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,1228,0,0,0,0,0,0,0,0,1237,0,0,0,0,0,0,0,0,0,900,529,529,529,529,57894,57894,58262,57894,57894,57894,58278,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58319,57894,57894,57894,57894,0,57917,57917,58338,57917,57917,57917,57917,58878,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58909,58911,57917,57917,57917,57917,57917,57917,57917,57917,60405,57917,57917,57917,57917,57917,57917,57917,57917,60411,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61156,57944,57944,57944,57944,57917,57917,58354,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58395,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,58413,57944,57944,57944,58429,57944,57944,57944,57944,57944,57944,57944,57944,57944,60453,57944,57944,57944,57944,60457,57944,57944,57944,60462,57944,57944,57944,57944,57944,57944,57944,57944,60470,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60721,57944,57944,60725,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60734,57944,57944,57944,57944,57944,57944,57944,57944,57944,3922,529,61267,57894,0,0,0,0,0,0,0,0,0,0,0,3681,0,0,0,0,0,0,0,0,0,0,1225,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1246,0,1162,0,0,0,0,0,0,0,0,0,1169,1170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,333,334,0,0,0,0,0,0,0,0,0,0,0,0,0,1252,0,0,0,0,0,0,0,0,0,1263,1264,0,0,0,0,0,1170,0,0,0,0,0,0,0,0,0,0,0,1259,0,0,0,0,0,0,1267,0,0,0,0,1271,0,0,0,0,0,0,0,0,0,0,0,1240,0,0,0,0,0,0,529,1341,529,529,529,529,529,529,529,529,529,529,1354,1361,529,529,529,529,529,529,529,529,529,529,529,1422,529,529,529,529,529,529,58776,916,57894,57894,57894,58782,57894,57894,57894,57894,57894,57894,57894,57894,57894,59886,57894,57894,57894,57894,57894,57894,57894,57894,59893,57894,59895,57894,59898,57894,57894,57894,57894,57894,57894,57894,57894,57894,58841,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58857,57894,57894,57894,57894,57894,57894,58868,57894,50679,58776,992,1374,529,1376,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1396,529,1398,529,529,529,529,529,529,529,529,529,1418,529,529,529,529,529,529,1429,529,58776,916,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58789,57894,529,529,1411,529,529,529,529,529,529,529,529,529,529,529,1426,529,529,529,58776,916,57894,58779,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58844,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58861,57894,57894,57894,57894,57894,57894,50679,58776,992,57894,58793,58800,57894,57894,57894,57894,57894,57894,57894,57894,58813,57894,58815,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59362,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58835,57894,58837,57894,57894,57894,57894,57894,57894,57894,58850,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58865,57894,57894,57894,50679,58776,992,57917,58874,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58888,58895,57917,57917,57917,57917,57917,57917,57917,57917,58908,57917,58910,57917,57917,57917,57917,57917,57917,57917,57917,59996,57917,57917,57917,57917,57917,60002,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61127,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,59002,57944,59004,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59025,57944,59027,57944,57944,57944,0,0,0,0,0,0,0,0,0,4088,0,0,0,0,529,529,529,529,529,529,529,529,4099,529,4101,529,529,4103,529,57944,57944,57944,57944,59040,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59055,57944,57944,57944,529,1354,529,1411,529,529,58793,57894,57894,58850,57894,57894,57894,57894,57894,57894,57894,61313,57894,57894,57894,61316,57917,57917,57917,57917,61320,57917,57917,57917,57917,57917,57917,57917,57917,57917,61329,57917,57917,57917,61332,57944,57944,57944,57944,57944,59546,59547,57944,57944,57944,57944,59554,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59569,57944,57944,57944,57944,57944,57944,57944,57944,57944,60055,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59595,59596,57944,57944,57944,57944,57944,57944,57944,57944,0,0,2316,0,2317,0,0,0,0,0,0,0,0,2325,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3220,0,0,0,529,3224,529,529,529,529,57917,59991,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60003,57917,57917,57917,57917,57917,57917,57917,60009,57917,57917,57917,57917,57917,57917,57917,60015,57944,60074,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60086,57944,57944,57944,57944,57944,57944,57944,60092,57944,57944,57944,57944,57944,57944,57944,60098,57894,57894,57894,57894,60301,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60348,57894,57894,0,3152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3165,0,0,0,0,0,0,0,0,0,0,0,0,2814,0,0,0,0,0,0,0,0,2822,0,0,0,2826,0,0,0,2830,0,0,529,529,3229,529,529,529,529,529,529,3237,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2468,529,529,529,529,529,529,529,529,529,57894,57894,57894,60620,57894,57894,57894,57894,57894,57894,60628,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59896,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57944,57944,57944,57944,57944,57944,57944,60718,57944,57944,57944,57944,57944,57944,60726,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,57894,4004,0,4006,0,0,0,0,0,3681,0,0,0,0,0,0,3470,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,890,529,529,3728,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60661,57894,0,0,57917,57917,529,529,4163,529,4165,529,529,529,57894,57894,57894,57894,57894,57894,57894,61519,57894,61521,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,61532,57917,61534,57917,57917,61581,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61083,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59915,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59927,57894,57894,57894,61626,57894,57894,57894,57894,57917,61630,57917,57917,57917,57917,57944,61634,57944,57944,57944,57944,0,0,0,0,529,529,529,529,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,529,4278,529,529,529,529,57894,342,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3176,0,0,0,0,131072,0,0,0,0,0,0,449,0,0,0,0,0,465,481,481,481,465,465,465,465,465,465,465,465,465,465,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,513,540,57906,540,57906,540,540,57906,540,540,57929,57906,540,540,57906,57906,57906,1,24578,3,155943,156283,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,1315,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2331,0,0,0,0,2335,0,0,0,0,57906,57929,57906,57906,57906,57906,57906,57906,57906,57929,57929,57906,57906,57956,57906,57906,57906,57906,57906,57906,57906,57956,57956,57906,57906,57906,57906,57956,57956,57906,540,57906,57917,57917,58355,57917,57917,58371,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,57944,57944,57944,57944,58430,57944,57944,57944,57944,57944,57944,57944,57944,57944,60480,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,328,403,0,0,0,0,0,0,0,0,0,0,328,0,0,0,0,0,0,0,0,58446,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,155943,1153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1752,0,0,0,0,0,0,0,0,0,0,0,2790,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1839,0,0,0,0,0,0,0,0,0,0,1191,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,0,3182,0,0,0,0,0,0,0,3188,0,3190,0,0,0,3194,0,0,0,0,0,3199,0,0,3202,0,0,0,0,0,1337,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,1355,529,529,529,529,529,529,529,529,529,529,529,529,1385,529,529,529,1389,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2921,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1946,529,529,529,529,529,1953,529,529,529,529,529,529,529,529,1962,529,529,529,529,1413,529,529,529,529,529,1421,529,529,529,529,529,529,529,58776,916,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61226,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59462,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57894,58794,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59903,59904,58833,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58852,57894,57894,57894,57894,57894,58860,57894,57894,57894,57894,57894,57894,57894,50679,58776,992,57917,58955,57917,57917,57917,57917,57917,57917,57917,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58983,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60746,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60730,57944,57944,60733,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59042,57944,57944,57944,57944,57944,59050,57944,57944,57944,57944,57944,57944,57944,529,1355,529,529,1720,529,58794,57894,57894,57894,59069,57894,57894,57894,57894,57894,57894,61097,57894,61099,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,61110,57917,57917,57917,57917,57917,57917,57917,57944,60957,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59022,57944,57944,57944,57944,57944,57944,57944,57944,1153,0,0,1730,0,0,0,0,1737,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1755,0,0,0,1758,0,0,0,0,0,0,1255,1829,0,0,0,0,1262,1262,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1166,1300,0,0,0,0,0,0,1307,0,1761,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1776,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,361,362,0,0,0,0,0,0,0,368,0,297,0,0,529,1931,529,529,529,529,529,529,529,529,1942,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1394,529,529,529,529,529,529,529,529,529,529,59374,57894,57894,57894,57894,57894,57894,57894,57894,59385,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,2091,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,59548,57944,57944,57944,57944,57944,57944,57944,57944,57944,59559,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59570,57944,57944,57944,57944,57944,57944,57944,57944,57944,60720,57944,60723,57944,57944,57944,57944,60728,57944,57944,57944,60731,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,3138,529,529,529,57894,60485,57894,57894,57894,0,0,3143,3144,0,0,0,0,0,0,57944,57944,57944,57944,57944,57944,59581,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60069,57944,57944,57944,57944,57944,529,529,529,529,529,2479,529,529,529,529,2484,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1952,529,529,529,529,529,529,529,529,529,529,57894,59880,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59929,57894,59964,57917,57917,57917,57917,59969,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,60047,57944,57944,57944,57944,60052,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60442,57944,57944,57944,529,529,529,57894,57894,57894,0,0,0,0,0,0,0,0,3429,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1781,0,0,0,0,0,0,0,0,0,0,529,529,529,3499,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2930,529,529,529,529,529,57917,57917,57917,60925,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59988,57917,57917,61092,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57894,57894,57894,57917,57917,57917,57917,61397,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,61413,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,57894,57894,0,0,0,3925,0,0,3928,0,0,0,0,3681,3933,0,0,0,0,0,0,57917,61580,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61588,0,0,0,0,0,0,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,61081,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61091,343,344,345,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,343,297,0,0,0,0,0,0,1286,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1212,368,368,0,0,1215,0,390,391,393,344,0,0,0,0,0,0,343,0,0,0,0,343,0,0,0,344,0,0,0,0,0,0,0,0,0,0,0,0,2867,2817,0,0,0,0,0,2872,0,0,0,529,529,529,529,529,529,529,2881,529,0,0,390,0,0,0,0,0,0,0,0,344,0,0,0,390,0,0,0,0,0,344,390,0,0,0,139264,147456,0,0,0,425,0,0,0,0,131072,0,436,343,0,0,0,0,454,0,0,0,343,0,482,482,482,482,498,498,498,498,498,498,498,498,498,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,482,541,57907,541,57907,541,541,57907,541,541,57930,57907,541,541,57907,57907,57907,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,1859,1860,0,1861,1862,0,0,0,0,0,0,0,0,0,0,0,1871,0,0,57907,57930,57907,57907,57907,57907,57907,57907,57907,57930,57930,57907,57943,57957,57943,57943,57943,57943,57943,57943,57943,57957,57957,57943,57943,57943,57943,57957,57957,57943,541,57907,715,0,717,0,0,0,0,0,0,0,725,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1868,0,0,0,0,0,0,0,0,0,0,0,815,0,798,0,0,817,0,668,0,794,0,0,0,0,0,817,794,0,817,815,0,0,829,0,0,0,664,832,0,794,0,0,0,0,0,838,0,0,0,0,798,664,842,0,529,845,529,529,529,861,529,529,877,529,529,529,529,891,529,529,529,0,0,0,2509,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59877,57894,529,529,909,529,529,57894,57894,58263,57894,57894,57894,58280,57894,57894,58296,57894,57894,57894,57894,58310,57894,57894,57894,57894,58328,57894,57894,0,57917,57917,58339,57917,57917,57917,57917,58959,57917,57917,57917,57917,0,58834,57944,57944,58970,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58997,57944,57944,57944,57944,57944,57944,57944,57944,60426,57944,57944,60429,60430,57944,57944,57944,57944,57944,60435,57944,60437,57944,57944,57944,57944,60441,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61145,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60463,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57917,57917,58356,57917,57917,58372,57917,57917,57917,57917,58386,57917,57917,57917,57917,58404,57917,57917,0,0,0,0,57894,57944,57944,58414,57944,57944,57944,58431,57944,57944,57944,57944,57944,57944,57944,57944,57944,60744,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60754,57944,57944,60757,57944,57944,60760,58447,57944,57944,57944,57944,58461,57944,57944,57944,57944,58479,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,155943,1153,0,303,0,0,0,0,0,0,1312,0,0,0,0,0,0,0,0,1318,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3193,0,0,0,0,0,0,0,3200,0,0,0,0,0,0,1336,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,1356,529,529,529,529,529,529,529,529,529,529,529,529,1386,529,529,529,529,1391,529,529,529,529,529,529,529,529,529,1399,529,529,529,1406,529,529,529,529,529,1380,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1404,57894,58795,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58819,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61236,57917,57917,57917,57917,57917,57944,59033,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,1717,529,1719,529,529,59066,57894,57894,59068,57894,57894,57894,57894,57894,57894,58838,57894,57894,57894,58845,58847,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58870,50679,58776,992,0,1762,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1779,0,0,1782,0,1784,0,0,0,0,0,0,0,0,0,0,1290,1291,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1181,0,0,0,0,0,0,0,0,529,529,529,529,1902,529,529,529,529,529,529,529,529,1913,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2897,529,529,529,529,529,529,529,529,529,529,529,529,529,57894,57894,57894,59345,57894,57894,57894,57894,57894,57894,57894,57894,59356,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59428,57894,57894,57894,50679,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59445,57917,57917,57917,57917,57917,57917,57917,57917,59456,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59531,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59541,57944,57944,57944,57944,57944,57944,57944,57944,59552,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60439,57944,57944,57944,57944,57944,57944,57944,60444,57944,57944,57944,57944,57944,57944,57944,57944,59582,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,3655,529,57894,61002,57894,0,0,0,0,0,0,0,2399,0,0,0,0,0,0,0,0,0,0,0,0,0,2410,0,0,0,0,0,0,0,0,0,0,0,0,0,1885,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,0,0,0,0,0,529,529,529,2427,2428,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3248,529,529,529,529,529,529,529,529,529,529,529,2476,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2495,529,529,529,529,529,529,529,0,2938,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,60290,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58843,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,58776,992,57894,57894,57894,57894,57894,59908,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59928,57894,57894,57894,57894,57894,57894,59349,57894,57894,57894,57894,57894,57894,57894,57894,57894,59361,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61237,57917,57917,57917,57917,57917,60017,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,60029,57944,60031,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60727,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,57944,60100,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,3160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,2783,0,2785,0,0,2788,0,0,0,0,0,0,2793,0,0,0,2796,0,0,0,0,0,0,0,0,0,0,0,0,0,2792,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,401408,0,0,0,0,0,0,0,0,0,0,2806,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2820,0,2821,0,2823,0,0,0,0,0,0,0,0,0,0,0,2323,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2336,0,0,0,2857,0,0,0,0,0,2863,0,0,0,0,2866,0,0,0,0,0,0,0,0,0,2874,0,529,529,529,529,529,529,529,529,529,529,529,529,1912,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,58776,916,57894,57894,57894,57894,57894,57894,57894,57894,58787,57894,57894,57894,529,529,529,529,529,2885,529,529,2888,2889,529,529,529,529,529,2894,529,2896,529,529,529,529,2900,529,529,529,529,529,529,529,529,529,529,529,529,2486,529,529,529,529,529,2490,2491,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2893,529,2895,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1945,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2463,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2906,529,529,529,529,529,529,529,529,2914,529,529,529,529,529,529,2922,529,529,529,529,529,2927,529,529,529,529,529,529,529,529,529,529,529,529,2918,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1919,529,529,529,529,529,529,529,529,529,529,529,529,60298,57894,57894,57894,57894,57894,60303,57894,60305,57894,57894,57894,57894,60309,57894,57894,57894,57894,57894,57894,57894,57894,57894,60315,57894,57894,57894,57894,57894,57894,57894,57894,57894,59912,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,2090,57917,57917,57917,57917,57917,57917,57917,57917,57894,60324,57894,57894,57894,57894,57894,57894,60332,57894,57894,57894,57894,57894,60337,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58818,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58853,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,58776,992,57917,60372,57917,57917,57917,57917,60376,57917,57917,57917,57917,57917,57917,57917,57917,57917,60382,57917,57917,57917,57917,57917,57917,57917,57917,57917,60391,57917,57917,57917,57917,57917,57917,57917,57944,57944,60958,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60975,57944,57917,60399,57917,57917,57917,57917,57917,60404,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60036,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60447,57944,57944,57944,57944,57944,57944,57944,57944,57944,60456,57944,57944,57944,57944,57944,57944,60464,57944,57944,57944,57944,57944,60469,57944,57944,57944,57944,57944,529,529,3819,57894,57894,61165,3822,0,0,0,0,3826,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1176,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,3254,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3263,529,529,3266,529,529,3269,0,0,60614,57894,57894,57894,57894,57894,57894,57894,59382,57894,57894,57894,59387,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59395,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60646,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60656,57894,57894,60659,57894,57894,60662,0,0,60663,57917,57917,57917,57917,59448,57917,57917,57917,57917,59454,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59465,57917,57917,57917,57917,59469,57917,57917,57917,57917,57917,57917,57917,57917,60695,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60705,57917,57917,60708,57917,57917,60711,60712,3417,529,529,60764,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3434,3435,0,0,0,0,3440,0,0,0,0,0,0,0,0,1288,0,0,0,0,1293,0,0,0,0,1296,0,0,0,0,0,0,0,0,0,0,0,0,1308,529,529,529,529,529,57894,57894,60874,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60891,57894,60893,57894,57894,57894,57894,57894,57894,61222,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61235,57917,57917,57917,57917,57917,57917,57917,57917,59971,57917,59973,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60414,57917,57917,57917,57944,57944,57944,57944,57944,57944,60420,60977,57944,57944,57944,57944,57944,57944,57944,60984,57944,57944,60986,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,0,0,0,0,3827,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1175,0,0,0,0,1180,0,0,0,0,0,0,0,0,0,3661,0,3663,0,0,0,3667,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,3226,529,529,529,529,529,529,529,3708,3709,529,529,529,529,3713,3714,529,529,529,529,529,3718,529,529,529,529,529,529,529,3723,529,529,529,529,529,529,529,529,1939,529,529,529,1944,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2925,529,529,529,529,529,529,529,529,529,529,529,529,57894,57894,57894,57894,61095,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,61108,61109,57917,57917,57917,57917,61113,61114,57944,57944,61137,61138,57944,57944,57944,57944,61142,61143,57944,57944,57944,57944,57944,61147,57944,57944,57944,57944,57944,57944,57944,57944,61153,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60987,57944,60989,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3681,0,3834,0,0,0,0,0,3840,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2439,529,529,2443,529,529,529,2447,529,529,529,529,529,3855,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61217,57894,57894,57894,57894,57894,57894,59380,59381,59383,57894,57894,57894,57894,57894,57894,57894,59391,59392,57894,59394,57894,57894,59397,59398,57894,57894,57894,57894,57894,57894,57894,59406,57894,57894,57894,61309,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61325,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,60963,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60976,57894,57894,57894,57917,57917,61395,57917,57917,57917,57917,61400,57917,57917,57917,57917,61405,57917,57917,57917,57944,57944,61411,57944,57944,57944,57944,61416,57944,57944,57944,57944,61421,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,529,529,529,4252,4253,529,529,57894,57894,57894,61602,61603,57894,57894,57894,57917,57917,57917,61608,61609,57917,57917,57917,57944,57944,57944,61614,61615,57944,57944,57944,0,0,0,0,0,529,529,529,529,529,529,57894,57894,57894,57894,57894,60877,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59353,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59371,59372,57894,57894,57917,57944,57944,57944,57944,0,0,529,529,57894,57894,57917,57917,57944,57944,0,529,57894,57917,57944,0,529,57894,57917,57944,4319,4320,61665,61666,61667,0,529,529,529,529,529,529,529,529,61565,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61573,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58385,57917,57917,57917,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,346,347,348,349,350,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,0,297,0,0,0,0,0,0,1313,0,0,0,0,0,0,0,0,0,1319,1280,0,1303,1322,0,1325,0,0,1239,0,0,0,0,0,1333,0,0,1216,1333,1340,529,529,529,529,1346,529,529,529,529,1352,529,529,529,529,529,529,529,529,529,529,1373,0,0,0,0,0,394,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,0,516096,0,0,0,0,0,350,131072,348,0,350,349,348,349,0,348,349,349,349,459,466,483,483,483,494,494,494,494,501,494,494,501,501,501,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,514,542,57908,542,57908,542,542,57908,542,542,57931,57908,542,542,57908,57908,57908,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,647,0,0,0,0,652,57908,57931,57908,57908,57908,57908,57908,57908,57908,57931,57931,57908,57908,57958,57908,57908,57908,57908,57908,57908,57908,57958,57958,57908,57908,57908,57908,57958,57958,57908,542,57908,653,654,655,656,657,658,0,0,0,0,0,0,0,0,0,0,0,0,0,0,673,674,0,676,677,0,0,0,0,0,683,0,0,0,0,0,0,4268782,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2828,0,0,0,0,0,716,0,0,719,0,721,0,723,0,0,0,0,0,0,0,0,0,0,0,735,0,0,0,0,0,0,0,0,0,0,0,0,3186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,3489,529,529,529,529,529,529,529,529,0,0,0,0,783,784,0,786,787,0,0,0,0,786,0,0,793,0,0,0,0,0,0,0,0,0,800,0,0,0,0,0,0,0,0,0,1801,0,0,0,0,0,0,0,0,0,0,0,1813,0,0,0,0,0,0,0,0,0,0,0,304,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,313,312,0,0,0,312,312,313,313,811,0,0,692,0,0,0,786,0,0,0,0,0,0,0,0,767,823,0,0,0,0,0,0,827,699,0,0,831,0,0,0,0,0,0,0,3474,3475,0,0,0,0,3480,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,3949,529,3951,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,833,0,0,0,692,699,0,0,692,831,831,0,0,0,0,0,529,529,851,855,858,529,867,529,529,529,883,885,888,529,529,529,0,0,0,0,57894,57894,57894,57894,59858,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59921,57894,57894,57894,57894,59925,57894,57894,57894,57894,57894,59930,901,905,529,529,529,57894,57894,57894,58270,58274,58277,57894,58286,57894,57894,57894,58302,58304,58307,57894,57894,57894,58320,58324,57894,57894,57894,0,57917,57917,57917,58346,58350,58353,57917,58362,57917,57917,57917,58378,58380,58383,57917,57917,57917,58396,58400,57917,57917,57917,0,0,0,0,58411,57944,57944,57944,58421,58425,58428,57944,58437,57944,57944,57944,57944,57944,57944,57944,57944,61484,57944,61486,57944,57944,61488,57944,57944,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,1348,529,529,529,529,529,1360,529,529,529,529,529,529,529,529,57944,57944,58453,58455,58458,57944,57944,57944,58471,58475,57944,57944,57944,851,1142,529,901,905,1146,0,58491,58270,57894,58320,58324,58496,155943,1153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1748,1749,0,0,0,0,0,0,0,0,0,0,0,0,0,262144,0,0,0,0,0,0,262144,262144,262144,0,0,0,0,0,0,0,0,0,1189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1202,0,0,0,0,0,0,0,0,0,0,0,368,368,1213,0,0,0,0,0,0,1798,0,0,0,0,0,0,0,0,0,0,0,0,1811,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3187,0,0,0,0,3192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3215,0,0,3218,0,0,0,0,0,0,0,3222,529,529,529,529,529,529,529,529,529,1378,529,529,529,1381,529,529,529,529,529,529,529,1388,529,529,1392,529,529,529,529,529,529,529,529,529,529,529,1403,529,529,529,529,529,529,529,1417,529,529,529,529,529,529,529,529,529,529,58776,916,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61459,57894,57894,61461,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61473,57917,57917,61475,57917,529,1410,529,529,529,529,529,529,529,529,529,529,1424,529,529,529,529,529,58776,916,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60335,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60346,57894,57894,57894,57894,57894,57917,57917,57917,58958,57917,57917,57917,57917,57917,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61150,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59006,57944,57944,57944,59009,57944,57944,57944,57944,57944,57944,57944,59016,57944,57944,59020,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,0,0,0,0,2777,0,0,0,0,59032,57944,57944,59039,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59053,57944,57944,57944,57944,57944,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60884,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58814,58816,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60631,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59919,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,1792,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1819,0,0,0,0,0,0,0,0,1853,0,0,0,0,0,0,1751,0,0,0,0,0,0,0,0,0,0,1869,1870,0,0,0,1873,0,0,0,1826,0,1828,0,0,0,1830,0,748,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5627904,0,0,0,1876,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1760,0,0,0,0,0,0,529,1895,529,529,529,0,0,0,0,57894,57894,57894,59857,57894,59859,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,61229,57917,57917,57917,61232,57917,57917,57917,57917,57917,57917,57917,57917,57917,529,529,529,1901,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1923,529,529,529,529,529,529,529,529,529,529,529,1943,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1984,529,529,529,58776,0,57894,57894,57894,57894,57894,57894,57894,529,529,1932,529,529,529,1936,529,529,1941,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3267,529,529,0,0,57894,57894,57894,57894,57894,57894,57894,59344,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59366,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60903,57894,60905,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59974,57917,57917,57917,57917,57917,57917,59979,57917,59981,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61247,57944,57944,57944,57944,57944,57944,57944,61252,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,2775,2295,0,2776,2298,0,0,0,0,0,0,57894,59375,57894,57894,57894,59379,57894,57894,59384,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60658,57894,57894,57894,57894,0,0,57917,57917,57917,59444,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59466,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58387,57917,57917,57917,57917,58405,57917,57917,0,0,0,0,57894,57944,57944,58415,57944,57944,57944,57944,57944,57944,59475,57917,57917,57917,59479,57917,57917,59484,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60707,57917,57917,57917,57917,57944,57944,57944,59575,57944,57944,59580,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59026,57944,57944,57944,57944,0,0,2296,0,1157,0,0,0,0,2299,0,1162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1187,0,2474,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1407,57894,57894,57894,59906,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,0,57917,57917,57944,57944,57944,57944,57944,57944,57944,60078,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,3654,529,529,61001,57894,57894,0,0,0,0,0,2808,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2831,0,0,0,0,0,0,4785119,991,991,991,4850655,991,991,991,991,991,4916191,991,4957151,4973535,991,991,991,991,991,991,5071839,991,991,991,991,991,991,991,991,991,0,915,4359059,4359059,4359059,4359059,4359059,4858771,4875155,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,4359059,5260179,529,529,529,529,2937,529,529,0,0,0,2939,0,1990,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60632,57894,57894,60635,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,0,0,3006,0,2090,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58913,57917,57917,57917,57917,60713,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60737,57944,57944,57944,57944,57944,57944,57944,57944,57944,60080,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60466,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,3425,0,0,0,0,0,0,0,0,0,3431,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2409,0,0,0,0,0,0,0,0,0,0,0,2419,0,0,3662,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1822,0,61306,57894,57894,57894,57894,57894,61312,57894,57894,57894,57894,57917,57917,57917,61318,57917,57917,57917,57917,61322,57917,57917,57917,57917,57917,61328,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,0,0,4212,0,529,529,529,529,57944,61334,57944,57944,57944,57944,61338,57944,57944,57944,57944,57944,61344,57944,57944,57944,57944,529,57894,0,0,0,0,0,0,0,0,3681,0,4011,0,0,0,0,0,0,1879,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1865,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,4032,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61103,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58897,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58930,57917,58932,57917,57917,57917,57917,57917,57917,57917,58945,57917,57917,57917,57917,57917,57917,57894,57894,57894,57917,57917,57917,57917,57917,61398,57917,57917,57917,61402,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,61414,57944,57944,57944,61418,57944,57944,57944,0,0,0,0,0,0,0,4086,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,4100,529,529,529,529,529,529,529,529,529,529,3238,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3251,529,529,529,529,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,4247,0,4249,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,61079,61080,57894,57894,57894,57894,61084,61085,57894,57894,57894,57894,57894,61089,57894,57894,57894,57894,57917,57944,57944,57944,57944,0,0,529,529,57894,57894,57917,57917,57944,57944,0,529,57894,57917,57944,4314,4315,61660,61661,61662,0,529,57894,57917,57944,0,529,529,529,529,529,529,529,1906,529,529,529,529,529,529,529,529,529,1918,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3863,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58817,57894,57894,57894,58820,57894,57894,57894,57894,57894,57894,57894,58827,57894,57894,58831,57894,57894,0,0,392,0,0,0,396,392,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3462,0,0,0,0,0,351,0,410,0,0,0,0,0,0,0,0,0,0,0,0,410,0,0,0,0,0,0,410,0,351,0,139264,147456,0,0,0,0,0,0,0,0,2320,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2333,0,0,0,0,0,0,0,0,0,0,3451,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2332,0,0,0,0,0,0,0,0,0,0,0,131072,0,437,0,0,0,0,450,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,508,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,515,543,57909,543,57909,543,543,57909,543,543,57932,57909,543,543,57909,57909,57932,57909,57909,57909,57909,57909,57909,57909,57932,57932,57909,57909,57959,57909,57909,57909,57909,57909,57909,57909,57959,57959,57909,57909,57909,57909,57959,57959,57909,624,57909,57975,57975,57975,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,3671,3672,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,385024,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,529,529,910,529,529,57894,57894,58264,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58311,57894,57894,57894,57894,58329,57894,57894,0,57917,57917,58340,57917,57917,57917,57917,59514,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59525,59527,57917,57917,57917,57917,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59011,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59591,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58462,57944,57944,57944,57944,58480,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,155943,1153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1746,1747,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,670,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1169,1170,0,0,0,0,0,0,1302,0,0,0,0,0,0,57894,58796,57894,57894,57894,57894,58806,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58822,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61224,57894,57894,57894,57894,57917,57917,57917,57917,57917,61230,57917,57917,57917,61234,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58877,57917,57917,57917,57917,57917,57917,57917,57917,57917,58891,57917,57917,57917,57917,58901,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58398,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57917,57917,58917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58939,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,58976,57944,57944,57944,57944,57944,58988,57944,57944,57944,57944,57944,57944,57917,57917,58956,57917,57917,57917,57917,57917,57917,0,57894,57944,57944,57944,58971,57944,57944,57944,57944,57944,57944,57944,57944,57944,58985,57944,57944,57944,57944,58995,57944,57944,57944,57944,57944,57944,57944,57944,57944,60985,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3830,0,3831,0,0,0,0,57944,59034,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59051,57944,57944,57944,57944,57944,57944,529,1357,529,529,529,529,58796,57894,57894,57894,57894,57894,57894,57894,57894,61223,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,61231,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60931,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60941,57917,57917,57917,57917,57917,57917,57917,57917,57917,1153,0,0,1731,0,0,0,0,1738,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1183,0,0,0,0,0,0,0,0,0,0,1764,0,0,0,0,0,0,0,0,0,0,0,0,1777,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1277,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2353,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,57895,529,57895,529,529,57895,529,529,57918,57895,529,529,57895,57895,1823,0,0,0,0,0,0,0,1259,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1211,0,368,368,0,1214,0,0,1732,0,0,0,0,0,0,1739,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2315,0,0,0,0,0,0,6463488,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4931584,4939776,0,0,0,0,0,0,5054464,0,0,0,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60368,57917,57917,57917,57917,57917,59994,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60007,57917,57917,57917,57917,57917,60011,60012,60013,57917,57917,57917,57917,57917,57917,57917,59518,57917,57917,57917,57917,57917,57917,59524,57917,57917,57917,57917,57917,57917,57894,57944,57944,57944,57944,57944,59536,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60428,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61148,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,2454,529,529,529,529,529,529,2459,529,2461,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2924,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2912,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,0,0,57894,57894,57894,57894,57894,0,0,2597,0,0,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58912,57917,57917,57917,58915,57917,3939,0,0,0,0,0,529,3942,529,529,3944,529,529,529,529,529,529,529,529,529,529,529,529,529,57894,61301,57894,57894,61303,57894,57894,57894,1,24578,3,155943,156283,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1886,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,57944,57944,61335,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,57894,0,0,0,0,0,0,0,0,3681,0,0,0,0,0,0,0,0,2347,2348,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2312,0,0,0,0,0,0,0,4015,0,4017,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,749,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1872,0,57917,57917,58357,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,57944,57944,57944,57944,58432,57944,57944,57944,57944,57944,57944,57944,57944,57944,61341,57944,57944,57944,57944,57944,57944,57944,529,57894,0,4005,0,0,4008,0,0,0,3681,0,0,0,0,0,0,0,0,1310,0,529,529,1342,529,1345,529,529,529,529,529,529,529,529,1359,529,1364,529,529,1368,529,529,1371,0,1163,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221654,221654,529,529,529,2909,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,0,0,57894,57894,57894,57894,60617,57944,57944,57944,57944,57944,57944,57944,60451,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59597,57944,57944,59600,57944,57944,57944,57944,57917,61116,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60969,57944,57944,57944,57944,57944,57944,57944,0,0,0,353,131072,0,0,353,399,0,399,0,0,399,399,399,353,399,0,0,0,399,399,399,399,399,502,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,399,544,57910,544,57910,544,544,57910,544,544,57933,57910,544,544,57910,57910,57910,57933,57910,57910,57910,57910,57910,57910,57910,57933,57933,57910,57910,57960,57910,57910,57910,57910,57910,57910,57910,57960,57960,57910,57910,57910,57910,57960,57960,57910,544,57910,57910,57910,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,245760,245760,245760,245760,245760,245760,245760,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,342,0,0,813,814,0,0,0,0,0,0,768,0,0,819,0,0,665,0,0,0,819,0,0,0,0,0,0,0,0,0,0,0,0,212992,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,675,0,0,0,0,0,0,0,0,0,0,834,0,0,0,0,0,0,814,0,0,0,0,0,0,0,529,529,852,529,529,529,868,872,529,529,529,529,529,893,895,529,529,529,529,529,529,529,1937,1938,1940,529,529,529,529,529,529,529,1948,1949,529,1951,529,529,1954,1955,529,529,529,529,529,529,529,0,0,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60295,57894,57894,529,906,529,529,529,57894,57894,58265,58271,57894,57894,57894,58287,58291,57894,57894,57894,57894,57894,58312,58314,57894,57894,58325,57894,57894,57894,0,57917,57917,58341,58347,57917,57917,57917,58363,58367,57917,57917,57917,57917,57917,58388,58390,57917,57917,58401,57917,57917,57917,0,0,0,0,57894,57944,57944,58416,58422,57944,57944,57944,58438,58442,57944,57944,57944,57944,57944,58463,58465,57944,57944,58476,57944,57944,57944,852,529,895,529,906,529,0,57894,58271,58314,57894,58325,57894,155943,1153,0,303,0,0,0,0,0,0,2786,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2798,0,0,0,0,0,2802,0,0,0,0,0,0,0,0,661,662,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1817,0,0,0,0,0,0,0,0,0,1218,0,1220,0,1222,0,0,0,0,0,0,0,0,0,0,0,0,0,1236,0,1238,0,0,0,0,0,0,1245,0,0,0,0,0,307,0,0,0,0,0,0,0,0,0,0,0,0,307,0,0,0,0,0,0,307,237985,147456,0,0,0,307,1,24578,3,0,0,4366336,0,0,0,0,0,65536,304,0,4268032,98304,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,663,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1250,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1278,0,0,0,0,0,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,307,0,307,0,0,0,0,0,0,0,0,0,0,0,0,1171,1172,1173,1174,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,415,0,0,0,0,0,0,415,139264,147456,0,0,0,424,0,0,1335,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2446,529,529,529,529,529,1375,1377,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1401,529,529,529,0,0,2508,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59870,57894,57894,59874,57894,57894,57894,59878,529,529,529,529,529,1415,529,529,529,529,529,529,529,529,1427,1428,529,529,58776,916,57894,57894,57894,57894,58783,57894,57894,57894,57894,57894,57894,57894,0,0,0,0,57917,57917,59945,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60681,57917,57917,60684,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,59003,59005,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59030,57944,57944,57944,57944,57944,57944,57944,59044,57944,57944,57944,57944,57944,57944,57944,57944,59056,59057,57944,57944,529,529,1718,529,529,1721,57894,57894,59067,57894,57894,59070,0,1847,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1794,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1810,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,368,0,0,0,0,0,0,0,0,0,0,0,0,713,0,529,1899,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1924,529,529,529,529,529,529,529,0,2938,0,0,0,0,57894,57894,57894,60286,57894,60287,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59357,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58856,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,58776,992,529,1964,529,529,529,1970,529,529,529,529,529,529,529,529,529,1979,529,529,529,529,1985,529,529,58776,0,57894,57894,57894,57894,57894,57894,57894,0,0,0,0,57917,59944,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59530,57917,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59342,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59367,57894,57894,57894,57894,57894,57894,57894,0,0,0,0,59943,57917,57917,57917,57917,57917,57917,57917,59951,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59457,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60683,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59407,57894,57894,57894,59413,57894,57894,57894,57894,57894,57894,57894,57894,57894,59423,57894,57894,57894,57894,59429,57894,57894,50679,0,57917,57917,57917,57917,57917,57917,57917,59442,57917,57917,57917,59513,57917,57917,57917,57917,57917,57917,57917,57917,57917,59523,57917,57917,57917,57917,59529,57917,57917,57894,57944,57944,57944,57944,57944,57944,57944,59538,57944,57944,57944,57944,57944,57944,57944,57944,57944,61485,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,2429,529,529,529,529,529,529,529,529,529,529,529,2441,529,529,529,529,529,529,529,529,529,57944,57944,59609,57944,57944,57944,57944,57944,57944,57944,57944,57944,59619,57944,57944,57944,57944,59625,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,0,0,0,0,2809,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,418,418,0,0,0,0,2394,0,2396,2397,2398,0,2400,0,0,0,0,0,0,0,0,0,0,2408,0,0,0,0,2413,2414,0,0,0,0,0,2418,0,0,0,0,0,0,2836,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,347,0,0,0,0,0,0,0,0,0,0,2424,529,529,529,529,529,529,2431,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2466,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2455,529,529,529,529,529,529,529,529,2462,529,2464,529,2467,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3508,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1982,529,529,529,529,529,58776,0,57894,57894,57894,57894,57894,57894,57894,529,2475,529,529,529,529,529,2481,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3268,529,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,59907,57894,57894,57894,57894,57894,59913,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58859,57894,57894,57894,57894,57894,57894,57894,57894,50679,58776,992,0,2781,2782,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1276,0,0,0,0,0,0,2833,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2847,0,0,0,0,0,0,0,0,0,0,0,354,355,356,0,0,0,0,0,0,0,0,0,0,0,0,0,368,0,297,0,0,529,529,529,529,529,529,2886,529,529,529,529,529,2891,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2898,529,529,529,529,529,529,529,2903,529,529,529,529,529,2907,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3726,529,57894,57894,57894,60300,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60316,57894,57894,57894,57894,57894,57894,57894,0,0,0,2598,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61131,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,60448,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60072,57944,57944,0,3178,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,352256,352256,529,3228,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,0,0,57894,60615,57894,57894,57894,60618,57894,60619,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59902,57894,57894,57917,57917,57917,60667,57917,60668,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59986,57917,57917,57917,57917,57917,57944,57944,57944,57944,60716,57944,60717,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60093,57944,57944,57944,57944,60097,57944,57944,0,0,0,3445,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1331,0,0,0,529,529,529,529,529,57894,60873,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59900,57894,57894,57894,57894,57894,57894,57944,57944,57944,61336,57944,57944,57944,57944,57944,57944,57944,57944,57944,61345,57944,57944,57944,529,57894,0,0,0,0,0,0,0,0,3681,0,0,0,0,0,0,0,0,2402,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,678,0,0,0,0,0,0,57894,57894,57894,57894,57894,61453,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,61467,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58884,57917,57917,57917,57917,57917,57917,58899,57917,57917,57917,58904,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60026,57944,57944,57944,57944,57944,57944,57944,60034,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,303,307,0,0,0,0,0,0,0,0,57944,57944,57944,57944,57944,61481,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,0,0,0,4155,0,529,529,529,529,529,529,529,529,529,1419,529,529,529,529,529,529,529,529,58776,916,57894,57894,57894,57894,57894,57894,57894,57894,57894,58788,57894,57894,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,4245,0,0,0,0,529,529,529,529,529,4254,529,57894,57894,57894,57894,57894,57894,57894,59885,57894,57894,57894,57894,57894,57894,59890,57894,59892,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61462,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61476,57894,61604,57894,57894,57917,57917,57917,57917,57917,61610,57917,57917,57944,57944,57944,57944,57944,61616,57944,57944,0,0,4275,0,4277,529,529,529,529,529,529,57894,57894,57894,57894,60876,57894,57894,57894,57894,60880,57894,57894,57894,57894,57894,57894,57894,60886,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60649,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,3005,0,57917,57917,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,0,0,4295,0,529,529,529,529,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,4276,0,529,529,529,529,529,529,57894,354,0,0,0,0,0,397,398,400,401,0,0,0,0,0,0,0,0,0,0,0,400,401,0,0,406,0,0,0,0,0,371,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,379,0,0,0,0,371,0,388,0,379,409,0,400,401,0,0,371,0,0,354,0,0,0,371,0,412,414,0,371,401,0,0,371,379,0,139264,147456,401,412,0,0,0,131072,0,438,0,443,0,443,0,414,443,443,443,0,467,0,0,0,495,495,495,495,495,495,495,495,495,495,516,516,516,516,516,516,516,528,516,516,516,528,516,516,516,516,516,516,545,57911,545,57911,545,545,57911,545,545,57934,57911,545,545,57911,57911,57934,57911,57911,57911,57911,57911,57911,57911,57934,57934,57911,57911,57961,57911,57911,57911,57911,57911,57911,57911,57961,57961,57911,57911,57911,57911,57961,57961,57911,625,57911,57976,57976,57976,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,644,0,0,0,0,0,0,0,0,0,0,682,0,0,0,0,0,0,681,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2794,2795,0,2797,0,2799,0,0,0,0,0,0,0,0,2804,529,529,529,529,529,57894,57894,58266,57894,57894,57894,57894,57894,57894,58297,58299,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,57917,57917,58342,57917,57917,57917,57917,59515,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59526,57917,57917,57917,57917,57917,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58484,529,529,529,529,1145,914,0,57894,57894,57894,57894,58495,58333,155943,1153,0,0,0,0,58448,58450,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,155943,1153,0,0,0,0,0,0,0,0,0,0,0,1742,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,3491,529,529,529,529,529,529,0,0,0,0,0,1164,0,0,1166,0,0,0,0,0,0,0,0,0,0,0,0,1179,0,0,0,0,0,0,0,0,0,0,0,648,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3716,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3243,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,0,0,0,0,0,1312,1338,1339,0,1312,529,529,529,529,529,529,1347,529,529,529,1351,529,529,1362,529,529,1366,529,529,529,529,529,529,529,529,529,1420,529,529,529,529,529,529,529,529,58776,916,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58846,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,58776,992,57894,57894,58801,57894,57894,58805,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58824,57894,57894,57894,58828,57894,57894,57894,57894,57894,57894,57894,60331,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60639,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,58919,57917,57917,57917,58923,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58943,57917,57917,57917,57917,57917,57917,57917,0,1793,0,1795,0,0,0,1799,0,0,0,1803,0,0,0,1807,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3486,0,529,529,529,529,529,529,529,529,529,529,57944,57944,57944,57944,57944,57944,57944,59549,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59567,59568,57944,57944,57944,57944,57944,529,3818,529,57894,61164,57894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1816,0,0,0,0,0,0,0,0,0,0,0,0,2318,0,2319,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2334,0,0,0,0,0,0,0,0,0,1855,0,1857,0,0,0,0,0,0,0,1864,0,0,0,0,0,0,0,0,0,0,0,0,0,312,411,313,0,0,0,0,0,0,313,416,0,0,139264,147456,0,0,0,0,0,0,0,0,0,1259,0,0,0,0,0,0,0,0,0,0,2378,0,0,0,0,0,0,0,0,0,0,2389,0,0,0,0,0,0,0,0,2838,0,0,0,0,0,2842,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2856,2420,0,0,2423,0,529,529,2426,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,58776,0,57894,57894,57894,57894,57894,57894,57894,57917,57917,59992,59993,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60004,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58889,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61129,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,60016,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,60028,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59626,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,57944,57944,60075,60076,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60087,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61490,0,0,4149,4150,0,0,0,0,0,0,0,529,529,529,4160,529,60099,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,2768,2769,57894,57894,57894,60117,60118,0,0,1732,0,0,1739,0,0,0,0,0,0,0,0,0,1882,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,863,529,529,529,529,529,529,529,529,529,529,529,529,2908,529,529,529,529,529,529,529,529,529,529,2919,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,57894,57894,57894,61210,57894,57894,57894,61213,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60329,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60347,57894,57894,57894,57944,57944,57944,57944,57944,60449,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60461,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61146,57944,57944,57944,57944,57944,57944,57944,57944,61152,57944,61154,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,3256,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,0,2508,57894,57894,57894,57894,57894,57894,57894,57894,61314,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61330,57917,57917,57944,57944,57894,57894,61308,57894,61310,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61324,57917,61326,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,61545,57944,61547,57944,57944,57944,57944,0,0,0,0,0,0,0,0,0,0,4214,529,529,529,61449,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61463,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59488,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60384,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60396,57917,61477,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,4152,0,0,0,0,529,529,529,529,529,529,529,529,529,1974,529,529,529,529,529,529,1980,529,529,529,529,529,529,58776,1989,57894,57894,57894,57894,57894,59340,57894,529,529,529,529,529,4166,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61522,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59455,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60387,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,61535,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61548,57944,57944,57944,0,4208,0,0,0,0,0,0,0,0,529,529,4215,529,529,529,529,529,529,529,1972,1973,529,529,529,529,529,529,529,529,529,529,529,529,529,529,58776,0,57894,57894,57894,57894,57894,57894,57894,0,0,2597,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59959,57917,57917,59963,4216,529,529,529,529,529,529,529,57894,57894,61566,57894,61567,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,61574,57917,61575,57917,57917,57917,57917,57917,57917,57917,57917,60671,57917,60674,57917,57917,57917,57917,60679,57917,57917,57917,60682,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,6e4,57917,57917,57917,57917,60005,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59489,57917,57917,57917,57917,57917,59496,57917,57917,57917,57917,57917,57917,57917,57917,59505,57917,57917,57917,57917,57944,57944,61582,57944,61583,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,58279,57894,57894,58295,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,57917,57917,57917,57917,413,0,0,0,131072,0,357,0,0,0,0,0,359,0,0,0,0,0,484,484,484,0,0,0,0,0,0,0,0,0,0,517,521,521,521,521,521,517,521,521,521,517,521,521,521,521,521,521,546,57912,546,57912,546,546,57912,546,546,57935,57912,546,546,57912,57912,57935,57912,57912,57912,57912,57912,57912,57912,57935,57935,57912,57912,57962,57912,57912,57912,57912,57912,57912,57912,57962,57962,57912,57912,57912,57912,57962,57962,57912,626,57912,57977,57977,57977,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,645,0,0,0,0,0,0,0,0,0,0,1856,0,0,0,0,0,0,0,1863,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,341,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2329,0,0,0,0,0,0,0,0,0,0,0,0,0,687,688,0,0,0,0,0,0,0,0,0,0,0,368,368,368,0,0,0,0,0,0,0,0,709,0,0,0,0,0,0,0,0,0,2321,2322,0,2324,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2338,0,0,0,0,796,0,0,0,0,0,0,0,0,645,0,0,796,529,848,529,529,529,529,869,873,879,529,884,529,529,529,529,529,529,529,529,529,2458,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3719,529,529,529,529,529,529,529,529,529,902,529,529,529,529,57894,57894,58267,57894,57894,57894,57894,58288,58292,58298,57894,58303,57894,57894,57894,57894,57894,58321,57894,57894,57894,57894,0,57917,57917,58343,57917,57917,57917,57917,59968,57917,59970,57917,57917,57917,57917,57917,57917,57917,59976,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59493,57917,57917,57917,57917,57917,57917,57917,57917,59502,57917,57917,57917,57917,57917,57917,57917,57917,58364,58368,58374,57917,58379,57917,57917,57917,57917,57917,58397,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,58418,57944,57944,57944,57944,58439,58443,58449,57944,58454,57944,57944,57944,57944,57944,58472,57944,57944,57944,57944,529,529,529,902,529,529,0,57894,57894,57894,58321,57894,57894,155943,1153,0,303,0,0,0,0,0,0,3181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,3227,307,0,0,0,0,0,0,0,0,1167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1184,0,0,0,0,0,0,0,0,3211,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,870,529,529,529,529,529,889,529,529,529,1216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1239,0,0,0,0,0,0,0,0,0,0,1883,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,4024,529,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,61383,57894,57894,57894,57894,57894,57894,1280,0,0,0,0,0,0,0,0,1289,0,0,0,0,0,0,0,0,0,1297,0,0,1167,0,0,0,1303,0,1305,0,0,0,0,0,0,0,3686,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3699,3700,0,0,0,0,529,529,4020,529,529,529,529,4025,529,529,529,529,4030,529,529,57894,57894,61379,57894,57894,57894,57894,61384,57894,57894,57894,57894,61389,1408,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1431,58776,916,58778,57894,57894,57894,57894,57894,58785,57894,57894,57894,57894,58791,58873,57917,57917,57917,57917,57917,58880,57917,57917,57917,57917,58886,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58907,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,57894,57944,57944,57944,57944,57944,57944,57944,58975,57944,57944,57944,58979,57944,57944,58990,57944,57944,58994,57944,57944,57944,57917,57917,57917,58920,57917,57917,57917,57917,58925,57917,57917,57917,57917,57917,57917,57917,57917,57917,58933,57917,57917,57917,58940,58942,57917,57917,57917,57917,57917,57917,57917,57917,57917,59453,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59471,59472,57917,57917,57917,57944,59001,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59014,57944,57944,57944,57944,59019,57944,57944,57944,57944,57944,59024,57944,57944,57944,59028,57944,57944,57944,57944,57944,57944,57944,57944,58468,57944,57944,57944,57944,529,529,529,898,529,529,0,57894,57894,57894,58317,57894,57894,155943,1153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,389,57944,59035,59037,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59060,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60883,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61227,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60680,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,1153,0,0,0,1732,0,0,0,0,1739,0,0,0,0,0,0,0,0,0,0,1750,1751,0,0,0,0,0,1757,0,0,0,0,0,0,0,0,3687,0,0,0,3690,0,0,0,0,0,0,0,0,3698,0,0,0,0,0,0,3701,0,3703,529,0,0,0,0,1796,0,0,0,0,0,0,0,1804,1805,0,0,0,0,0,0,1812,0,0,0,0,0,0,0,0,0,0,0,0,335872,0,0,0,0,0,0,0,0,0,0,0,0,0,139264,147456,0,0,335872,0,0,0,0,0,0,1878,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1891,0,1893,1869,529,529,529,529,529,529,529,529,529,2483,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2494,529,529,529,529,529,529,529,0,0,2508,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59388,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61228,57917,57917,57917,57917,57917,57917,57917,61233,57917,57917,57917,57917,57917,57917,57917,57917,529,529,529,529,529,529,1905,529,529,529,529,1911,529,529,529,529,529,529,529,529,529,529,1922,529,529,529,529,1926,529,529,529,529,529,529,529,529,2457,529,529,529,2460,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,58776,916,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59348,57894,57894,57894,57894,59354,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59365,57894,57894,57894,57894,59369,57894,57894,57894,57894,57894,57894,57894,57894,61456,57894,61458,57894,57894,61460,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,61470,57917,61472,57917,57917,61474,57917,57917,57944,57944,59544,57944,57944,57944,57944,59550,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59561,57944,57944,57944,57944,59565,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,57894,57894,3924,0,0,0,3926,0,0,0,0,0,0,3681,0,0,0,0,3937,0,0,57944,57944,57944,57944,59578,57944,57944,57944,59583,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60066,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59612,59613,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,2284,529,2286,529,529,59633,57894,59635,57894,57894,0,0,0,0,0,0,3448,3449,0,3450,0,3452,0,0,0,0,3454,0,0,0,0,0,0,0,0,0,0,0,3454,0,0,0,0,0,0,0,2864,0,0,0,0,0,0,0,0,0,2870,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,529,2435,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1387,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1402,529,0,2341,2342,0,0,2344,2345,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2365,0,0,0,0,0,0,3473,0,0,0,0,3478,3479,0,3481,0,0,3484,0,0,0,3487,529,529,529,529,529,529,3494,529,529,529,0,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,59863,57894,57894,57894,57894,59867,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58812,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58825,57894,57894,57894,57894,58830,57894,57894,57894,0,0,0,2369,0,0,0,0,0,0,0,2373,0,0,0,0,0,0,0,2381,0,0,0,0,2386,0,0,0,0,0,0,0,0,0,0,2372,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,335,336,337,0,0,0,0,0,57917,57917,57917,59967,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59977,57917,57917,57917,59980,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59522,57917,57917,57917,57917,57917,57917,57917,57917,57894,57944,59533,57944,57944,57944,57944,57944,57944,57944,59540,57917,57917,57917,60019,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60042,57944,57944,60046,57944,57944,57944,60050,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60060,57944,57944,57944,60063,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,3139,529,529,57894,57894,60486,57894,57894,0,0,0,0,0,0,0,0,0,0,57944,57944,57944,60102,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,2779,0,0,0,0,0,2862,0,0,0,0,0,0,0,0,0,0,2869,0,0,0,0,0,0,529,529,2876,529,529,529,529,529,529,529,529,529,529,529,2890,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1986,529,58776,1990,57894,57894,57894,57894,57894,57894,57894,529,529,529,529,2884,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2899,529,529,529,529,2902,529,529,2904,529,2905,60323,57894,57894,60327,57894,57894,57894,57894,57894,57894,57894,57894,57894,60336,57894,57894,57894,60339,60340,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60629,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60642,57894,57894,57894,57944,57944,57944,57944,57944,57944,57944,60425,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60440,57944,57944,57944,57944,60443,57944,57944,57944,57944,57944,57944,57944,57944,58470,57944,57944,57944,57944,529,529,529,900,529,529,0,57894,57894,57894,58319,57894,57894,295,1153,0,0,1157,0,60445,57944,60446,57944,57944,57944,57944,57944,57944,57944,57944,57944,60455,57944,57944,60459,57944,57944,57944,57944,57944,57944,57944,57944,57944,60468,57944,57944,57944,60471,60472,57944,57944,57944,57944,57944,57944,57944,59008,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,3660,0,0,3153,3154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3171,0,0,0,0,0,0,0,0,0,2839,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2361,0,2363,0,0,0,0,3204,0,3206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3219,0,0,0,0,0,0,529,529,529,529,529,529,529,529,2432,529,529,529,529,2436,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2487,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2501,529,529,529,529,3231,529,3234,529,529,529,529,3239,529,529,529,3242,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3864,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60622,57894,60625,57894,57894,57894,57894,60630,57894,57894,57894,60633,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60643,57894,57894,57894,57894,57894,57894,59909,59910,57894,57894,57894,57894,57894,57894,59917,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60634,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60692,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60709,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,0,0,0,0,0,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61090,57894,57944,60741,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60758,57944,57944,57944,57944,57944,57944,57944,57944,58473,57944,57944,57944,57944,529,529,529,903,529,529,0,57894,57894,57894,58322,57894,57894,155943,1153,0,0,0,0,1733,0,0,0,0,1740,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,352256,0,352256,352256,0,0,0,0,0,3444,0,0,3446,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3457,0,0,3460,0,3461,0,0,0,0,0,0,0,0,0,0,2310144,0,0,0,0,0,0,0,2310144,2310144,0,0,0,0,0,0,0,0,0,2310144,0,0,0,2310144,0,0,0,0,0,2310144,0,0,2310144,0,0,2310144,0,2310144,2310144,0,2310144,0,2310144,2310144,0,529,529,529,529,529,57894,57894,57894,60875,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60887,57894,57894,57894,57894,57894,57894,57894,57894,57894,60306,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,0,57917,57917,57917,57917,57917,57917,57917,57917,60895,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60909,57894,57894,57894,57894,57894,57917,57917,57917,60917,57917,57917,57917,57917,57917,57917,57917,57917,60929,57917,57917,57917,57917,57917,57917,57917,57917,60937,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59975,57917,57917,57917,57917,57917,57917,57917,57917,59982,57917,59984,57917,59987,57917,57917,57917,57917,57917,57917,60951,57917,57917,57917,57917,57917,57944,57944,57944,60959,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60971,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59553,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60732,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60979,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60993,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,0,0,3825,0,0,0,0,0,3828,0,0,0,0,0,0,0,0,0,0,0,0,0,3664,0,0,0,0,0,0,0,3670,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3196,0,0,0,0,0,3201,0,0,57944,57944,57944,57944,61139,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61149,57944,57944,57944,57944,57944,57944,61155,57944,61157,57944,57944,57944,0,0,0,0,0,4084,0,0,4087,0,0,0,0,0,529,529,529,529,529,529,529,529,529,529,529,4102,529,529,4104,3853,529,529,529,529,529,529,529,529,529,529,529,529,529,3862,529,529,529,57894,57894,57894,57894,57894,61211,57894,57894,57894,61215,57894,57894,57894,57894,57894,57894,57894,60647,57894,57894,57894,60650,57894,60652,57894,57894,57894,57894,57894,57894,57894,57894,60657,57894,57894,57894,57894,57894,0,0,57917,57917,57944,57944,57944,57944,61262,57944,57944,57944,57944,529,529,57894,57894,0,0,0,0,0,0,0,0,0,0,0,3681,0,0,0,0,0,0,0,0,0,0,2789,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,319488,319488,0,0,0,0,0,0,529,529,529,529,529,529,529,4168,57894,57894,57894,61516,57894,57894,57894,57894,57894,57894,57894,57894,61524,57894,57917,57917,57917,61529,57917,57917,57917,57917,57917,57917,57917,57917,61119,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60967,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57917,57917,61537,57917,57944,57944,57944,61542,57944,57944,57944,57944,57944,57944,57944,57944,61550,57944,0,0,0,0,0,4209,4210,4211,0,4213,529,529,529,529,529,529,529,529,2482,529,529,529,529,529,529,529,2488,529,529,529,529,529,529,2493,529,529,529,529,529,529,529,529,529,529,529,1910,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1928,1929,529,529,529,529,529,529,4219,4220,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,61570,61571,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,61578,61579,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,61586,61587,57944,57944,0,0,0,0,4248,0,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,58281,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,57917,57917,57917,57917,57917,57944,57944,57944,57944,4304,0,529,4305,57894,61650,57917,61651,57944,61652,0,529,57894,57917,57944,0,529,57894,57917,57944,0,529,57894,57917,57944,0,529,529,529,529,529,529,529,2456,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,3249,529,529,529,529,529,529,0,0,0,0,0,395,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,303,0,0,0,0,428,428,0,131072,428,0,0,0,428,0,0,455,0,0,0,428,0,485,485,485,0,0,362,362,362,362,504,362,362,362,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,485,547,57913,547,57913,547,547,57913,547,547,57936,57913,547,547,57913,57913,57913,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,4276224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,737,0,0,0,0,0,0,0,0,0,57913,57936,57913,57913,57913,57913,57913,57913,57913,57936,57936,57913,57913,57963,57913,57913,57913,57913,57913,57913,57913,57963,57963,57913,57913,57913,57913,57963,57963,57913,547,57913,529,907,529,529,529,57894,57894,57894,57894,57894,57894,57894,58289,57894,57894,57894,57894,57894,58308,57894,57894,57894,57894,58326,57894,57894,57894,0,57917,57917,57917,57917,57917,57917,57917,60927,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60945,57917,60947,57917,57917,57917,57917,57917,58365,57917,57917,57917,57917,57917,58384,57917,57917,57917,57917,58402,57917,57917,57917,0,0,0,0,58308,57944,57944,57944,57944,57944,57944,57944,58440,57944,57944,57944,57944,57944,57944,57944,59043,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,57917,57917,57917,57917,57944,57944,57944,57944,58459,57944,57944,57944,57944,58477,57944,57944,57944,529,529,529,529,907,529,0,57894,57894,57894,57894,58326,57894,155943,1153,0,1154,0,0,0,0,0,0,3685,0,0,0,0,0,0,0,0,0,0,0,0,0,3697,0,0,0,0,0,0,0,0,0,0,529,529,529,3943,529,529,529,529,3947,529,529,529,529,529,3953,529,529,529,57894,57894,57894,61302,57894,57894,57894,57894,1159,0,0,0,0,0,1165,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1241,0,0,0,0,0,57894,58797,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60322,57894,58953,57917,57917,57917,57917,57917,57917,57917,57917,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,58977,57944,57944,57944,58986,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59048,57944,57944,57944,57944,57944,57944,57944,57944,529,1358,529,529,529,529,58797,57894,57894,57894,57894,57894,0,0,0,0,0,1765,0,0,0,0,0,0,0,1773,0,0,0,0,0,0,0,0,0,1783,0,0,0,0,0,0,0,0,0,0,695,0,0,0,0,368,368,368,0,0,704,0,0,0,0,0,0,0,711,0,0,0,0,0,0,0,0,1850,0,1852,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3678,0,0,0,0,0,529,529,529,529,1934,529,529,529,529,529,529,529,529,529,529,529,1947,529,529,529,529,529,529,529,529,529,529,529,529,1960,529,529,529,0,2506,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59875,57894,57894,57894,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,648,0,0,0,0,0,0,0,0,540672,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,329,0,0,375,375,407,0,57894,57894,57894,59377,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59390,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59403,57894,57894,57894,57894,57894,57894,57894,60901,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,60918,57917,57917,57917,57917,60922,57894,57894,57894,57894,57894,59415,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59426,57894,57894,57894,57894,57894,50679,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,59972,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59467,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59477,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59490,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59503,57917,57917,57917,57917,57917,57917,57917,60928,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60943,57917,57917,57917,57917,57917,57917,57917,57917,57917,61120,57917,57917,57917,57917,57917,57917,61126,57917,61128,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60968,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59573,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59586,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59599,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60081,60082,57944,57944,57944,57944,57944,57944,60089,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,0,57894,57894,57894,57894,57894,57894,295,1153,0,0,0,0,57944,57944,57944,59611,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,59622,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,0,0,0,0,3941,529,529,529,529,3945,529,529,529,529,529,529,529,529,529,3954,529,529,61300,57894,57894,57894,57894,61304,57894,57894,57894,57894,57894,57894,59416,59417,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,50679,0,57917,57917,57917,57917,57917,57917,57917,57917,57917,59486,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59983,57917,57917,57917,57917,57917,57917,57917,57917,0,2395,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,507904,507904,57917,57917,59966,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60949,57944,57944,60049,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60759,57944,60421,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60473,529,529,529,529,529,3233,529,3235,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,58776,1990,57894,57894,57894,57894,57894,57894,57894,57917,57917,60666,57917,57917,57917,57917,57917,57917,60673,57917,60675,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60386,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,60715,57944,57944,57944,57944,57944,57944,60722,57944,60724,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60729,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3438,0,0,0,0,0,0,0,0,0,0,2334720,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139264,147456,0,0,0,0,529,529,529,3856,529,529,529,529,529,529,529,529,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61218,57894,57894,57894,57894,57894,57894,61454,57894,57894,57894,57894,57894,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,61468,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58991,57944,57944,57944,57944,57944,529,529,529,529,529,529,4167,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,61523,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59998,59999,57917,57917,57917,57917,57917,57917,60006,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58393,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57917,61536,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,61549,57944,57944,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,2913,529,529,2917,529,529,529,529,529,529,529,529,529,2926,529,529,529,2929,529,529,529,529,529,529,529,529,529,529,529,3505,529,529,529,529,529,529,529,529,529,3514,529,529,529,529,529,529,529,529,3522,529,57894,57894,57894,61629,57894,57917,57917,57917,57917,61633,57917,57944,57944,57944,57944,61637,57944,0,0,0,0,529,529,529,529,57894,57894,57894,57894,57917,57917,57917,57917,57917,57917,57917,57917,57944,57944,57944,57944,57944,57944,57944,57944,4274,0,0,0,0,529,529,529,529,4281,529,57894,0,0,0,0,363,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,262739,0,0,0,0,373,373,0,131072,373,0,0,0,373,0,0,0,0,0,0,373,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,378,0,0,0,0,0,0,0,0,0,57914,57937,57914,57914,57914,57914,57914,57914,57914,57937,57937,57914,57914,57964,57914,57914,57914,57914,57914,57914,57914,57964,57964,57914,57914,57914,57914,57964,57964,57914,548,57914,57914,57914,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,4276224,0,0,0,0,0,0,0,1270,0,0,0,0,0,0,0,0,0,0,57917,57917,58358,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,57944,57944,57944,57944,58433,57944,57944,57944,57944,57944,57944,57944,57944,59551,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60467,57944,57944,57944,57944,57944,57944,57944,57944,1309,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3467,57894,57894,57894,58802,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,0,57917,60664,57944,59036,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60881,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60310,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,0,0,1825,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1788,0,0,0,529,529,529,529,529,1935,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,1397,529,529,529,529,529,529,57894,57894,57894,57894,59378,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,59901,57894,57894,57894,57917,57917,57917,59478,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,59989,57917,57917,57944,59574,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60738,57944,0,0,0,0,0,3447,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,304,0,0,0,0,364,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,516569,516569,0,0,364,0,0,0,0,0,0,0,0,0,0,0,0,364,0,365,0,0,0,0,364,0,0,0,139264,147456,0,0,0,0,0,0,0,0,393687,0,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,393687,0,0,0,0,0,131072,0,0,0,444,0,444,0,365,444,444,444,0,468,0,0,0,496,496,499,499,499,499,499,505,506,499,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,518,549,57915,549,57915,549,549,57915,549,549,57938,57915,549,549,57915,57915,57938,57915,57915,57915,57915,57915,57915,57915,57938,57938,57915,57915,57965,57915,57915,57915,57915,57915,57915,57915,57965,57965,57915,57915,57915,57915,57965,57965,57915,627,57915,57978,57978,57978,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,4276224,1261,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,308,0,0,0,0,0,0,308,0,0,0,903,529,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58322,57894,57894,57894,57894,0,57917,57917,57917,57917,57917,57917,57917,61243,57917,57917,57917,57917,57944,57944,57944,57944,57944,61249,57944,57944,57944,61253,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,58483,529,854,529,529,529,913,0,58273,57894,57894,57894,57894,58332,155943,1153,0,0,0,0,0,2368,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1844,0,0,0,0,0,0,0,0,529,2425,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2469,529,529,529,529,529,529,57944,57944,60475,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,529,529,529,529,57894,57894,57894,57894,57894,0,0,0,0,0,0,0,0,0,0,0,664,0,0,667,668,0,0,0,0,0,0,0,0,0,0,679,0,0,0,0,0,57917,57917,58359,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,0,0,0,0,57894,57944,57944,57944,57944,57944,57944,58434,57944,57944,57944,57944,57944,57944,57944,57944,60054,57944,60056,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60460,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,0,1248,0,0,0,0,0,0,0,1256,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3170,0,0,0,0,3175,0,1153,0,1729,0,0,0,0,1736,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139264,147456,0,0,0,0,529,529,529,2505,0,0,0,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60317,57894,57894,57894,57894,57894,57894,0,0,0,0,2784,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,320,0,0,0,0,529,529,529,529,529,529,529,2887,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,58776,1991,57894,57894,57894,57894,57894,57894,57894,529,908,529,529,529,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,58327,57894,57894,57894,0,57917,57917,57917,57917,57917,57917,58922,57917,57917,58926,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58937,57917,57917,58944,57917,57917,57917,57917,57917,57917,57917,57917,58882,57917,57917,57917,57917,57917,58894,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,60383,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,57917,58954,57917,57917,57917,57917,57917,57917,57917,57917,0,57894,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,60061,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,57944,529,2451,529,2453,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2901,529,529,529,529,529,529,57894,57894,57894,57894,59882,57894,59884,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60660,57894,57894,0,0,57917,57917,0,2858,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,529,529,529,2433,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,61209,57894,57894,57894,57894,57894,57894,57894,61214,57894,57894,57894,57894,57894,529,529,529,529,2910,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,529,2938,0,57894,57894,57894,57894,57894,529,529,529,57894,57894,57894,0,3424,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,139264,147456,0,0,0,422,3680,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,529,529,529,529,529,529,0,0,0,0,131072,0,0,0,0,0,0,451,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3676,0,0,0,0,0,0,0,0,0,0,0,0,0,2310144,0,0,2310144,0,0,0,0,0,0,0,2310144,0,2310144,0,0,0,0,0,0,2310144,2310563,2310563,0,2310144,0,0,0,0,0,2310144,0,0,0,0,0,0,0,0,0,0,2310144,0,0,0,0,0,0,2310144,0,0,0,0,0,0,0,0,0,0,2812,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1182,0,0,0,0,1186,0,0,2310144,0,0,0,2310563,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,338,0,0,0,0,0,0,2310144,0,0,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310741,2310144,2310741,2310144,2310144,2310741,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,4276224,1261,0,0,0,0,0,0,1269,0,0,0,0,0,0,0,0,0,0,0,0,2318336,0,0,0,4268032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1329,0,0,1332,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6275072,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,0,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,0,0,3157,0,0,0,0,3161,0,0,0,0,0,0,0,3167,3168,3169,0,0,0,0,0,0,0,0,0,0,1314,0,0,0,0,0,1181,0,1320,0,0,0,0,0,0,0,0,0,1306,0,0,0,0,0,0,0,131072,0,0,0,0,0,0,0,0,0,0,0,0,469,2335206,2335206,2335206,469,469,469,469,469,469,469,469,469,469,2335239,2335239,2335239,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,4284416,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5341184,0,5652480,2335239,2335239,2335239,2335239,2335239,2335239,2335239,2335239,2335239,2335239,2335239,2335239,2335239,2335239,2335239,2335239,2335239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1266,1268,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2342912,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,368,368,0,0,0,0,0,0,0,420,0,0,0,0,0,0,0,0,0,0,0,0,2359296,0,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,2359296,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1778,0,0,0,0,0,0,0,0,0,0,0,0,0,2359296,2359296,2359296,1,24578,3,0,0,4366336,0,0,0,0,0,303,304,0,4268032,307,308,0,0,0,0,0,0,0,0,0,0,0,0,0,4284416,0,0,0,0,0,0,466944,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2367488,0,0,4268032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1818,0,0,0,0,0,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6275072,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,0,915,0,0,0,0,0,4857856,4874240,0,0,0,0,0,0,0,0,0,3476,0,0,0,0,0,0,3483,0,0,3485,0,0,529,529,3490,529,529,529,529,529,529,529,0,0,0,0,0,0,57894,57894,60285,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,57894,60293,57894,57894,57894,57894,0,5750784,0,0,0,0,0,5873664,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,0,991,4359059,5333907,5981075,4359059,0,5439488,5128192,4358144,5129107,915,5129183,991,5129107,4359059,0,4358144,915,991,4359059,0,4358144,915,991,4359059,0,4358144,915,991,4359059,6004736,6004736,0,0,0,1,24578,3,155943,155943,297,0,0,0,0,0,303,304,0,0,307,308,0,0,0,0,0,0,0,0,0,0,0,0,375,0,0,376,0,0,0,0,0,329,376,332,375,0,0,0,0,0,0,0,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,212992,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2354,0,0,0,0,0,0,0,0,0,0,0,0,0,212992,212992,212992,0,0,0,0,0,4366336,0,0,0,0,0,0,0,0,4268032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,370,0,0,0,417792,0,0,0,0,0,5840896,5849088,0,0,0,0,0,0,0,0,0,0,0,0,6275072,0,0,0,0,0,0,0,0,0,0,0,0,404,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,335,0,0,0,0,0,0,0,0,0,0,0,335,385,387,0,0,4882432,0,0,0,0,0,0,0,0,5939200,0,0,5677056,6365184,4866048,0,6070272,5545984,5152768,0,0,6144e3,4358144,4866048,4882432,4358144,4980736,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5177344,4358144,4358144,4358144,4358144,4358144,5242880,4358144,4358144,4358144,4358144,4358144,4358144,4358144,5341184,4358144,4358144,4358144,4358144,6045696,4358144,6070272,4358144,4358144,4358144,4358144,6348800,4358144,6144e3,0,6144e3,0,4988928,5005312,0,0,0,0,5775360,0,0,0,0,0,0,0,0,0,0,5693440,5005312,4358144,4358144,4358144,512e4,5136384,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,4358144,6324224,5914624,5914624,0,0,0,0,0,5513216,5783552,0,0,0,0,0,0,0,0,0,0,6299648,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4825088,0,0,0,0],r.EXPECTED=[338,346,354,643,1667,362,993,370,376,384,457,464,421,392,905,405,418,429,683,461,437,445,472,410,480,1434,488,507,515,523,531,539,547,555,563,571,579,1039,664,971,598,598,597,883,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,589,1845,606,614,622,637,1159,672,2252,451,1636,691,654,706,1194,715,729,944,1366,737,1224,1357,1868,759,772,790,805,858,811,1898,1255,819,827,835,2141,1209,843,1935,851,873,891,899,1712,913,930,938,1362,952,960,968,979,981,1412,989,1001,1447,1016,1329,764,1024,1032,1051,1059,1067,1075,1083,1090,1098,1575,1106,1114,1122,1130,2068,1145,777,1153,1179,1167,2093,1514,1175,1187,2238,719,721,1697,1520,1517,1785,1202,1427,1558,1217,1232,1891,1240,1248,1263,1271,1279,1287,1461,1800,1307,1315,1323,1337,1345,797,742,1374,1382,585,1397,751,1352,1405,1297,1299,1929,1420,1763,1997,1442,1455,1469,2231,1477,1485,2046,2224,1493,1500,1508,598,2283,1528,2209,1536,1544,1008,1552,1682,2187,1137,1566,2138,1583,1598,1606,1043,1571,1614,1622,1630,1719,1644,1652,782,1660,1675,1690,1705,1727,1815,1735,1743,1751,1759,1771,1779,1793,1808,1823,1831,499,1839,1853,1861,2089,1876,397,629,1884,494,679,1906,1914,659,1590,1922,1990,698,1943,2040,1951,2108,1959,2156,1967,1975,1983,922,2005,2013,2025,2033,2054,2062,865,649,2076,2084,880,2101,2173,2116,2017,747,1389,2124,2132,1293,2149,2164,2181,2195,2203,2217,2246,2260,2268,2276,598,598,598,598,2169,598,920,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,598,709,2291,2295,2302,2302,2302,2297,2301,2302,2308,2306,2319,2312,2316,2323,2326,2330,2334,2338,2342,2346,2352,2352,3896,2351,2405,2352,2352,3897,2352,2352,5138,3782,3361,2526,2416,2416,2416,2475,2531,2531,2396,2516,2516,2516,2516,2524,2403,2352,2352,2352,2352,2352,2410,3782,2516,2516,2516,2427,2431,2352,2352,2352,2352,5037,4578,4790,4660,3361,3361,3361,3361,2415,2416,2416,2416,2417,2531,2531,2531,2495,2416,2416,2529,2531,2531,2531,2531,2531,2374,2516,2516,2496,2516,2516,2516,2516,2516,2376,3402,2416,2416,2531,2531,2531,2531,2531,2450,2516,2516,2516,2516,2517,2442,2352,2352,2352,4920,2761,2766,2352,2352,2352,4992,3361,3361,3361,3361,2414,2416,2416,2416,2416,2416,2421,2352,5036,2352,2829,3361,3361,3361,2488,2516,2516,2516,2516,2384,2352,2352,3158,2531,2531,2497,2516,2516,2382,2352,2352,2352,5037,4615,2352,2352,2352,4519,2352,2352,2352,3029,5036,4991,3361,3361,2414,2416,2416,2494,2531,2496,2516,2516,2454,2352,3882,4993,3361,2526,2527,2531,2532,2516,2464,3880,2830,2473,2528,2423,2516,2479,2486,2415,2530,2498,2506,3360,2416,2531,2516,4992,2473,2448,2515,2484,2473,2493,2503,3399,2513,2399,2521,2536,2540,2544,2548,2552,2556,2557,2557,2558,2562,2566,2557,2572,2568,2576,2580,2584,2588,2592,2596,2600,2604,2611,2352,2352,2352,2618,2352,2352,2352,5085,2352,2352,2352,2352,3168,2637,3849,2352,2353,2352,2352,2352,2352,2352,2352,2352,2352,4089,2663,2666,2669,2673,2677,2681,3991,2689,2352,2352,2352,2352,2352,2695,2703,3159,2709,2713,2352,2717,2721,2460,2352,2352,4582,4588,5123,4592,4599,3130,4274,3674,2723,2728,3992,2690,2352,2352,2358,2352,2352,2364,2352,2352,2352,4714,3949,2352,2352,2352,4537,2784,2352,2352,2352,2507,4646,2352,2352,2352,2630,2352,4452,2352,2352,2743,2747,2352,2352,2352,4538,2751,2352,2352,4614,4609,2352,2352,2352,2352,3782,2352,2352,4993,2776,2352,2352,2352,2352,3913,2780,2352,2352,4687,2352,2352,2352,3242,4732,2352,4610,2788,2352,2352,2352,2352,2352,2347,4696,2802,3554,2807,2352,2352,2352,2352,2352,4602,3509,2352,2352,2352,4661,2819,2352,2352,2352,2352,2352,2818,3617,2352,2834,4661,2847,2352,2352,2352,3002,3779,2352,2352,2352,3014,2352,2352,2352,2352,4081,3811,2352,3819,5010,2352,2352,2352,4784,2352,2352,2352,3140,2352,2352,3813,3183,5009,2352,2352,2352,4783,2352,2352,2352,3480,3485,2352,2352,2352,3839,2352,2352,2352,4464,3070,2352,2352,4771,3227,2866,2870,2352,2352,4742,4158,2352,2352,2352,4743,2791,2876,2352,3093,2870,2352,3797,4905,2352,2792,2352,2352,4904,2352,4478,4703,4241,2457,2457,2457,4703,4106,4242,4242,4242,4681,2902,4476,4241,4726,4243,4105,4477,4170,4167,4169,2906,2917,2936,2938,2942,2942,2945,2352,3221,2952,2974,2980,5136,2984,2352,2992,3405,2352,2352,4823,2352,4772,3955,4903,2352,2352,4965,2352,2352,2352,4713,4974,2986,4283,2352,3222,4906,2352,4040,2352,2352,5014,2352,2352,2352,2352,2352,3688,2352,2352,3e3,4196,3006,3010,3019,3570,4123,2918,3024,2352,2352,2352,3589,3034,2352,2352,2438,2352,2352,2352,3359,3361,2352,4683,3045,3181,3050,2352,2768,2352,2366,2352,2352,2352,2352,2352,2352,4373,4847,4756,2352,4862,3758,3020,2352,2352,3056,4228,2352,2352,2352,2352,3061,4906,2352,2352,2352,2352,2818,4906,2352,3784,3057,2352,2352,2352,4116,3069,2697,3074,2352,2386,2352,3796,4431,4865,3235,2352,4111,3080,2352,2352,2352,2352,2352,2354,2352,2352,3088,2352,2352,2352,2352,2352,3087,3092,2352,2352,3148,3119,2877,3125,2352,2352,2352,2352,2829,3361,3361,3361,3999,3129,2352,2352,2352,2877,3125,2352,2406,4093,3924,5109,4416,3439,3510,3769,2638,2352,4999,4455,3150,2882,3136,2640,4755,3145,4428,2970,3154,2352,3163,3167,2352,2970,3154,2352,2444,3173,2352,2625,2352,3698,2352,2352,2352,2352,2352,4355,2352,2352,3815,2639,4216,2607,3179,3187,2352,3460,3174,2352,3192,2352,3459,3188,3156,3204,4491,3211,4155,2352,3219,4153,4157,3255,3226,4670,3232,4156,3239,3256,4154,3548,3247,3271,3317,3317,3260,3264,3268,3275,3279,3283,3316,3313,3301,3305,3306,3310,3321,3325,3327,4192,3331,3292,3335,3353,4027,5129,3970,3365,3369,3373,3377,3381,3381,3382,2352,2352,4073,2352,4991,3386,3432,3500,3446,3396,3412,4095,3419,3423,4351,2827,3356,2724,3431,2825,2352,2654,4038,4028,4176,2837,3440,4940,4241,3028,4201,3452,3458,3464,5074,3473,3481,2352,2352,2352,4735,3490,2352,2352,2731,4325,3781,2434,2736,2352,2457,3540,4293,4512,2352,2352,3504,3509,3505,2352,2352,2352,2352,2352,3872,2352,3745,3388,3498,4300,4267,3532,4189,4302,3539,4505,4512,2352,2796,2352,2352,2352,2352,2732,4457,3587,3561,4970,3803,2352,3541,3595,2352,2798,4906,4953,2922,2927,4595,2932,3026,2352,2352,4310,2352,2352,3822,2352,2854,4228,2352,2352,2352,2976,2859,2352,4310,2352,2352,3534,2352,2352,3605,4907,3824,2352,3534,2352,4159,2352,4990,2352,4324,4304,2352,4322,2352,3614,2352,2896,2352,3253,4476,4240,2352,2459,4811,3106,2891,2352,3468,3108,2633,3107,3440,3440,3440,4811,3467,3108,3108,3108,3621,3439,3466,3440,4812,2892,3440,4968,4983,4985,3628,3629,3624,3633,2352,2352,2871,5105,2352,2352,2352,2352,4868,3860,2352,2352,2352,2988,3663,3667,2352,4081,3672,2352,4765,4769,3295,4825,3678,3686,3825,3693,3702,3706,3727,3634,3710,3715,3725,3731,2352,2352,2877,3141,2352,2352,2352,3135,4082,3673,2352,3736,2352,2632,3740,3749,3688,3753,3762,3766,2352,3297,3773,2352,2898,4680,3829,3882,2352,2352,2352,3913,2855,2352,2352,2352,3065,2352,2352,2352,2352,2823,2352,2352,2352,4081,3672,2352,4767,2691,2352,3289,3789,3689,2975,3801,2352,2352,5068,3895,2352,3013,5017,2352,2352,2352,2352,3013,2352,5101,2352,2352,2352,2352,2352,3807,3836,2352,2352,2352,2352,2352,4869,2352,3097,3221,3105,2639,2352,3001,3112,3888,3859,2352,2352,2352,2352,3865,2352,3130,3601,2352,2352,2352,3594,2352,2830,3361,3361,2489,2416,2416,2448,4261,3876,2352,2352,3083,2352,2352,2352,4e3,2352,2352,2352,5034,3927,3895,2352,2352,3785,3887,2352,2352,3041,2352,3433,2352,4556,2388,3926,3894,2352,2352,3925,3901,3250,3682,3912,2352,2352,3918,2352,3924,3454,4178,3792,2352,3931,2352,3902,3895,2352,4142,3348,3959,4654,4030,2655,4055,3965,3965,4653,4653,4030,4030,4030,4031,3964,4652,3965,4654,3969,3965,4030,2352,2352,3523,3527,2352,2352,2352,2352,3574,2352,2352,2352,2352,3831,3996,4004,4008,4012,4016,4017,4021,4025,4044,4050,4054,4914,4060,4064,3528,4080,4071,2913,4562,4078,4086,2352,2352,4515,4099,4103,2352,2352,2954,4110,2352,2352,3600,2352,2352,4159,3583,4235,4120,2352,2352,2352,3476,2352,2352,2352,4354,2352,2352,2352,2352,3347,2352,4991,4748,4134,2352,2480,2352,2352,2352,4139,2352,3207,4651,2352,2352,2352,2508,4647,4149,2352,2352,2621,2352,2367,4163,4174,4182,4186,4946,4200,2352,2352,2762,4135,2352,4354,2352,3349,4195,2352,4205,3861,4215,4029,4221,3175,4248,2352,2352,4637,4228,2352,2352,2352,2352,4226,2352,2352,3616,3469,3880,4697,2737,2772,4227,3227,4233,4379,2406,2911,4260,4239,4247,2352,2352,4252,2352,2352,2352,4465,4906,3743,2685,2909,4259,4222,4265,2352,3361,2489,2371,2531,2380,2499,2392,4271,2352,2352,4271,2352,2352,4280,2352,3493,2352,2352,2352,2352,3494,3732,2352,5045,3228,2684,2862,4584,4708,2352,3552,3582,3558,4255,4720,2352,3565,3920,2352,2352,4126,2352,2803,3348,2352,3590,2352,2352,2352,2352,3039,2352,2352,5150,2849,2352,2352,2352,4636,4125,4805,2705,4287,4291,5162,2352,5163,4330,2928,4314,4320,4490,4337,4337,4367,4329,2928,2928,2928,4056,4549,4336,4348,3855,4549,4550,4032,4334,4548,4341,4546,4345,4359,4363,4366,2352,2352,2352,3888,3870,2352,2352,2352,4371,4377,4145,4383,3195,4387,4391,4395,4399,4402,4406,4409,4410,4414,2352,2352,3832,2352,2352,2352,2352,3581,2352,4420,4425,4207,4211,4435,5117,2352,3638,3642,3646,3650,3654,3658,3662,4443,2840,4449,5144,4462,4469,3775,2352,3696,2352,4297,2843,4308,4489,4549,4475,3046,4482,2352,2352,2352,4421,4486,4495,4499,4437,4503,3130,4152,4509,3942,4523,2352,2352,2352,3030,4524,2352,2352,3908,2644,2352,4229,2652,2659,2352,4528,4532,4536,2352,2352,4543,4554,4209,3198,2923,4560,3131,3286,2850,2352,3711,4906,2352,2352,4772,3035,2365,2352,4570,2352,2352,2352,2352,2352,4574,3286,4791,2352,2352,2352,2626,4607,2352,3718,2352,3533,3609,2352,3535,2352,2881,4456,2886,2890,3408,2352,2888,4614,4609,4619,2352,2810,5061,4628,4635,4641,3215,4624,2352,2352,2352,2509,3155,4658,2352,2812,4665,4674,3130,3519,2352,3843,2352,3853,3681,3878,2352,2352,2958,4754,2352,2963,3756,2967,4276,4165,4701,4707,3794,2352,3888,4712,4730,4734,4739,4747,3157,4756,2352,4752,5019,4780,5006,2352,4788,3668,4763,4471,4799,3426,3721,4622,4622,4631,3392,4803,4809,4809,4816,4908,2647,4820,4830,4908,3846,2648,4837,2467,2469,4843,3391,2352,3883,4678,2352,2352,2352,3243,2352,3866,2352,2352,2352,3568,2654,2753,4217,4851,4855,4859,4873,4877,4881,4885,4888,4892,4896,4900,2352,2352,2352,2352,3784,3015,2352,2352,4912,3001,3339,3343,4918,4924,3200,4642,4930,4934,2352,2994,4458,4938,3577,2352,3888,4718,2352,3784,4724,2352,2352,3918,2352,3937,3946,3783,3953,2996,4944,2352,2352,3610,4950,2738,4316,3914,5055,4959,3948,2360,4682,2352,2352,4074,2352,4439,3437,3560,3444,4980,4989,2352,2352,3596,4997,3337,3341,3914,3933,4926,3214,5003,2352,2352,2352,4566,2352,2352,2352,2352,3514,3518,2352,2352,5023,2352,2352,2352,2352,2352,5027,2352,3889,2352,2352,4761,2352,3888,4776,3610,5041,3390,5049,5054,5059,5065,5072,5078,2352,2352,5082,2739,3960,5089,4690,5098,2352,2352,2352,2352,3984,2352,2352,4130,2352,2352,2352,2352,2352,2699,2352,2352,3977,4065,2352,2352,2352,2872,5113,2352,3890,4795,3392,3720,3169,2959,4763,3052,3448,4976,3121,2814,2352,2352,2352,4668,2352,2352,2352,2352,5031,5115,2352,2352,3414,5043,2352,2352,4066,5094,2352,2352,4445,4115,4839,2352,2352,2614,2352,4694,2352,2352,2352,5093,2352,5121,4833,2353,4961,2352,2352,3415,2352,2352,4514,2975,2352,4036,3433,5107,3115,2352,2352,4692,2352,2352,5091,2352,3912,3486,3895,4046,2352,2948,2352,3168,3906,2352,3254,4144,2352,3168,3545,2352,2352,2352,2352,2352,4603,5127,5133,4925,2352,2352,4067,2352,2352,4539,2752,2352,2352,2352,2757,3101,2352,4066,5142,2352,3100,3907,3426,5148,2352,5156,2352,5154,2352,5160,2753,3427,3076,2753,2352,3940,4826,4955,2352,3974,2352,2352,4757,3981,5050,3988,5167,5172,6366,6369,5182,5208,5230,5230,5224,6372,5193,5230,5230,5230,5230,6374,5201,5230,5230,5231,5190,5204,5207,5219,5215,5229,5223,5228,5230,5212,6374,5230,5235,5248,5249,5249,5245,5238,5253,5241,5257,5264,5271,5267,5260,5275,5281,5278,5285,5283,5287,5291,5168,5172,7462,5302,5325,5325,5325,5175,5323,5325,5325,5325,5325,5324,5325,5308,5314,5325,6062,5325,7497,5325,6243,5325,5325,5325,5327,5330,6892,6892,6893,5447,5432,5434,5434,5460,5365,5344,5359,5434,5434,5371,5375,5325,5325,5173,5325,6242,7516,5366,6892,5397,5405,5447,5447,5531,5434,5325,5364,5371,7023,7464,7466,5325,5325,5325,5328,5325,7029,5412,6059,5365,5371,6892,6892,6892,6892,5447,6892,6894,5447,5447,5447,5449,5434,5365,5373,5439,5406,7465,5304,5325,5174,5892,6415,5325,7032,5325,6064,5373,5464,5325,5325,5294,6251,6892,5445,5447,5447,5459,5434,5434,5370,5374,5325,5325,7202,5325,5325,5325,5882,5434,5434,5476,5376,5696,6140,5696,7271,5325,5365,5365,6892,6892,6892,6895,5534,5325,6061,5325,5325,5451,5325,5325,5365,5365,5365,5373,6892,6892,6892,5446,5447,5447,5447,5448,5434,5434,5434,5370,5449,5434,5434,5435,5325,5325,5325,5336,5340,7226,6892,5447,5447,5434,5434,5434,5434,5365,6892,5446,5448,5434,5365,5372,6892,6892,6892,5444,5447,5447,5447,5447,5434,5452,5364,5373,5446,5459,5362,5478,5450,5482,5486,5485,5484,5483,5325,5490,6205,7342,5501,5524,5494,5498,5580,5580,5580,5580,7344,5512,5518,5528,5548,5552,5580,5580,5580,5556,5562,5560,5566,5651,5575,5579,5555,5587,5584,5601,5608,5521,5615,5612,5626,5630,5630,5632,5634,5638,5642,5646,5504,5650,5514,5604,5655,5659,5663,5667,5665,5673,5669,5677,5681,5325,6422,5325,6607,6913,7034,6219,5975,5325,5325,7251,6734,7034,6607,5695,5325,5325,7252,6735,5702,5325,5325,5325,5337,5325,7143,5352,5325,5325,5325,6872,6065,5325,5325,5325,5346,5325,5325,6766,5593,7349,5325,5325,7306,5325,5325,5317,5743,5325,5325,5326,5325,6971,5774,5751,5325,5758,6647,5986,5778,5783,5782,5787,5791,5792,5796,5797,5801,5805,5806,5817,5810,5812,5816,5812,5811,5821,5824,5325,5325,7322,5325,5325,5401,5721,5325,5325,5325,5350,5830,5835,5325,5325,5326,5686,5690,6503,5543,6605,5325,5325,5327,6468,5842,5325,5325,5704,5900,5325,5325,5846,5853,5325,5325,5178,5874,6652,5884,5325,5325,5325,5354,7479,5885,5310,5325,5325,7355,5325,5325,6420,5900,5325,5325,5325,5376,5330,5907,5177,5325,5919,5946,5926,5934,5177,5927,5935,5325,5325,5325,5377,5945,5941,5928,5936,5950,5325,5325,5325,5382,6265,5720,5325,5325,5348,5325,5325,7351,6426,7166,5965,5971,5928,5983,7315,5991,5185,5392,7316,5973,5186,5393,5990,5928,5983,5325,5325,7355,6024,6030,6678,5719,5325,5325,5349,6043,5898,5325,5325,5325,5469,7460,5995,5393,5325,5325,7374,6244,5325,5325,6825,5352,7313,5990,5928,5996,5177,6e3,5721,5325,5325,5355,6434,5325,5325,5363,5365,5365,6915,6004,6243,5325,5325,7472,5325,5325,7478,5325,5327,5333,7488,5972,5929,5392,5325,5325,5325,7199,6915,5967,5973,5930,5393,5991,5929,5392,5325,5327,5838,6218,6242,5325,5325,6023,6029,5325,5325,5325,5746,5734,6030,5325,5325,5325,5753,6744,5325,5325,5325,5754,5325,6221,5325,7194,6018,5325,5325,5325,5767,5325,7193,6035,5325,5325,5379,7486,7202,5325,5325,7201,5325,6418,6416,5325,5328,6927,6218,5325,5325,6427,6819,6418,5325,5325,5325,5901,7500,5325,5176,5325,5325,5347,5325,5325,5325,5915,6056,6075,6079,6082,6084,6084,6088,6088,6090,6092,6092,6092,6092,6092,6093,6097,5325,5329,7488,6838,6758,5177,5325,5325,5383,6857,6312,5325,5325,5325,5952,5325,7097,6101,5766,7112,7161,6117,5325,5330,5295,6252,6061,6140,5325,5325,5325,5966,6107,5325,5325,6109,5826,6110,5325,7174,5325,5325,5425,6244,7172,6122,5325,5325,5455,7485,7492,5325,5325,6425,5325,5325,5325,5979,6102,5767,5325,6127,5325,6606,7110,5325,5330,5732,5736,7532,5325,6132,5325,6139,5325,6679,6155,6161,5325,5325,5507,5325,5325,5325,6245,7179,6162,5325,5325,5325,6004,5903,6157,5325,5325,5569,6701,5886,5325,5325,5325,6008,6757,6504,5325,5325,5618,6423,5330,6172,6187,6178,5393,5760,6173,6188,6715,5761,6174,6189,6716,7012,5325,5325,5325,6017,5690,6970,5325,5325,5622,5325,6183,6193,6715,5325,5330,6720,6908,5325,7e3,6184,6194,6202,6202,5325,5325,5325,6023,5325,6210,6209,5325,5330,6985,7033,5325,6228,5325,5325,5325,6060,5325,5325,6103,5768,6127,5325,5330,6985,7539,6677,6840,5325,5325,5622,7353,5297,6185,6258,5173,6259,5325,5325,5325,6061,6876,5754,6251,6193,6197,5325,5753,6250,6186,6196,5325,6102,6421,5325,6605,5325,6913,6063,6679,5325,6195,5173,5325,5325,5325,6062,5325,5325,5176,5325,6900,5296,6253,6196,5325,5325,5325,6065,7306,6257,6198,5325,5325,5325,6168,6263,6840,5325,5325,5683,5687,5691,5325,6269,6281,6198,5325,5325,5848,6271,6283,5325,5331,7234,6916,6236,5325,5325,6814,5173,6063,5683,7243,5325,5335,5339,7225,5325,6606,6913,6291,5325,6061,5325,5348,7242,6274,5325,5325,5684,5688,6758,7361,5325,5325,5325,6219,6220,7122,6421,6604,6914,6062,5325,6679,6065,6279,6275,5325,5337,7257,6585,5325,5325,7123,6422,5377,5325,7488,6837,5325,5325,5325,5848,6272,7361,7359,5325,5325,6148,7122,6421,5325,6149,7361,5325,5377,7358,7362,5325,6147,7362,5325,5377,7358,7362,5325,7356,7123,6422,7356,7360,5325,5346,5325,5379,5325,6971,6220,6220,6220,5325,5350,5325,5325,5977,6661,7359,5325,5325,7244,6421,7355,6151,5325,5325,6150,5325,5325,7357,7361,5325,7355,7359,5325,5325,6147,7362,5325,6287,7355,6222,7042,5325,7042,5325,6420,5325,6221,6420,6220,6851,6851,5325,5325,5697,5325,5332,5325,5325,6068,5856,5325,6134,6971,5325,5325,5325,6220,6606,6297,6504,5325,5353,6432,5325,5364,5365,5365,5365,5365,7486,6221,6915,6307,6322,6331,6328,6335,6338,6344,6340,6348,6350,6350,6348,6354,6359,6359,6359,6359,6355,5697,7351,6441,5177,5325,5325,5698,5325,5325,5325,6163,6840,5507,5325,5364,5365,6892,5440,7466,5325,5325,7173,5325,5325,7195,5177,5325,6387,5325,5325,5745,6986,6426,5325,7140,5325,6409,6455,5325,6449,5325,5376,5325,5325,5325,6433,5325,5325,5325,6241,5325,6439,6443,5325,5325,5766,5325,5325,5325,6222,6915,6038,5325,5325,5698,5330,6644,5325,5325,5329,5325,5377,6447,5325,5325,5325,6269,6281,5325,6453,5325,5325,5768,5325,5325,5325,6607,7154,6713,7103,5325,5384,5388,5392,5325,6942,5863,7155,6714,6714,5325,5325,5325,6315,5864,5400,6179,5325,5384,6858,6162,5325,5325,6241,6378,5325,6220,5325,5325,7329,7333,7152,5868,5868,5325,5325,5325,6421,5325,7330,7334,5865,5869,5325,5325,5325,6424,6065,7331,7335,5866,5870,5325,5325,5325,6428,6442,5325,5325,5325,6508,6607,5325,6840,5508,5325,5325,5325,6389,7331,6474,5867,7362,5325,5325,6148,5325,6212,5325,5325,5859,6013,6479,5176,5325,5325,5878,5380,5325,6063,5325,6483,5325,5427,5325,5325,6145,5325,6633,6489,6494,5325,5454,7484,6244,6214,5325,5325,6604,5698,6299,5698,6299,5325,5325,5902,6156,6162,6389,6500,5325,5325,5325,6522,6061,6509,6244,5325,5325,6212,5325,6604,6461,6607,5325,5325,5325,6523,5325,6514,5325,5325,5958,5325,6607,5325,6872,5325,5767,5767,5767,5767,6870,5766,5325,5768,6870,6871,5325,5325,5325,6612,6519,5325,7123,6231,5325,6527,5325,6234,6531,6537,6545,7221,6549,6553,6553,6555,6559,6559,6559,6559,6564,6563,6566,6570,6571,6571,6571,6571,6565,6575,5325,5325,5325,6632,5571,5428,5325,5325,5325,6657,7487,5325,6222,6837,5325,6289,5325,5922,6803,5177,5325,6877,5325,5325,5921,7362,5325,7392,5325,5472,5325,5325,6470,5325,7362,5325,5325,6865,5325,6884,5325,6885,6602,5325,5325,5325,6678,5325,6613,6603,5325,5508,5325,5325,5953,5325,5325,5325,6618,5325,6923,6600,5325,6614,5325,5325,5325,6869,5325,6425,5727,6383,5379,5325,7488,6219,6220,5325,5325,6459,7351,5325,6837,5325,6628,5325,6638,5895,5325,5537,5325,6607,6167,6914,6651,5325,5325,6224,5325,6656,6656,5325,5685,5689,6749,6665,7390,5325,5325,6006,7129,6672,6667,5325,5325,6063,5325,5325,5325,5330,6903,5325,6838,6420,6291,6065,6064,5325,6424,5325,5325,5325,6022,6223,6676,5325,5325,6063,5327,6069,6694,6688,6910,6700,6244,5325,5325,6063,6064,5683,7243,6424,6217,6382,5325,5696,6490,5325,5325,5325,6582,6290,6877,5325,6065,6634,6510,5870,6705,6684,6908,5325,5696,6623,5391,5325,6215,5327,5325,5696,7307,5325,5708,5399,5719,5378,5325,6971,5325,7488,6606,6721,6909,5325,5325,5325,6899,5325,6901,6905,6909,5325,6904,6908,5325,5325,6135,5325,6288,5325,5324,5922,5325,5325,6064,5325,5325,5325,5335,6907,5325,5325,5325,6900,7305,6841,6906,6910,5325,5325,5325,6877,5324,5326,5325,5325,5325,6903,6726,5325,5325,5325,6911,5331,6316,5325,5325,5325,6915,5325,6903,6910,5325,5325,6211,5472,5325,6242,5325,5325,5325,6902,6906,5325,6725,5325,5325,6217,5325,6242,5325,5329,5378,5325,5325,5325,7170,5325,7487,6837,5325,6291,5325,5325,5325,5325,7387,5325,5325,6221,6244,7487,5325,5325,5325,6918,7487,5325,5325,7486,5325,7487,5325,5325,7487,6220,6065,6730,6734,5325,5745,5733,5737,5325,6739,6748,5325,5747,5735,5739,6871,6244,5325,6067,5325,5325,6485,5401,6243,6065,7269,5325,5754,5298,6186,6259,7036,6324,6754,6762,6770,5413,6774,6778,6782,6787,6787,6787,6783,6791,6791,6791,6793,6795,6795,6795,6795,6799,6802,5325,5325,6244,5325,5325,6971,5325,5325,5915,5326,5325,6807,6217,5325,5325,6310,5325,5325,7370,5325,5325,6314,6318,6832,5325,5325,6813,6118,5325,5325,5325,6971,6607,6061,7277,5325,6839,6123,6222,5325,5325,5325,6983,6987,5325,6818,5325,5325,6363,5325,5325,5325,6533,6820,5325,5325,5325,6992,5571,6830,5325,6831,5325,5765,5544,5772,5837,6809,5325,5325,6398,5325,5325,6836,6846,6837,6141,6222,5325,5325,6416,6840,5325,6863,5325,5325,5325,6999,6859,5325,5325,5325,7013,6541,6839,6222,5325,5825,5325,5325,5471,5325,5325,5381,5385,5389,5393,5382,5386,5390,5177,5325,6889,5387,5391,5325,5848,6317,5325,5325,5325,6914,5325,6292,5325,6876,5325,5325,5325,7241,6273,7362,5325,5325,5325,6212,6808,6218,5325,5325,6417,5325,6417,5325,5325,6416,5325,6242,5325,7036,5325,5325,6971,6838,6420,7486,5325,5325,7458,5976,5325,5766,5325,5877,5379,6219,5325,6221,6219,5325,5325,5325,7098,6496,5325,5325,5325,7020,7253,6140,5325,5325,6419,5325,7089,7232,6916,7095,6928,5325,5325,5325,7123,6424,5325,6604,5975,5325,5325,7452,5389,5393,5325,5325,5325,5725,5325,6222,5325,5325,6420,5379,5974,5325,5325,5325,7201,5325,5325,7201,5325,6915,6849,5325,5325,6620,6624,5392,5325,5878,5380,6540,5325,6244,5325,7488,5325,6840,5325,7504,5325,5325,6460,7352,5325,6134,6934,5325,5883,5325,5325,5330,7267,5325,6133,6933,5325,5886,5325,5888,5325,7487,6604,6291,5325,7503,5325,5325,6465,5325,6938,5325,6219,6221,5325,6916,6039,5325,5325,5831,6214,6605,7503,5325,5325,6509,5325,6219,6222,5330,5325,5325,6066,6971,6948,5325,5325,6515,5325,5325,5325,6606,6947,5325,5325,5914,5325,7487,6605,7121,6971,5325,5325,7121,5913,7487,6605,5913,6404,6605,5914,5914,5325,5325,7121,5325,6413,5325,5383,5387,5391,5325,5914,6952,7487,6405,6954,6954,6954,6954,6971,5325,5325,7488,6958,6964,5325,5325,6521,6593,5325,7351,5325,5325,6591,6140,6976,7036,6420,5196,5325,6980,5197,6991,7351,6996,7004,7010,7017,7040,7046,7050,7062,7053,7056,7058,7066,7076,7076,7075,7068,7070,7071,7080,7080,7080,7080,7081,7085,5325,5325,6604,7526,5325,7374,6960,7362,5325,5325,7351,5325,6911,6062,6679,5325,5330,7350,6060,6238,5325,5325,5175,5325,5325,6605,5376,5325,6435,5325,5325,6608,5385,7104,5325,5327,5325,5910,5325,6420,5325,6604,5325,5325,5325,5453,5325,7120,5325,5325,6622,5390,5177,5325,7127,5325,5325,6631,7306,6007,5325,5325,5325,7203,5325,5325,5325,7134,5325,7159,7352,5325,6913,5325,5915,5325,5325,7121,6420,6417,5325,6420,7091,5325,7301,5976,6240,6921,6220,5325,5325,6646,5325,5347,5325,7165,5327,6484,5325,5325,5849,6732,6140,5325,7178,6641,7186,7179,7399,7187,5325,5325,5325,6246,7180,7400,6162,5325,5325,6589,6587,5325,5325,5325,7312,5940,5927,6900,6958,7191,5325,5915,5913,5325,5913,5325,5325,7121,7353,6911,5325,5325,6765,6401,6922,6221,5325,5325,6824,5325,5335,7207,7182,5714,5336,7208,5711,5715,5337,7209,5712,5393,5338,7181,5713,5177,7373,6959,6244,5325,6971,7458,7354,6912,5325,6416,7296,5976,5325,5176,5325,5960,6052,5325,6919,6220,5325,5921,7332,6475,5868,7213,5596,5714,5325,5325,5325,7314,5334,5338,7214,5597,5714,6842,6841,6971,5325,5954,5325,5325,6842,5325,6418,6420,7091,5325,5954,5325,7320,7026,5325,5325,5325,7452,5389,7218,5325,5325,5325,7456,5340,5597,7285,5325,5325,7284,5325,5325,5325,7488,5325,5325,6841,6971,7199,5325,5325,5325,7313,6417,5325,7230,5325,5961,5325,5326,7242,5325,7026,5325,5325,7238,7263,7248,5325,5325,6838,5325,5325,5325,5887,5334,7262,7258,5324,7354,5325,5325,6984,7538,5325,5325,7006,5976,6420,7275,6917,5325,5325,6839,5325,6921,5325,5325,5325,7503,7291,5325,5325,5325,7520,7509,7281,5325,5325,5325,6839,5507,7290,6140,5325,5325,6840,5325,7289,6735,5325,6841,6424,5325,5325,5330,6943,7267,5325,6416,5325,5978,6671,6666,7362,7295,5325,5325,5376,6971,6631,7300,5325,5325,6841,5325,5325,5325,5959,5325,6632,7307,5325,5325,5325,6841,6216,6381,5173,5325,5325,5958,6606,5325,7305,5325,5325,6048,6915,5325,5697,5325,6012,5973,6030,5325,6632,6918,5325,5325,6841,6971,5325,6425,5325,6068,6918,5953,6140,5325,7311,5952,6918,5325,5325,6853,5325,5953,6140,5325,5325,6871,5325,5767,5953,6140,6918,5376,5325,6577,6140,5325,6017,5325,5325,5379,5325,5325,5325,7306,6916,5698,5332,5325,6917,6578,5697,5325,5325,6876,6293,5696,5325,5698,5696,7326,5325,7350,7339,7350,5325,6213,5467,7137,5325,7146,5331,5325,7123,7380,6103,5768,5325,6128,5325,6606,5325,5330,6706,6710,6909,7149,6211,7348,7367,5420,7378,7384,5423,5320,7396,7404,7407,7410,7414,7417,7419,7417,7423,7424,7429,7428,7424,7433,7434,7434,7435,7441,7439,7445,7449,5325,6022,6028,5177,5325,5325,5325,5696,6918,6523,6595,5325,7033,5325,6972,6915,5325,5325,5325,6878,5325,6215,5325,5621,7352,5325,5325,5325,7527,5540,7363,7470,5325,5325,7476,7483,5325,5325,5325,6882,6062,7493,5325,5325,5325,6882,6915,6595,6420,6841,5325,6047,5325,5325,5380,5325,6877,5325,7354,5325,6826,5325,5729,7508,7514,5325,6060,5325,6870,5173,5325,7509,6291,5325,5325,6917,5325,5326,7521,7510,5325,6060,5766,5325,5766,5325,6872,6870,5325,5325,5325,6604,5365,5365,6594,6421,6425,5325,5325,6102,7525,5351,6840,5325,6062,6841,5325,6013,7460,6031,5325,5326,5731,6393,7532,5325,5325,5325,6967,6416,5728,5732,6394,7533,5729,6391,5738,6291,5730,6392,7531,5325,6063,6062,5325,5325,5325,5334,6595,6422,6426,5325,5325,5325,6932,5177,5333,5325,6066,5325,5325,6915,5325,5325,6216,5325,5325,6877,7351,5325,6913,5325,6677,5325,6061,5325,6069,6683,6688,7525,6742,5325,5325,6941,5862,7532,6870,5325,6140,5590,6596,6423,5325,6070,6695,6689,5325,6215,5325,5325,6983,7537,5325,5325,5325,6063,6826,5352,5325,6071,6696,6690,5734,5738,5325,5325,7035,5325,5325,7488,5738,5325,6140,6872,5325,5325,6920,6750,6912,6423,5325,5325,7090,6214,5325,6912,7033,5325,6303,5325,5698,5333,6917,5325,6114,5325,5325,5410,5417,6987,5325,5325,5325,7102,7108,6877,7352,5325,5325,7114,5388,5325,7115,5325,5325,7116,5325,7114,5325,5325,5325,7130,6971,5325,2,4,8,262144,262144,1048576,1073741824,0,0,0,2147483648,0,0,0,-1979711488,4194560,4196352,270532608,2097152,4194304,8388608,234881024,268435456,37748736,-1606418432,541065216,541065216,-2143289344,-2143289344,4194304,513,32768,0,0,-2143289344,-2143289344,-2143289344,4194304,4194304,4196352,-1606418432,541065216,-2143289344,4194304,4194304,-2143289088,4196352,-1606418432,-1606418432,541065216,4194304,4198144,4194304,4196352,276901888,8540160,8425488,4194304,4194304,4194304,16777216,4194304,541065216,4194304,4194304,4194304,4194304,4194432,541065216,37748736,742391808,239075328,239075328,171966464,775946240,4718592,64,4718592,171966464,239075328,171966464,775946240,171966464,171966464,171966464,171966464,239075328,239075328,775946240,775946240,2097216,4720640,541589504,4194368,-2143285440,-1606414528,-1606414528,541589504,541589504,4194400,4194368,541065312,541065280,-2143289280,-2142763008,541589504,541065280,4194368,-2143285440,-2143285408,-2143285408,-2143285440,-2143285440,-2143285440,-2143285440,-2142761152,-1606414528,-2143285440,-2143285440,-1605890240,-2142761152,-2109731008,776470528,-1908404416,775946304,775946304,-1908404416,2,4,8,64,128,512,1024,2048,0,256,2048,2048,2048,2048,8192,8392704,0,0,-570425344,32505856,16384,1536,1792,0,2147483648,65536,65536,4224,65536,16777216,16777216,0,0,0,0,1,0,0,0,2,0,0,0,3,4,16,224,256,512,32768,96,96,0,0,0,1073741824,0,0,16384,0,0,0,118,577408,22020096,0,1536,64,524352,0,0,524288,524288,524288,524288,0,524352,524288,524288,524288,64,64,64,0,0,0,8,0,0,0,12,32,64,1024,2048,57344,262144,50331648,268435456,1073741824,2147483648,0,0,64,64,262144,1048576,4194304,16777216,33554432,268435456,0,128,128,128,128,0,8388608,4096,4096,4096,4096,29696,4096,1536,1024,0,-2113929216,100663296,100663296,4224,0,0,262144,33554432,134217728,0,0,96,64,524352,524352,524352,524352,0,64,64,128,128,128,64,64,64,96,96,96,96,524352,524352,0,0,0,15,208,15360,96,524352,524352,524352,524288,64,64,128,2048,64,0,0,32768,50331648,268435456,0,0,524352,524288,524288,64,64,96,524288,64,96,524352,0,524288,64,96,0,4096,536870912,1073741824,1056,262176,1048608,2097184,4194336,536870944,32,32,4,1073872896,32,0,32,0,0,8388608,1073741824,0,1073872896,40,262176,32,32,41,96,32,34,34,32,32,32,40,96,160,40,48,1120,96,0,64,524352,524288,64,0,0,2101248,0,0,3751936,0,0,5242880,0,0,4195360,6291488,2097184,2097184,4194336,4194336,4194336,32,56,262184,40,262184,40,262184,40,40,40,4195104,40,40,262176,32,128,256,2048,262144,524288,96,6292512,4195360,2097184,6292512,32,32,32,32,56,0,4,262184,32,32,32,512,2048,262144,0,65536,65536,131072,262144,2097152,8388608,40,4196128,32,262184,32,42,224,34,42,32,327155712,1056,1056,2098208,42,1056,4194336,32,262144,524288,0,0,16777216,0,0,4457568,-326784344,-322851160,-322851160,-322698144,-322698144,-322698144,-322698144,-322695456,-322695456,-322695456,-322695456,-322597152,-320598176,-322597152,-322597144,-321548576,-320598168,-322597144,-322588952,-321548568,-322588952,-321548568,-322597144,96,32,32,40,1120,40,262176,42,106,293601323,293601323,293863467,293699627,293617707,293716011,293702203,293702203,293702203,293702203,293702267,297896507,293964347,297896507,293702203,293702203,297896507,293964347,297896507,-322597144,-37744981,-322597144,-321548568,-37482773,0,0,1,4,8,32,64,512,2048,16384,67108864,0,48,0,0,0,64,0,0,0,318767104,0,0,1,4096,0,32,64,65536,393216,10485760,16777216,33554432,1073741824,2147483648,0,33554432,268435456,536870912,2147483648,0,0,0,262144,65536,0,0,1,2,12,16,64,128,1024,2048,4096,8192,65536,131072,0,262144,262144,0,0,2,8,16,64,262656,262144,0,0,2,12,64,262144,328192,0,0,2,204,768,-2147483646,0,0,0,1024,0,0,524288,5242880,0,0,2,65536,201330721,201330721,201330721,-2111369023,-2111360575,-2111369023,-2111369023,-2111369023,-2111369023,-1977151295,-1977151293,-1910042431,-1893265183,-2111368509,-1893265183,-1893265183,-1893265183,-553689472,-553656704,-553689472,-553656704,-553689472,-553689472,-553656704,-553656704,-553689472,-553689472,-553656704,-553656704,-553656704,-553656704,-553656672,-553656664,-553656672,-553656672,-553656672,-553656672,-553656670,-553656608,-553656672,-553656672,-553656672,-553656664,-536912159,-553656671,-536879391,-536879391,0,0,0,1040,1040,262656,0,0,0,1536,0,328192,0,0,2,67108864,0,0,458880,2097152,-1845493760,462976,-2113929216,0,0,4,8,256,471424,0,-2113929216,0,0,67108864,0,0,134217728,128,256,3584,16384,32768,524288,4194304,33554432,134217728,536870912,0,0,-1912602624,18874368,463488,0,0,134217728,4096,0,0,104e4,15728640,-570425344,0,0,0,2014,0,0,0,128,196608,2097152,8388608,536870912,0,0,201326592,0,0,0,1998,518144,8388608,0,256,12288,0,0,486539264,0,0,33554432,268435456,0,0,167772160,234881024,0,0,4,16,0,196608,786432,1048576,2097152,4194304,8388608,134217728,268435456,4194304,8388608,503316480,1073741824,2147483648,0,7168,16384,32768,196608,786432,0,128,512,7168,16384,2147483648,16777216,0,0,4,64,128,8388608,0,512,0,0,1,1,0,234881024,128,512,3072,16384,32768,4096,16384,131072,524288,1048576,2097152,0,0,0,62,64,128,234881024,268435456,1073741824,2147483648,-2147418112,5242880,-1842937664,16384,32768,131072,524288,1048576,8388608,33554432,201326592,268435456,1073741824,0,1048576,4194304,268435456,131072,2097152,0,0,7,27756528,-503316480,0,0,512,3072,16384,131072,1048576,4194304,2147483648,0,0,0,512,3072,131072,524288,1048576,524288,1048576,4194304,134217728,2147483648,0,0,524288,4194304,2147483648,0,0,536870912,0,0,16384,18432,67108864,1073741824,16384,8192,0,0,8192,18952,0,65,100663298,18952,1024,65,1024,1024,0,0,0,16,0,0,0,4,0,0,0,6,56,128,2101248,524288,1024,268436480,1024,19017,-1744550912,8388624,8388624,-1739308032,-1739308032,-1739308032,-1739308032,-1736162288,-1736162288,-1736162288,-1736162288,-7868466,-7868466,-7868466,-7868466,-7868450,-7868450,-7868450,-7868450,-7868450,65,0,2,33554432,0,0,1024,5521408,-1744830464,0,0,-1744830464,0,0,1040,8667136,-1744830464,0,0,0,9216,-67108864,0,0,0,13312,0,4096,2097152,0,0,278528,0,0,0,16384,32768,0,16,8388608,0,0,0,12288,5242880,2147483648,0,0,8,512,2048,131072,536870912,0,518144,8388608,50331648,201326592,805306368,-1073741824,805306368,-1073741824,0,0,0,18432,72,0,0,0,24576,204,768,1024,10240,16384,32768,50331648,67108864,134217728,805306368,0,768,1024,2048,8192,16384,32768,458752,8388608,50331648,67108864,16384,32768,458752,50331648,67108864,536870912,1073741824,0,0,134217728,805306368,1073741824,0,0,536870912,1073741824,0,208,0,0,0,32768,0,0,0,65536,0,0,0,131072,0,0,0,48,25165824,16384,67108864,268435456,0,0,1073741824,16384,0,0,16384,2097152,0,1572864,0,0,0,134217728,0,0,0,7,16,64,128,512,2048,8192,16384,458752,16384,458752,50331648,67108864,805306368,1073741824,16,0,0,1048576,4194304,33554432,4,8,128,512,2048,196608,262144,33554432,536870912,0,8,512,2048,196608,262144,50331648,536870912,1073741824,512,0,0,4096,1048576,0,0,0,393216,0,64,256,8192,2097152,2147483648,0,64,64,16392,268435456,0,537395200,537395200,0,0,1073741824,18432,0,0,8,16,512,402653184,0,0,0,537395200,0,32768,0,2048,0,4212736,4212736,4212736,537395200,4212736,1082130432,537427968,4212736,51380242,51380242,22038531,22366211,22366211,22366211,55592978,22366219,22366211,22366219,22366227,55592978,55592978,55592978,55592978,324028498,55592978,55592978,1062785014,1062785014,1062785014,0,1062785014,1062785014,1062785014,1062785014,16384,32768,268435456,0,0,1075838976,2097152,2097152,268435456,4194432,3145728,541065216,541065216,541065216,541065216,4096,0,8,0,1,0,67108864,1073741824,0,0,557056,0,0,16,64,128,3072,4096,8192,65536,18,17825792,33554432,0,1,67174400,33554432,268435456,0,268435456,0,346112,0,0,11,0,82,301989888,0,0,0,2048,0,0,0,4096,0,0,8192,0,0,0,44,64576,577408,22020096,1040187392,0,0,0,393744,0,256,0,8192,2097152,0,2147483648,0,0,327680,0,0,18,33554432,80,268435456,0,0,19,0,0,524288,0,64,0,2097152,0,16,33554432,0,2,0,65536,201326592,2147483648,256,1536,16384,32768,524288,0,256,8192,2097152,1,0,0,65536,262144,1048576,256,1536,32768,524288,0,4194304,134217728,536870912,0,4194304,131072,1536,32768,524288,134217728,268435456,2147483648,0,0,0,64,1536,32768,524288,4194304,0,1536,32768,0,0,16384,1073741824,0,0,32,512,2048,32768,0,1073741824,0,67174400,8,8,0,0,60,64576,8,268435456,134217728,131072,128,536870912,0,0,8,131072,4194304,-2146430976,16908320,547389524,547389524,547389524,555909216,555909216,555909216,555909216,564297840,564297844,564297844,564297844,564297844,564297844,1001055742,1001055742,1001056254,1001055742,1001056254,1001056254,1001055742,1001055742,1001056254,1001056254,1001056254,1001056254,1001056254,1001056254,0,0,64,128,8388608,0,84,2129920,8388608,16777216,0,0,9728,268435456,0,0,2048,32768,262144,524288,8388608,0,0,1280,2809856,58720256,939524096,0,0,0,524288,0,0,0,28,0,254,1792,2809856,58720256,939524096,0,939524096,0,0,64,2048,16384,32768,262144,50331648,4096,1048576,2147483648,0,2,4,16,64,128,256,0,20,64,32768,65536,2490368,16777216,33554432,0,0,16,33554432,2147483648,163840,0,0,0,1007232,52,0,0,0,104e4,64,128,1280,24576,163840,524288,2097152,58720256,402653184,536870912,128,1792,24576,163840,524288,25165824,0,0,0,1048576,4194304,0,56,128,1280,8192,524288,16384,131072,524288,58720256,402653184,0,56,128,1792,8192,16384,131072,256,262144,524288,33554432,134217728,2,4,24,32,128,1792,8192,524288,16777216,33554432,67108864,134217728,805306368,1073741824,2147483648,4,8,16,1024,16777216,4,8,16,402653184,0,8,256,512,2048,8192,32768,8388608,0,0,67108866,12,4,16384,0,0,4194304,2147483648,0,65536,67108864,0,0,0,131584,268435460,32768,8192,2048,16384,67108864,134217728,268435456,8192,3670016,2048,8192,0,65536,0,65536,8192,8192,34816,9216,29712,29712,29712,29840,536900624,29712,29840,29840,4224144,144384,144384,144384,-754647956,144384,144384,144384,144384,-754647956,-754647956,-754647956,-754647956,-754647940,-754647940,-754647940,-754647940,-754516884,-754647956,-754516884,-754516884,0,0,0,1052672,2,67108864,12,16384,0,65536,34816,0,0,0,1114112,44,64576,319029248,-1073741824,0,0,60,0,0,0,2097152,0,0,319160320,0,0,0,3670016,28672,0,0,0,4194304,0,0,0,8192,268435456,16,0,128,536870912,4194304,131072,0,131072,0,0,131072,1024,2048,61440,262144,318767104,-1073741824,318767104,-1073741824,0,0,112,25165824,28,0,0,0,8388608,0,0,393216,0,0,0,16777216,2147483648,0,24576,0,0,116,0,0,12,16,32,64,64,64,64,32,96,96,1,0,0,2,4,8,16,512,1024,16777216,33554432,402653184,0,0,0,262144,0,0,0,128,0,0,0,192,0,0,0,254,2,67108864,16384,0,65536,16384,32768,50331648,268435456,2147483648,0,0,50331648,268435456,0,2,4,112,128,256,0,524288,536870912,0,0,0,33554432,268435456,268435456,268435456,268435456,32,524288,1048576,33554432,67108864,134217728,67108864,134217728,536870912,0,2,4,134217728,268435456,0,0,0,29696,0,256,0,2048,256,262144,2113536,0,2,8,64,128,1024,4096,0,256,0,0,32,128,0,2097152,135790592,0,2,12,192,768,256,32768,0,0,128,131072,256,262144,0,0,220,0,0,0,32768,2097152,0,2,16,1048576,128,128,128,0,2097152,0,0,8388608,8388608,4096,0,0,0,32,0,0,2147483648,2097152,0,0,512,131072,4,0,0,33554624,4,131585,0,131585,4,393745,1610612736,1610612736,393753,393753,393753,393753,0,135790592,131585,131585,805708305,805708305,1879450129,1879450129,-483948553,-475559945,-483948553,-483948553,-475559945,1879450129,1879450129,1879450129,1879450129,805708561,-475559945,-475559945,-475559945,-475559945,-215504905,-475559945,-207116297,-207116297,-207116297,0,4096,4194304,1,512,32768,0,2113536,0,0,520,0,65,401936,805306368,0,0,0,393752,0,1879048192,0,0,1024,585,0,0,8,64,0,0,402192,0,0,0,33554432,0,0,7,19367920,-503316480,0,0,0,50331648,0,19376112,-234881024,0,2,301989888,0,3,22020096,0,1,285212672,0,0,33554432,33554432,8192,0,2048,16384,32768,524288,1048576,4194304,16777216,27764720,-234881024,0,0,1024,278528,24,0,0,0,167772160,8704,268435456,0,0,1998,59238400,-67108864,0,7,16,480,1536,32768,65536,393216,2097152,33554432,536870912,-1073741824,0,0,67108864,134217728,0,0,2048,131072,524288,4194304,8192,268435456,0,0,2048,4194304,0,0,16,224,256,1536,32768,65536,256,512,1024,32768,65536,192,0,0,131072,131072,131072,134217736,32768,131072,262144,2097152,16777216,4096,1,512,32768,0,0,513,32768,0,192,131072,0,4,8,512,2048,0,0,131072,2097152,16777216,0,4,8,2048,8192,32768,512,32768,131072,2097152,8388608,4,16,224,512,32768,4,524288,134217728,0,8388608,0,64,0,4096,32768,0,0,29824,536870912,16,192,32768,8388608,16777216,1073741824,0,0,2,4,16,192,32768,0,4096,0,128,0,16384,64,128,0,0,16384,16,64,128,8388608,0,0,4,0,0,128,512,3072,4096,16384,32768,4,128,0,0,32768,8388608,8388608,33554432,2147483648,0,4,16,32,64,128,256,1536,2048,16384,4096,0,33554432,0,4,32,32,524320,32,33554436,262144,33554432,0,0,0,256,0,0,0,512,2048,131072,33554432,536870912,0,0,0,528,2,2048,32768,0,4,268435456,0,2,4,32,524288,2,33554436,0,0,32768,268435456,33554436,4224,4224,0,8,16,402653184,536870912,0,0,96,2260992,262400,65536,65536,65536,10878976,16777216,33554432,536870912,4224,-1072627712,805306384,-1342177264,-1070006272,-1070006272,-1069989376,-1069989376,-1069989376,-1069989360,-1065795072,-1061600768,-1069989376,-258932720,-258932720,-258932720,-258932720,-225378288,-258932720,-225378288,1260767,1260767,34815199,1260767,1260767,34815199,34815199,1260767,34815199,1260767,169032927,169032927,169032927,169032927,1242774751,169032927,169032927,-1978450721,169032927,-1978450721,169032927,-1978450721,-1978450721,-225231649,-1173144353,-225231649,-225231649,-91013921,0,8,64,2048,16,536870912,0,0,524288,1048576,2097152,4194304,128,128,2048,2048,2048,0,7946240,12140544,0,0,524288,3145728,0,9502720,1610612736,0,0,0,32505856,208,15360,1245184,0,0,0,268435456,0,0,0,15,9633792,0,0,3670016,0,0,16384,0,67108864,0,0,536870912,131072,0,80,128,7168,8192,196608,1048576,196608,1048576,0,0,524288,134217728,1,2,12,80,128,0,3145728,0,0,0,3735552,8192,65536,131072,1048576,0,0,128,1024,4096,8192,0,0],r.TOKEN=["(0)","PragmaContents","DirCommentContents","DirPIContents","CDataSection","Wildcard","EQName","URILiteral","IntegerLiteral","DecimalLiteral","DoubleLiteral","StringLiteral","PredefinedEntityRef","'\"\"'","EscapeApos","ElementContentChar","QuotAttrContentChar","AposAttrContentChar","PITarget","NCName","QName","S","S","CharRef","CommentContents","EOF","'!'","'!='","'\"'","'#'","'#)'","'$'","'$$'","'%'","''''","'('","'(#'","'(:'","')'","'*'","'*'","'+'","','","'-'","'-->'","'.'","'..'","'/'","'//'","'/>'","':'","':)'","'::'","':='","';'","'<'","''","'.'","'..'","'/'","'//'","'/>'","':'","':)'","'::'","':='","';'","'<'","'\n the function returns false.

If $i1 and $i2 are both nodes, they are compared as described\n below:

If the two nodes are of different kinds, the result is false.

If the two nodes are both document nodes then they are deep-equal if and only if\n the sequence $i1/(*|text()) is deep-equal to the sequence\n $i2/(*|text()).

If the two nodes are both element nodes then they are deep-equal if and only if\n all of the following conditions are satisfied:

The two nodes have the same name, that is (node-name($i1) eq\n node-name($i2)).

Either both nodes are both annotated as having simple content or both nodes are\n annotated as having complex content. For this purpose "simple content" means either a simple\n type or a complex type with simple content; "complex content" means a complex type whose variety\n is mixed, element-only, or empty.

It is a consequence of this rule that validating a document\n D against a schema will usually (but not necessarily) result in a document that is not deep-equal\n to D. The exception is when the schema allows all elements to have mixed content.

The two nodes have the same number of attributes, and for every attribute\n $a1 in $i1/@* there exists an attribute\n $a2 in $i2/@* such that $a1 and\n $a2 are deep-equal.

One of the following conditions holds:

Both element nodes are annotated as having simple content\n (as defined in 3(b) above), and\n the typed value of $i1 is deep-equal to the typed value\n of $i2.

Both element nodes have a type annotation that is a complex type with\n variety element-only, and the sequence $i1/* is\n deep-equal to the sequence $i2/*.

Both element nodes have a type annotation that is a complex type with\n variety mixed, and the sequence $i1/(*|text()) is\n deep-equal to the sequence $i2/(*|text()).

Both element nodes have a type annotation that is a complex type with\n variety empty.

If the two nodes are both attribute nodes then they are deep-equal if and only if\n both the following conditions are satisfied:

The two nodes have the same name, that is (node-name($i1) eq\n node-name($i2)).

The typed value of $i1 is deep-equal to the typed value of\n $i2.

If the two nodes are both processing instruction nodes or namespace bindings, then they are deep-equal if and\n only if both the following conditions are satisfied:

The two nodes have the same name, that is (node-name($i1) eq\n node-name($i2)).

The string value of $i1 is equal to the string value of\n $i2.

If the two nodes are both namespace nodes, then they are deep-equal if and only\n if both the following conditions are satisfied:

The two nodes either have the same name or are both nameless, that is\n fn:deep-equal(node-name($i1), node-name($i2)).

The string value of $i1 is equal to the string value of\n $i2 when compared using the Unicode codepoint collation.

If the two nodes are both text nodes or comment nodes, then they are deep-equal if\n and only if their string-values are equal.

A type error is raised \n if either input sequence contains a function item.\n \n

\n',summary:"

This function assesses whether two sequences are deep-equal to each other.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"parameter1",type:"item()",occurrence:"*",description:""},{name:"parameter2",type:"item()",occurrence:"*",description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:3,name:"deep-equal",qname:"fn:deep-equal",signature:"($parameter1 as item()*, $parameter2 as item()*, $collation as xs:string) as xs:boolean external",description:'

This function assesses whether two sequences are deep-equal to each other. To\n be deep-equal, they must contain items that are pairwise deep-equal; and for two items\n to be deep-equal, they must either be atomic values that compare equal, or nodes of the\n same kind, with the same name, whose children are deep-equal.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and implicit timezone.\n

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri, and implicit timezone.\n

The $collation argument identifies a collation which is used at all levels\n of recursion when strings are compared (but not when names are compared), according to\n the rules in .

If the two sequences are both empty, the function returns true.

If the two sequences are of different lengths, the function returns\n false.

If the two sequences are of the same length, the function returns true if\n and only if every item in the sequence $parameter1 is deep-equal to the\n item at the same position in the sequence $parameter2. The rules for\n deciding whether two items are deep-equal follow.

Call the two items $i1 and $i2 respectively.

If $i1 and $i2 are both atomic values, they are deep-equal if\n and only if ($i1 eq $i2) is true, or if both values are\n NaN. If the eq operator is not defined for $i1\n and $i2, the function returns false.

If one of the pair $i1 or $i2 is an atomic value and the\n other is not,\n \n the function returns false.

If $i1 and $i2 are both nodes, they are compared as described\n below:

If the two nodes are of different kinds, the result is false.

If the two nodes are both document nodes then they are deep-equal if and only if\n the sequence $i1/(*|text()) is deep-equal to the sequence\n $i2/(*|text()).

If the two nodes are both element nodes then they are deep-equal if and only if\n all of the following conditions are satisfied:

The two nodes have the same name, that is (node-name($i1) eq\n node-name($i2)).

Either both nodes are both annotated as having simple content or both nodes are\n annotated as having complex content. For this purpose "simple content" means either a simple\n type or a complex type with simple content; "complex content" means a complex type whose variety\n is mixed, element-only, or empty.

It is a consequence of this rule that validating a document\n D against a schema will usually (but not necessarily) result in a document that is not deep-equal\n to D. The exception is when the schema allows all elements to have mixed content.

The two nodes have the same number of attributes, and for every attribute\n $a1 in $i1/@* there exists an attribute\n $a2 in $i2/@* such that $a1 and\n $a2 are deep-equal.

One of the following conditions holds:

Both element nodes are annotated as having simple content\n (as defined in 3(b) above), and\n the typed value of $i1 is deep-equal to the typed value\n of $i2.

Both element nodes have a type annotation that is a complex type with\n variety element-only, and the sequence $i1/* is\n deep-equal to the sequence $i2/*.

Both element nodes have a type annotation that is a complex type with\n variety mixed, and the sequence $i1/(*|text()) is\n deep-equal to the sequence $i2/(*|text()).

Both element nodes have a type annotation that is a complex type with\n variety empty.

If the two nodes are both attribute nodes then they are deep-equal if and only if\n both the following conditions are satisfied:

The two nodes have the same name, that is (node-name($i1) eq\n node-name($i2)).

The typed value of $i1 is deep-equal to the typed value of\n $i2.

If the two nodes are both processing instruction nodes or namespace bindings, then they are deep-equal if and\n only if both the following conditions are satisfied:

The two nodes have the same name, that is (node-name($i1) eq\n node-name($i2)).

The string value of $i1 is equal to the string value of\n $i2.

If the two nodes are both namespace nodes, then they are deep-equal if and only\n if both the following conditions are satisfied:

The two nodes either have the same name or are both nameless, that is\n fn:deep-equal(node-name($i1), node-name($i2)).

The string value of $i1 is equal to the string value of\n $i2 when compared using the Unicode codepoint collation.

If the two nodes are both text nodes or comment nodes, then they are deep-equal if\n and only if their string-values are equal.

A type error is raised \n if either input sequence contains a function item.\n \n

\n',summary:"

This function assesses whether two sequences are deep-equal to each other.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"parameter1",type:"item()",occurrence:"*",description:""},{name:"parameter2",type:"item()",occurrence:"*",description:""},{name:"collation",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:0,name:"default-collation",qname:"fn:default-collation",signature:"() as xs:string external",description:'

Returns the value of the default collation property from the static context.\n

This function is deterministic, context-dependent, and focus-independent. It depends on\n collations.\n

Returns the value of the default collation property from the static context. Components\n of the static context are discussed in .

The default collation property can never be absent. If it is not explicitly defined, a\n system defined default can be invoked. If this is not provided, the Unicode codepoint\n collation (http://www.w3.org/2005/xpath-functions/collation/codepoint) is\n used.

\n',summary:"

Returns the value of the default collation property from the static context.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"distinct-values",qname:"fn:distinct-values",signature:"($arg as xs:anyAtomicType*) as xs:anyAtomicType* external",description:'

Returns the values that appear in a sequence, with duplicates eliminated.

The one-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and implicit timezone.\n

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri, and implicit timezone.\n

The function returns the sequence that results from removing from $arg all\n but one of a set of values that are equal to one another. Values are compared using the\n eq operator, subject to the caveats defined below.

Values of type xs:untypedAtomic are compared as if they were of type\n xs:string.

Values that cannot be compared, because the eq operator is not defined for\n their types, are considered to be distinct.

The collation used by this function is determined according to the rules in . This collation is used when string comparison is\n required.

For xs:float and xs:double values, positive zero is equal to\n negative zero and, although NaN does not equal itself, if $arg\n contains multiple NaN values a single NaN is returned.

If xs:dateTime, xs:date or xs:time values do not\n have a timezone, they are considered to have the implicit timezone provided by the\n dynamic context for the purpose of comparison. Note that xs:dateTime,\n xs:date or xs:time values can compare equal even if their\n timezones are different.

The order in which the sequence of values is returned is .

Which value of a set of values that compare equal is returned is .

The static type of the result is a sequence of prime types as defined\n in [Formal Semantics].

\n

If the input sequence contains values of different numeric types that differ from\n each other by small amounts, then the eq operator is not transitive, because of\n rounding effects occurring during type promotion. In the situation where the input\n contains three values A, B, and C such that\n A eq B, B eq C, but A ne C, then the number\n of items in the result of the function (as well as the choice of which items are\n returned) is , subject only to the\n constraints that (a) no two items in the result sequence compare equal to each other,\n and (b) every input item that does not appear in the result sequence compares equal\n to some item that does appear in the result sequence.

\n

For example, this arises when computing:

\n distinct-values(\n (xs:float(\'1.0\'),\n xs:decimal(\'1.0000000000100000000001\',\n xs:double( \'1.00000000001\'))\n

because the values of type xs:float and xs:double both\n compare equal to the value of type xs:decimal but not equal to each\n other.

\n

If $arg is the empty sequence, the function returns the empty sequence.

\n',summary:"

Returns the values that appear in a sequence, with duplicates eliminated.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:"*",description:""}],returns:{type:"xs:anyAtomicType*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"distinct-values",qname:"fn:distinct-values",signature:"($arg as xs:anyAtomicType*, $collation as xs:string) as xs:anyAtomicType* external",description:'

Returns the values that appear in a sequence, with duplicates eliminated.

The one-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and implicit timezone.\n

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri, and implicit timezone.\n

The function returns the sequence that results from removing from $arg all\n but one of a set of values that are equal to one another. Values are compared using the\n eq operator, subject to the caveats defined below.

Values of type xs:untypedAtomic are compared as if they were of type\n xs:string.

Values that cannot be compared, because the eq operator is not defined for\n their types, are considered to be distinct.

The collation used by this function is determined according to the rules in . This collation is used when string comparison is\n required.

For xs:float and xs:double values, positive zero is equal to\n negative zero and, although NaN does not equal itself, if $arg\n contains multiple NaN values a single NaN is returned.

If xs:dateTime, xs:date or xs:time values do not\n have a timezone, they are considered to have the implicit timezone provided by the\n dynamic context for the purpose of comparison. Note that xs:dateTime,\n xs:date or xs:time values can compare equal even if their\n timezones are different.

The order in which the sequence of values is returned is .

Which value of a set of values that compare equal is returned is .

The static type of the result is a sequence of prime types as defined\n in [Formal Semantics].

\n

If the input sequence contains values of different numeric types that differ from\n each other by small amounts, then the eq operator is not transitive, because of\n rounding effects occurring during type promotion. In the situation where the input\n contains three values A, B, and C such that\n A eq B, B eq C, but A ne C, then the number\n of items in the result of the function (as well as the choice of which items are\n returned) is , subject only to the\n constraints that (a) no two items in the result sequence compare equal to each other,\n and (b) every input item that does not appear in the result sequence compares equal\n to some item that does appear in the result sequence.

\n

For example, this arises when computing:

\n distinct-values(\n (xs:float(\'1.0\'),\n xs:decimal(\'1.0000000000100000000001\',\n xs:double( \'1.00000000001\'))\n

because the values of type xs:float and xs:double both\n compare equal to the value of type xs:decimal but not equal to each\n other.

\n

If $arg is the empty sequence, the function returns the empty sequence.

\n',summary:"

Returns the values that appear in a sequence, with duplicates eliminated.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:"*",description:""},{name:"collation",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:anyAtomicType*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"doc-available",qname:"fn:doc-available",signature:"($uri as xs:string?) as xs:boolean external",description:'

The function returns true if and only if the function\n call fn:doc($uri) would return a document node.

This function is deterministic, context-dependent, and focus-independent. It depends on\n available documents, and static base uri.\n

If $uri is an empty sequence, this function returns\n false.

If a call on fn:doc($uri) would return a document\n node, this function returns true.

A dynamic error is raised if\n $uri is not a valid URI according to the rules applied by the\n implementation of fn:doc.

Otherwise, this function returns false.

If this function returns true, then calling fn:doc($uri)\n within the same must return a document node. However,\n if nondeterministic processing has been selected for the fn:doc function,\n this guarantee is lost.

\n',summary:"

The function returns true if and only if the function\n call fn:doc($uri) would return a document node.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"doc",qname:"fn:doc",signature:"($uri as xs:string?) as document()? external",description:'

Retrieves a document using a URI supplied as an\n xs:string, and returns the corresponding document node.

This function is deterministic, context-dependent, and focus-independent. It depends on\n available documents, and static base uri.\n

If $uri is the empty sequence, the result is an empty sequence.

If $uri is a relative URI reference, it is resolved\n relative to the value of the Static Base URI property from the static context. The resulting\n absolute URI is promoted to an xs:string.

If the Available documents described in provides a mapping from this string to a document\n node, the function returns that document node.

The URI may include a fragment identifier.

By default, this function is deterministic. Two calls on this function\n return the same document node if the same URI Reference (after resolution to an absolute\n URI Reference) is supplied to both calls. Thus, the following expression (if it does not\n raise an error) will always be true:

doc("foo.xml") is doc("foo.xml")

However, for performance reasons, implementations may provide a user option to evaluate\n the function without a guarantee of determinism. The manner in which any such option is\n provided is implementation-defined. If the user has not selected such an option, a call\n of the function must either return a deterministic result or must raise a dynamic error\n .

For detailed type semantics, see [Formal Semantics].

If $uri is read from a source document, it is generally appropriate to\n resolve it relative to the base URI property of the relevant node in the source\n document. This can be achieved by calling the fn:resolve-uri function,\n and passing the resulting absolute URI as an argument to the fn:doc\n function.

If two calls to this function supply different absolute URI References as arguments, the\n same document node may be returned if the implementation can determine that the two\n arguments refer to the same resource.

By defining the semantics of this function in terms of a string-to-document-node\n mapping in the dynamic context, the specification is acknowledging that the results of\n this function are outside the purview of the language specification itself, and depend\n entirely on the run-time environment in which the expression is evaluated. This run-time\n environment includes not only an unpredictable collection of resources ("the web"), but\n configurable machinery for locating resources and turning their contents into document\n nodes within the XPath data model. Both the set of resources that are reachable, and the\n mechanisms by which those resources are parsed and validated, are .

One possible processing model for this function is as follows. The resource identified\n by the URI Reference is retrieved. If the resource cannot be retrieved, a dynamic error is\n raised . The data resulting from the retrieval action\n is then parsed as an XML document and a tree is constructed in accordance with the\n . If the top-level media type is known and is\n "text", the content is parsed in the same way as if the media type were text/xml;\n otherwise, it is parsed in the same way as if the media type were application/xml. If\n the contents cannot be parsed successfully, a dynamic error is raised . Otherwise, the result of the function is the document node at the root\n of the resulting tree. This tree is then optionally validated against a schema.

Various aspects of this processing are .\n Implementations may provide external configuration options that allow any aspect of the\n processing to be controlled by the user. In particular:

The set of URI schemes that the implementation recognizes is\n implementation-defined. Implementations may allow the mapping of URIs to resources\n to be configured by the user, using mechanisms such as catalogs or user-written\n URI handlers.

The handling of non-XML media types is implementation-defined. Implementations may\n allow instances of the data model to be constructed from non-XML resources, under\n user control.

It is whether DTD validation and/or schema\n validation is applied to the source document.

Implementations may provide user-defined error handling options that allow\n processing to continue following an error in retrieving a resource, or in parsing\n and validating its content. When errors have been handled in this way, the\n function may return either an empty sequence, or a fallback document provided by\n the error handler.

Implementations may provide user options that relax the requirement for the\n function to return deterministic results.

A dynamic error may be raised if $uri is not a valid URI.

A dynamic error is raised if the\n available documents provides no mapping for the absolutized URI.

A dynamic error is raised if the resource cannot be\n retrieved or cannot be parsed successfully as XML.

A dynamic error is raised if the implementation is not able\n to guarantee that the result of the function will be deterministic, and the user has not\n indicated that an unstable result is acceptable.

\n',summary:"

Retrieves a document using a URI supplied as an\n xs:string , and returns the corresponding document node.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:"?",description:""}],returns:{type:"document()?",description:""},errors:[]},{isDocumented:!0,arity:0,name:"document-uri",qname:"fn:document-uri",signature:"() as xs:anyURI? external",description:'

Returns the URI of a resource where a document can be found, if available.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item\n (.). The behavior of the function if the argument is omitted is exactly\n the same as if the context item had been passed as the argument.

If $arg is the empty sequence, the function returns the empty sequence.

If $arg is not a document node, the function returns the empty\n sequence.

Otherwise, the function returns the value of the document-uri accessor\n applied to $arg, as defined in (See\n ).

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the URI of a resource where a document can be found, if available.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:anyURI?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"document-uri",qname:"fn:document-uri",signature:"($arg as node()?) as xs:anyURI? external",description:'

Returns the URI of a resource where a document can be found, if available.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item\n (.). The behavior of the function if the argument is omitted is exactly\n the same as if the context item had been passed as the argument.

If $arg is the empty sequence, the function returns the empty sequence.

If $arg is not a document node, the function returns the empty\n sequence.

Otherwise, the function returns the value of the document-uri accessor\n applied to $arg, as defined in (See\n ).

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the URI of a resource where a document can be found, if available.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"node()",occurrence:"?",description:""}],returns:{type:"xs:anyURI?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"element-with-id",qname:"fn:element-with-id",signature:"($arg as xs:string*) as element(*)* external",description:'

Returns the sequence of element nodes that have an\n ID value matching the value of one or more of the IDREF\n values supplied in $arg.

The one-argument form of this function is deterministic, context-dependent, and focus-dependent.

The two-argument form of this function is deterministic, context-independent, and focus-independent.

\n

The effect of this function is identical to fn:id in respect\n of elements that have an attribute with the is-id property. However,\n it behaves differently in respect of element nodes with the is-id\n property. Whereas the fn:id, for legacy reasons, returns the element\n that has the is-id property, this parent returns the element\n identified by the ID, which is the parent of the element having the\n is-id property.

\n

The function returns a sequence, in document order with duplicates eliminated,\n containing every element node E that satisfies all the following\n conditions:

\n

\n E is in the target document. The target document is the document\n containing $node, or the document containing the context item\n (.) if the second argument is omitted. The behavior of the\n function if $node is omitted is exactly the same as if the context\n item had been passed as $node.

E has an ID value equal to one of the candidate\n IDREF values, where:

An element has an ID value equal to V if\n either or both of the following conditions are true:

The element has an child element node whose is-id\n property (See .) is true and\n whose typed value is equal to V under the rules of the\n eq operator using the Unicode code point collation\n (http://www.w3.org/2005/xpath-functions/collation/codepoint).

The element has an attribute node whose is-id property\n (See .) is true and whose\n typed value is equal to V under the rules of the\n eq operator using the Unicode code point collation\n (http://www.w3.org/2005/xpath-functions/collation/codepoint).

Each xs:string in $arg is parsed as if it were\n of type IDREFS, that is, each xs:string in\n $arg is treated as a whitespace-separated sequence of\n tokens, each acting as an IDREF. These tokens are then\n included in the list of candidate IDREFs. If any of the\n tokens is not a lexically valid IDREF (that is, if it is not\n lexically an xs:NCName), it is ignored. Formally, the\n candidate IDREF values are the strings in the sequence given\n by the expression:

for $s in $arg return\n fn:tokenize(fn:normalize-space($s), \' \')[. castable as xs:IDREF]

If several elements have the same ID value, then E\n is the one that is first in document order.

\n
\n

A dynamic error is raised if\n $node, or the context item if the second argument is omitted, is a\n node in a tree whose root is not a document node.

\n

The following errors may be raised when $node is omitted:

\n
  • If the context\n item is absent, dynamic error\n

  • If the context item is not a\n node, type error .

\n
\n',summary:"

Returns the sequence of element nodes that have an\n ID value matching the value of one or more of the IDREF \n values supplied in $arg .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"*",description:""}],returns:{type:"element(*)*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"element-with-id",qname:"fn:element-with-id",signature:"($arg as xs:string*, $node as node()) as element(*)* external",description:'

Returns the sequence of element nodes that have an\n ID value matching the value of one or more of the IDREF\n values supplied in $arg.

The one-argument form of this function is deterministic, context-dependent, and focus-dependent.

The two-argument form of this function is deterministic, context-independent, and focus-independent.

\n

The effect of this function is identical to fn:id in respect\n of elements that have an attribute with the is-id property. However,\n it behaves differently in respect of element nodes with the is-id\n property. Whereas the fn:id, for legacy reasons, returns the element\n that has the is-id property, this parent returns the element\n identified by the ID, which is the parent of the element having the\n is-id property.

\n

The function returns a sequence, in document order with duplicates eliminated,\n containing every element node E that satisfies all the following\n conditions:

\n

\n E is in the target document. The target document is the document\n containing $node, or the document containing the context item\n (.) if the second argument is omitted. The behavior of the\n function if $node is omitted is exactly the same as if the context\n item had been passed as $node.

E has an ID value equal to one of the candidate\n IDREF values, where:

An element has an ID value equal to V if\n either or both of the following conditions are true:

The element has an child element node whose is-id\n property (See .) is true and\n whose typed value is equal to V under the rules of the\n eq operator using the Unicode code point collation\n (http://www.w3.org/2005/xpath-functions/collation/codepoint).

The element has an attribute node whose is-id property\n (See .) is true and whose\n typed value is equal to V under the rules of the\n eq operator using the Unicode code point collation\n (http://www.w3.org/2005/xpath-functions/collation/codepoint).

Each xs:string in $arg is parsed as if it were\n of type IDREFS, that is, each xs:string in\n $arg is treated as a whitespace-separated sequence of\n tokens, each acting as an IDREF. These tokens are then\n included in the list of candidate IDREFs. If any of the\n tokens is not a lexically valid IDREF (that is, if it is not\n lexically an xs:NCName), it is ignored. Formally, the\n candidate IDREF values are the strings in the sequence given\n by the expression:

for $s in $arg return\n fn:tokenize(fn:normalize-space($s), \' \')[. castable as xs:IDREF]

If several elements have the same ID value, then E\n is the one that is first in document order.

\n
\n

A dynamic error is raised if\n $node, or the context item if the second argument is omitted, is a\n node in a tree whose root is not a document node.

\n

The following errors may be raised when $node is omitted:

\n
  • If the context\n item is absent, dynamic error\n

  • If the context item is not a\n node, type error .

\n
\n',summary:"

Returns the sequence of element nodes that have an\n ID value matching the value of one or more of the IDREF \n values supplied in $arg .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"*",description:""},{name:"node",type:"node()",occurrence:null,description:""}],returns:{type:"element(*)*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"empty",qname:"fn:empty",signature:"($arg as item()*) as xs:boolean external",description:'

Returns true if the argument is the empty sequence.

This function is deterministic, context-independent, and focus-independent.

If the value of $arg is the empty sequence, the function returns\n true; otherwise, the function returns false.

The expression fn:empty((1,2,3)[10]) returns true().

The expression fn:empty(fn:remove(("hello", "world"), 1)) returns false().

\n',summary:"

Returns true if the argument is the empty sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"encode-for-uri",qname:"fn:encode-for-uri",signature:"($uri-part as xs:string?) as xs:string external",description:'

Encodes reserved characters in a string that is intended to be used in the path\n segment of a URI.

This function is deterministic, context-independent, and focus-independent.

If $uri-part is the empty sequence, the function returns the zero-length\n string.

This function applies the URI escaping rules defined in section 2 of to the xs:string supplied as $uri-part. The\n effect of the function is to escape reserved characters. Each such character in the\n string is replaced with its percent-encoded form as described in .

Since recommends that, for consistency, URI producers and\n normalizers should use uppercase hexadecimal digits for all percent-encodings, this\n function must always generate hexadecimal values using the upper-case letters A-F.

All characters are escaped except those identified as "unreserved" by , that is the upper- and lower-case letters A-Z, the digits 0-9,\n HYPHEN-MINUS ("-"), LOW LINE ("_"), FULL STOP ".", and TILDE "~".

This function escapes URI delimiters and therefore cannot be used indiscriminately to\n encode "invalid" characters in a path segment.

This function is invertible but not idempotent. This is because a string containing a\n percent character will be modified by applying the function: for example\n 100% becomes 100%25, while 100%25 becomes\n 100%2525.

\n',summary:"

Encodes reserved characters in a string that is intended to be used in the path\n segment of a URI.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri-part",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"ends-with",qname:"fn:ends-with",signature:"($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean external",description:'

Returns true if the string $arg1 contains $arg2 as a\n trailing substring, taking collations into account.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations.\n

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri.\n

If the value of $arg1 or $arg2 is the empty sequence, or\n contains only ignorable collation units, it is interpreted as the zero-length\n string.

If the value of $arg2 is the zero-length string, then the function returns\n true. If the value of $arg1 is the zero-length string and\n the value of $arg2 is not the zero-length string, then the function returns\n false.

The collation used by this function is determined according to the rules in .

The function returns an xs:boolean indicating whether or not the value of\n $arg1 starts with a sequence of collation units that provides a\n match to the collation units of $arg2 according to the\n collation that is used.

\n Match is defined in .

A dynamic error may be raised if the\n specified collation does not support collation units.

\n',summary:"

Returns true if the string $arg1 contains $arg2 as a\n trailing substring, taking collations into account.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:string",occurrence:"?",description:""},{name:"arg2",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:3,name:"ends-with",qname:"fn:ends-with",signature:"($arg1 as xs:string?, $arg2 as xs:string?, $collation as xs:string) as xs:boolean external",description:'

Returns true if the string $arg1 contains $arg2 as a\n trailing substring, taking collations into account.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations.\n

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri.\n

If the value of $arg1 or $arg2 is the empty sequence, or\n contains only ignorable collation units, it is interpreted as the zero-length\n string.

If the value of $arg2 is the zero-length string, then the function returns\n true. If the value of $arg1 is the zero-length string and\n the value of $arg2 is not the zero-length string, then the function returns\n false.

The collation used by this function is determined according to the rules in .

The function returns an xs:boolean indicating whether or not the value of\n $arg1 starts with a sequence of collation units that provides a\n match to the collation units of $arg2 according to the\n collation that is used.

\n Match is defined in .

A dynamic error may be raised if the\n specified collation does not support collation units.

\n',summary:"

Returns true if the string $arg1 contains $arg2 as a\n trailing substring, taking collations into account.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:string",occurrence:"?",description:""},{name:"arg2",type:"xs:string",occurrence:"?",description:""},{name:"collation",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"environment-variable",qname:"fn:environment-variable",signature:"($arg as xs:string) as xs:string? external",description:'

Returns the value of a system environment variable, if it exists.

This function is deterministic, context-dependent, and focus-independent. It depends on\n environment variables.\n

The set of available environment variables\n is a set of (name, value) pairs forming part\n of the dynamic context, in which the name is unique within the set of pairs. The name\n and value are arbitrary strings.

If the $name argument matches the name of one of these pairs, the function\n returns the corresponding value.

If there is no environment variable with a matching name, the function returns the empty\n sequence.

The collation used for matching names is , but\n must be the same as the collation used to ensure that the names of all environment\n variables are unique.

The function is deterministic,\n which means that if it is called several times\n within the same execution scope, with the same arguments,\n it must return the same result.

On many platforms, the term "environment variable" has a natural meaning in terms of\n facilities provided by the operating system. This interpretation of the concept does not\n exclude other interpretations, such as a mapping to a set of configuration parameters in\n a database system.

Environment variable names are usually case sensitive. Names are usually of the form\n (letter|_) (letter|_|digit)*, but this varies by platform.

On some platforms, there may sometimes be multiple environment variables with the same name;\n in this case, it is implementation-dependent as to which is returned; see for example\n (Chapter 8, Environment Variables).\n Implementations may use prefixes or other naming conventions\n to disambiguate the names.

The requirement to ensure that the function is deterministic means in practice that\n the implementation must make a snapshot of the environment variables at some time\n during execution, and return values obtained from this snapshot, rather than using\n live values that are subject to change at any time.

Operating system environment variables may be associated with a particular process,\n while queries and stylesheets may execute across multiple processes (or multiple machines).\n In such circumstances implementations may choose to provide access\n to the environment variables associated with the process in which the query or stylesheet\n processing was initiated.

Security advice: Queries from untrusted sources should not be permitted unrestricted\n access to environment variables. For example, the name of the account under which the\n query is running may be useful information to a would-be intruder. An implementation may\n therefore choose to restrict access to the environment, or may provide a facility to\n make fn:environment-variable always return the empty sequence.

\n',summary:"

Returns the value of a system environment variable, if it exists.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"environment-variable",qname:"fn:environment-variable",signature:"($name as xs:string) as xs:string? external",description:'

Returns the value of a system environment variable, if it exists.

This function is deterministic, context-dependent, and focus-independent. It depends on\n environment variables.\n

The set of available environment variables\n is a set of (name, value) pairs forming part\n of the dynamic context, in which the name is unique within the set of pairs. The name\n and value are arbitrary strings.

If the $name argument matches the name of one of these pairs, the function\n returns the corresponding value.

If there is no environment variable with a matching name, the function returns the empty\n sequence.

The collation used for matching names is , but\n must be the same as the collation used to ensure that the names of all environment\n variables are unique.

The function is deterministic,\n which means that if it is called several times\n within the same execution scope, with the same arguments,\n it must return the same result.

On many platforms, the term "environment variable" has a natural meaning in terms of\n facilities provided by the operating system. This interpretation of the concept does not\n exclude other interpretations, such as a mapping to a set of configuration parameters in\n a database system.

Environment variable names are usually case sensitive. Names are usually of the form\n (letter|_) (letter|_|digit)*, but this varies by platform.

On some platforms, there may sometimes be multiple environment variables with the same name;\n in this case, it is implementation-dependent as to which is returned; see for example\n (Chapter 8, Environment Variables).\n Implementations may use prefixes or other naming conventions\n to disambiguate the names.

The requirement to ensure that the function is deterministic means in practice that\n the implementation must make a snapshot of the environment variables at some time\n during execution, and return values obtained from this snapshot, rather than using\n live values that are subject to change at any time.

Operating system environment variables may be associated with a particular process,\n while queries and stylesheets may execute across multiple processes (or multiple machines).\n In such circumstances implementations may choose to provide access\n to the environment variables associated with the process in which the query or stylesheet\n processing was initiated.

Security advice: Queries from untrusted sources should not be permitted unrestricted\n access to environment variables. For example, the name of the account under which the\n query is running may be useful information to a would-be intruder. An implementation may\n therefore choose to restrict access to the environment, or may provide a facility to\n make fn:environment-variable always return the empty sequence.

\n',summary:"

Returns the value of a system environment variable, if it exists.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:0,name:"error",qname:"fn:error",signature:"() as none external",description:'

Calling the fn:error function raises an application-defined\n error.

This function is nondeterministic, context-independent, and focus-independent.

This function never returns a value. Instead it always raises an error. The effect of\n the error is identical to the effect of dynamic errors raised implicitly, for example\n when an incorrect argument is supplied to a function.

The parameters to the fn:error function supply information that is\n associated with the error condition and that is made available to a caller that asks for\n information about the error. The error may be caught either by the host language (using\n a try/catch construct in XSLT or XQuery, for example), or by the calling application or\n external processing environment. The way in which error information is returned to the\n external processing environment is

If fn:error is called with no arguments, then its behavior is the same as\n the function call:

fn:error(fn:QName(\'http://www.w3.org/2005/xqt-errors\', \'err:FOER0000\'))

If $code is the empty sequence then the effective value is the\n xs:QName constructed by:

fn:QName(\'http://www.w3.org/2005/xqt-errors\', \'err:FOER0000\')

There are three pieces of information that may be associated with an error:

The $code is an error code that distinguishes this error from others.\n It is an xs:QName; the namespace URI conventionally identifies the\n component, subsystem, or authority responsible for defining the meaning of the\n error code, while the local part identifies the specific error condition. The\n namespace URI http://www.w3.org/2005/xqt-errors is used for errors\n defined in this specification; other namespace URIs may be used for errors defined\n by the application.

If the external processing environment expects the error code to be returned as a\n URI or a string rather than as an xs:QName, then an error code with\n namespace URI NS and local part LP will be returned in\n the form NS#LP. The namespace URI part of the error code should\n therefore not include a fragment identifier.

The $description is a natural-language description of the error\n condition.

The $error-object is an arbitrary value used to convey additional\n information about the error, and may be used in any way the application\n chooses.

This function always raises a dynamic error. By default, it raises

\n',summary:"

Calling the fn:error function raises an application-defined\n error.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"none",description:""},errors:[]},{isDocumented:!0,arity:1,name:"error",qname:"fn:error",signature:"($code as xs:QName) as none external",description:'

Calling the fn:error function raises an application-defined\n error.

This function is nondeterministic, context-independent, and focus-independent.

This function never returns a value. Instead it always raises an error. The effect of\n the error is identical to the effect of dynamic errors raised implicitly, for example\n when an incorrect argument is supplied to a function.

The parameters to the fn:error function supply information that is\n associated with the error condition and that is made available to a caller that asks for\n information about the error. The error may be caught either by the host language (using\n a try/catch construct in XSLT or XQuery, for example), or by the calling application or\n external processing environment. The way in which error information is returned to the\n external processing environment is

If fn:error is called with no arguments, then its behavior is the same as\n the function call:

fn:error(fn:QName(\'http://www.w3.org/2005/xqt-errors\', \'err:FOER0000\'))

If $code is the empty sequence then the effective value is the\n xs:QName constructed by:

fn:QName(\'http://www.w3.org/2005/xqt-errors\', \'err:FOER0000\')

There are three pieces of information that may be associated with an error:

The $code is an error code that distinguishes this error from others.\n It is an xs:QName; the namespace URI conventionally identifies the\n component, subsystem, or authority responsible for defining the meaning of the\n error code, while the local part identifies the specific error condition. The\n namespace URI http://www.w3.org/2005/xqt-errors is used for errors\n defined in this specification; other namespace URIs may be used for errors defined\n by the application.

If the external processing environment expects the error code to be returned as a\n URI or a string rather than as an xs:QName, then an error code with\n namespace URI NS and local part LP will be returned in\n the form NS#LP. The namespace URI part of the error code should\n therefore not include a fragment identifier.

The $description is a natural-language description of the error\n condition.

The $error-object is an arbitrary value used to convey additional\n information about the error, and may be used in any way the application\n chooses.

This function always raises a dynamic error. By default, it raises

\n',summary:"

Calling the fn:error function raises an application-defined\n error.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"code",type:"xs:QName",occurrence:null,description:""}],returns:{type:"none",description:""},errors:[]},{isDocumented:!0,arity:2,name:"error",qname:"fn:error",signature:"($code as xs:QName?, $description as xs:string) as none external",description:'

Calling the fn:error function raises an application-defined\n error.

This function is nondeterministic, context-independent, and focus-independent.

This function never returns a value. Instead it always raises an error. The effect of\n the error is identical to the effect of dynamic errors raised implicitly, for example\n when an incorrect argument is supplied to a function.

The parameters to the fn:error function supply information that is\n associated with the error condition and that is made available to a caller that asks for\n information about the error. The error may be caught either by the host language (using\n a try/catch construct in XSLT or XQuery, for example), or by the calling application or\n external processing environment. The way in which error information is returned to the\n external processing environment is

If fn:error is called with no arguments, then its behavior is the same as\n the function call:

fn:error(fn:QName(\'http://www.w3.org/2005/xqt-errors\', \'err:FOER0000\'))

If $code is the empty sequence then the effective value is the\n xs:QName constructed by:

fn:QName(\'http://www.w3.org/2005/xqt-errors\', \'err:FOER0000\')

There are three pieces of information that may be associated with an error:

The $code is an error code that distinguishes this error from others.\n It is an xs:QName; the namespace URI conventionally identifies the\n component, subsystem, or authority responsible for defining the meaning of the\n error code, while the local part identifies the specific error condition. The\n namespace URI http://www.w3.org/2005/xqt-errors is used for errors\n defined in this specification; other namespace URIs may be used for errors defined\n by the application.

If the external processing environment expects the error code to be returned as a\n URI or a string rather than as an xs:QName, then an error code with\n namespace URI NS and local part LP will be returned in\n the form NS#LP. The namespace URI part of the error code should\n therefore not include a fragment identifier.

The $description is a natural-language description of the error\n condition.

The $error-object is an arbitrary value used to convey additional\n information about the error, and may be used in any way the application\n chooses.

This function always raises a dynamic error. By default, it raises

\n',summary:"

Calling the fn:error function raises an application-defined\n error.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"code",type:"xs:QName",occurrence:"?",description:""},{name:"description",type:"xs:string",occurrence:null,description:""}],returns:{type:"none",description:""},errors:[]},{isDocumented:!0,arity:3,name:"error",qname:"fn:error",signature:"($code as xs:QName?, $description as xs:string, $error-object as item()*) as none external",description:'

Calling the fn:error function raises an application-defined\n error.

This function is nondeterministic, context-independent, and focus-independent.

This function never returns a value. Instead it always raises an error. The effect of\n the error is identical to the effect of dynamic errors raised implicitly, for example\n when an incorrect argument is supplied to a function.

The parameters to the fn:error function supply information that is\n associated with the error condition and that is made available to a caller that asks for\n information about the error. The error may be caught either by the host language (using\n a try/catch construct in XSLT or XQuery, for example), or by the calling application or\n external processing environment. The way in which error information is returned to the\n external processing environment is

If fn:error is called with no arguments, then its behavior is the same as\n the function call:

fn:error(fn:QName(\'http://www.w3.org/2005/xqt-errors\', \'err:FOER0000\'))

If $code is the empty sequence then the effective value is the\n xs:QName constructed by:

fn:QName(\'http://www.w3.org/2005/xqt-errors\', \'err:FOER0000\')

There are three pieces of information that may be associated with an error:

The $code is an error code that distinguishes this error from others.\n It is an xs:QName; the namespace URI conventionally identifies the\n component, subsystem, or authority responsible for defining the meaning of the\n error code, while the local part identifies the specific error condition. The\n namespace URI http://www.w3.org/2005/xqt-errors is used for errors\n defined in this specification; other namespace URIs may be used for errors defined\n by the application.

If the external processing environment expects the error code to be returned as a\n URI or a string rather than as an xs:QName, then an error code with\n namespace URI NS and local part LP will be returned in\n the form NS#LP. The namespace URI part of the error code should\n therefore not include a fragment identifier.

The $description is a natural-language description of the error\n condition.

The $error-object is an arbitrary value used to convey additional\n information about the error, and may be used in any way the application\n chooses.

This function always raises a dynamic error. By default, it raises

\n',summary:"

Calling the fn:error function raises an application-defined\n error.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"code",type:"xs:QName",occurrence:"?",description:""},{name:"description",type:"xs:string",occurrence:null,description:""},{name:"error-object",type:"item()",occurrence:"*",description:""}],returns:{type:"none",description:""},errors:[]},{isDocumented:!0,arity:1,name:"escape-html-uri",qname:"fn:escape-html-uri",signature:"($uri as xs:string?) as xs:string external",description:'

Escapes a URI in the same way that HTML user agents handle attribute values\n expected to contain URIs.

This function is deterministic, context-independent, and focus-independent.

If $uri is the empty sequence, the function returns the zero-length\n string.

Otherwise, the function escapes all characters except\n printable characters of the US-ASCII coded character set, specifically the codepoints between 32 and 126 (decimal) inclusive. Each\n character in $uri to be escaped is replaced by an escape sequence, which is\n formed by encoding the character as a sequence of octets in UTF-8, and then representing\n each of these octets in the form %HH, where HH is the hexadecimal representation of the\n octet. This function must always generate hexadecimal values using the upper-case\n letters A-F.

The behavior of this function corresponds to the recommended handling of non-ASCII\n characters in URI attribute values as described in Appendix\n B.2.1.

\n',summary:"

Escapes a URI in the same way that HTML user agents handle attribute values\n expected to contain URIs.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"exactly-one",qname:"fn:exactly-one",signature:"($arg as item()*) as item() external",description:'

Returns $arg if it contains exactly one item. Otherwise, raises an\n error.

This function is deterministic, context-independent, and focus-independent.

Except in error cases, the function returns $arg unchanged.

For detailed type semantics, see [Formal Semantics].

A dynamic error is raised if $arg is an empty\n sequence or a sequence containing more than one item.

\n',summary:"

Returns $arg if it contains exactly one item.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:""}],returns:{type:"item()",description:""},errors:[]},{isDocumented:!0,arity:1,name:"exists",qname:"fn:exists",signature:"($arg as item()*) as xs:boolean external",description:'

Returns true if the argument is a non-empty sequence.

This function is deterministic, context-independent, and focus-independent.

If the value of $arg is a non-empty sequence, the function returns\n true; otherwise, the function returns false.

The expression fn:exists(fn:remove(("hello"), 1)) returns false().

The expression fn:exists(fn:remove(("hello", "world"), 1)) returns true().

\n',summary:"

Returns true if the argument is a non-empty sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:0,name:"false",qname:"fn:false",signature:"() as xs:boolean external",description:'

Returns the xs:boolean value false.

This function is deterministic, context-independent, and focus-independent.

The result is equivalent to xs:boolean("0").

The expression fn:false() returns xs:boolean(0).

\n',summary:"

Returns the xs:boolean value false .

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"filter",qname:"fn:filter",signature:"($seq as item()*, $f as function (item()) as xs:boolean) as item()* external",description:'

Returns those items from the sequence $seq for which the supplied\n function $f returns true.

This function is deterministic, context-independent, and focus-independent.

The effect of the function is equivalent to the following implementation in XQuery:

\n declare function fn:filter(\n $seq as item()*,\n $f as function(item()) as xs:boolean)\n as item()* {\n if (fn:empty($seq))\n then ()\n else ( fn:head($seq)[$f(.) eq fn:true()],\n fn:filter(fn:tail($seq), $f)\n )\n };

or its equivalent in XSLT:

\n <xsl:function name="fn:filter" as="item()*">\n <xsl:param name="seq" as="item()*"/>\n <xsl:param name="f" as="function(item()) as xs:boolean"/>\n <xsl:if test="fn:exists($seq)">\n <xsl:sequence select="fn:head($seq)[$f(.) eq fn:true()], fn:filter(fn:tail($seq), $f)"/>\n </xsl:if>\n </xsl:function>\n

As a consequence of the function signature and the function calling\n rules, a type error occurs if the supplied function $f returns anything other\n than a single xs:boolean item; there is no conversion to an effective\n boolean value.

\n',summary:"

Returns those items from the sequence $seq for which the supplied\n function $f returns true.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"item()",occurrence:"*",description:""},{name:"f",type:"function (item()) as xs:boolean",occurrence:null,description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"floor",qname:"fn:floor",signature:"($arg as numeric?) as numeric? external",description:'

Rounds $arg downwards to a whole number.

This function is deterministic, context-independent, and focus-independent.

General rules: see .

The function returns the largest (closest to positive infinity) number with no\n fractional part that is not greater than the value of $arg.

If the type of $arg is one of the four numeric types xs:float,\n xs:double, xs:decimal or xs:integer the type\n of the result is the same as the type of $arg. If the type of\n $arg is a type derived from one of the numeric types, the result is an\n instance of the base numeric type.

For xs:float and xs:double arguments, if the argument is\n positive zero, then positive zero is returned. If the argument is negative zero, then\n negative zero is returned.

For detailed type semantics, see [Formal Semantics].

The expression fn:floor(10.5) returns 10.

The expression fn:floor(-10.5) returns -11.

\n',summary:"

Rounds $arg downwards to a whole number.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"numeric",occurrence:"?",description:""}],returns:{type:"numeric?",description:""},errors:[]},{isDocumented:!0,arity:3,name:"fold-left",qname:"fn:fold-left",signature:"($seq as item()*, $zero as item()*, $f as function (item()*, item()) as item()*) as item()* external",description:'

Processes the supplied sequence from left to right, applying the supplied\n function repeatedly to each item in turn, together with an accumulated result value.

This function is deterministic, context-independent, and focus-independent.

The effect of the function is equivalent to the following implementation in XQuery:

\n declare function fn:fold-left(\n $seq as item()*\n $zero as item()*,\n $f as function(item()*, item()) as item()*)\n as item()* {\n if (fn:empty($seq))\n then $zero\n else fn:fold-left(fn:tail($seq), $f($zero, fn:head($seq)), $f)\n };

or its equivalent in XSLT:

\n <xsl:function name="fn:fold-left" as="item()*">\n <xsl:param name="seq" as="item()*"/>\n <xsl:param name="zero" as="item()*"/>\n <xsl:param name="f" as="function(item()*, item()) as item()*"/>\n <xsl:choose>\n <xsl:when test="fn:empty($seq)">\n <xsl:sequence select="$zero"/>\n </xsl:when>\n <xsl:otherwise>\n <xsl:sequence select="fn:fold-left(fn:tail($seq), $f($zero, fn:head($seq)), $f)"/>\n </xsl:otherwise>\n </xsl:choose>\n </xsl:function>\n

As a consequence of the function signature and the function calling\n rules, a type error occurs if the supplied function $f cannot be applied to\n two arguments, where the first argument is either the value of $zero or the\n result of a previous application of $f, and the second is $seq or\n any trailing subsequence of $seq.

\n',summary:"

Processes the supplied sequence from left to right, applying the supplied\n function repeatedly to each item in turn, together with an accumulated result value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"item()",occurrence:"*",description:""},{name:"zero",type:"item()",occurrence:"*",description:""},{name:"f",type:"function (item()*, item()) as item()*",occurrence:null,description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"fold-right",qname:"fn:fold-right",signature:"($seq as item()*, $zero as item()*, $f as function (item()*, item()) as item()*) as item()* external",description:'

Processes the supplied sequence from right to left, applying the supplied\n function repeatedly to each item in turn, together with an accumulated result value.

This function is deterministic, context-independent, and focus-independent.

The effect of the function is equivalent to the following implementation in XQuery:

\n declare function fn:fold-right(\n $seq as item()*,\n $zero as item()*,\n $f as function(item(), item()*) as item()*)\n as item()* {\n if (fn:empty($seq))\n then $zero\n else $f(fn:head($seq), fn:fold-right(fn:tail($seq), $zero, $f))\n };

or its equivalent in XSLT:

\n <xsl:function name="fn:fold-right" as="item()*">\n <xsl:param name="seq" as="item()*"/>\n <xsl:param name="zero" as="item()*"/>\n <xsl:param name="f" as="function(item(), item()*) as item()*"/>\n <xsl:choose>\n <xsl:when test="fn:empty($seq)">\n <xsl:sequence select="$zero"/>\n </xsl:when>\n <xsl:otherwise>\n <xsl:sequence select="$f(fn:head($seq), fn:fold-right(fn:tail($seq), $zero, $f))"/>\n </xsl:otherwise>\n </xsl:choose>\n </xsl:function>\n

As a consequence of the function signature and the function calling\n rules, a type error occurs if the supplied function $f cannot be applied to\n two arguments, where the first argument is any item in the sequence $seq, and\n the second is either the value of $zero or the result of a previous\n application of $f.

\n',summary:"

Processes the supplied sequence from right to left, applying the supplied\n function repeatedly to each item in turn, together with an accumulated result value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"item()",occurrence:"*",description:""},{name:"zero",type:"item()",occurrence:"*",description:""},{name:"f",type:"function (item()*, item()) as item()*",occurrence:null,description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"for-each-pair",qname:"fn:for-each-pair",signature:"($seq1 as item()*, $seq2 as item()*, $f as function (item(), item()) as item()*) as item()* external",description:'

Applies the function item $f to successive pairs of items taken one\n from $seq1 and one from $seq2, returning the concatenation of the\n resulting sequences in order.

This function is deterministic, context-independent, and focus-independent.

The effect of the function is equivalent to the following implementation in XQuery:

\n declare function fn:for-each-pair($seq1, $seq2, $f)\n {\n if(fn:exists($seq1) and fn:exists($seq2))\n then (\n $f(fn:head($seq1), fn:head($seq2)),\n fn:for-each-pair(fn:tail($seq1), fn:tail($seq2), $f)\n )\n else ()\n };

or its equivalent in XSLT:

\n <xsl:function name="fn:for-each-pair">\n <xsl:param name="seq1/>\n <xsl:param name="seq2/>\n <xsl:param name="f"/>\n <xsl:if test="fn:exists($seq1) and fn:exists($seq2)">\n <xsl:sequence select="$f(fn:head($seq1), fn:head($seq2))"/>\n <xsl:sequence select="fn:for-each-pair(fn:tail($seq1), fn:tail($seq2), $f)"/>\n </xsl:if>\n </xsl:function>\n

The expression fn:for-each-pair(("a", "b", "c"), ("x", "y", "z"), concat#2) returns ("ax", "by", "cz").

The expression fn:for-each-pair(1 to 5, 1 to 5, function($a, $b){10*$a + $b} returns (11, 22, 33, 44, 55).

\n',summary:"

Applies the function item $f to successive pairs of items taken one\n from $seq1 and one from $seq2 , returning the concatenation of the\n resulting sequences in order.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq1",type:"item()",occurrence:"*",description:""},{name:"seq2",type:"item()",occurrence:"*",description:""},{name:"f",type:"function (item(), item()) as item()*",occurrence:null,description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"for-each",qname:"fn:for-each",signature:"($seq as item()*, $f as function (item()) as item()*) as item()* external",description:'

Applies the function item $f to every item from the sequence\n $seq in turn, returning the concatenation of the resulting sequences in\n order.

This function is deterministic, context-independent, and focus-independent.

The effect of the function is equivalent to the following implementation in XQuery:

\n declare function fn:for-each($seq, $f) {\n if (fn:empty($seq))\n then ()\n else ($f(fn:head($seq)), fn:for-each(fn:tail($seq), $f))\n };

or its equivalent in XSLT:

\n <xsl:function name="fn:for-each">\n <xsl:param name="seq"/>\n <xsl:param name="f"/>\n <xsl:if test="fn:exists($seq)">\n <xsl:sequence select="$f(fn:head($seq)), fn:for-each(fn:tail($seq), $f)"/>\n </xsl:if>\n </xsl:function>\n

The function call fn:for-each($SEQ, $F) is equivalent to the expression\n for $i in $SEQ return $F($i), assuming that\n ordering mode is ordered.

\n',summary:"

Applies the function item $f to every item from the sequence\n $seq in turn, returning the concatenation of the resulting sequences in\n order.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"item()",occurrence:"*",description:""},{name:"f",type:"function (item()) as item()*",occurrence:null,description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"format-date",qname:"fn:format-date",signature:"($value as xs:date?, $picture as xs:string) as xs:string? external",description:'

Returns a string containing an xs:date value formatted for display.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n default calendar, and default language, and default place, and implicit timezone.\n

The five-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n implicit timezone, and namespaces.\n

See .

\n',summary:"

Returns a string containing an xs:date value formatted for display.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:date",occurrence:"?",description:""},{name:"picture",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:5,name:"format-date",qname:"fn:format-date",signature:"($value as xs:date?, $picture as xs:string, $language as xs:string?, $calendar as xs:string?, $place as xs:string?) as xs:string? external",description:'

Returns a string containing an xs:date value formatted for display.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n default calendar, and default language, and default place, and implicit timezone.\n

The five-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n implicit timezone, and namespaces.\n

See .

\n',summary:"

Returns a string containing an xs:date value formatted for display.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:date",occurrence:"?",description:""},{name:"picture",type:"xs:string",occurrence:null,description:""},{name:"language",type:"xs:string",occurrence:"?",description:""},{name:"calendar",type:"xs:string",occurrence:"?",description:""},{name:"place",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"format-dateTime",qname:"fn:format-dateTime",signature:"($value as xs:dateTime?, $picture as xs:string) as xs:string? external",description:'

Returns a string containing an xs:dateTime value formatted for display.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n default calendar, and default language, and default place, and implicit timezone.\n

The five-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n implicit timezone, and namespaces.\n

See .

\n',summary:"

Returns a string containing an xs:dateTime value formatted for display.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:dateTime",occurrence:"?",description:""},{name:"picture",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:5,name:"format-dateTime",qname:"fn:format-dateTime",signature:"($value as xs:dateTime?, $picture as xs:string, $language as xs:string?, $calendar as xs:string?, $place as xs:string?) as xs:string? external",description:'

Returns a string containing an xs:dateTime value formatted for display.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n default calendar, and default language, and default place, and implicit timezone.\n

The five-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n implicit timezone, and namespaces.\n

See .

\n',summary:"

Returns a string containing an xs:dateTime value formatted for display.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:dateTime",occurrence:"?",description:""},{name:"picture",type:"xs:string",occurrence:null,description:""},{name:"language",type:"xs:string",occurrence:"?",description:""},{name:"calendar",type:"xs:string",occurrence:"?",description:""},{name:"place",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"format-integer",qname:"fn:format-integer",signature:"($value as xs:integer?, $picture as xs:string) as xs:string external",description:'

Formats an integer according to a given picture string, using the conventions\n of a given natural language if specified.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n default language.\n

The three-argument form of this function is deterministic, context-independent, and focus-independent.

If $value is an empty sequence, the function returns a zero-length\n string.

In all other cases, the $picture argument describes the format in which\n $value is output.

The rules that follow describe how non-negative numbers are output. If the value of\n $value is negative, the rules below are applied to the absolute value of\n $value, and a minus sign is prepended to the result.

The value of $picture consists of a primary format token,\n optionally followed\n by a format modifier. The primary format token is always present and must not\n be zero-length. If the string contains one or more semicolons then everything that\n precedes the last semicolon is taken as the primary format token and everything\n that follows is taken as the format modifier; if the string contains no\n semicolon then the entire picture is taken as the primary format token, and the\n format modifier is taken to be absent (which is equivalent to supplying a\n zero-length string).

The primary format token is classified as one of the following:

A decimal-digit-pattern made up of optional-digit-signs,\n mandatory-digit-signs, and grouping-separator-signs.

The optional-digit-sign is the character "#".

A mandatory-digit-sign is a character in Unicode category Nd. All\n mandatory-digit-signs within the format token must be from the\n same digit family, where a digit family is a sequence of ten consecutive\n characters in Unicode category Nd, having digit values 0 through 9. Within\n the format token, these digits are interchangeable: a three-digit number may\n thus be indicated equivalently by 000, 001, or\n 999.

a grouping-separator-sign is a non-alphanumeric character, that\n is a character whose Unicode category is\n other than Nd, Nl, No, Lu, Ll, Lt, Lm or Lo.

If the primary format token contains at least one Unicode digit\n then it is taken as a decimal digit pattern, and in this case it must\n match the regular expression ^((\\p{Nd}|#|[^\\p{N}\\p{L}])+?)$. If it contains\n a digit but does not match this pattern, a dynamic error\n is raised .

If a semicolon is to be used as a grouping separator, then the primary\n format token as a whole must be followed by another semicolon, to ensure that\n the grouping separator is not mistaken as a separator between the primary format\n token and the format modifier.

There must be at least one mandatory-digit-sign. There may be zero or\n more optional-digit-signs, and (if present) these must precede all\n mandatory-digit-signs. There may be zero or more\n grouping-separator-signs. A grouping-separator-sign must\n not appear at the start or end of the decimal-digit-pattern, nor\n adjacent to another grouping-separator-sign.

The corresponding output format is a decimal number, using this digit family, with\n at least as many digits as there are mandatory-digit-signs in the\n format token. Thus, a format token 1 generates the sequence 0 1\n 2 ... 10 11 12 ..., and a format token 01 (or equivalently,\n 00 or 99) generates the sequence 00 01 02 ...\n 09 10 11 12 ... 99 100 101. A format token of &#x661;\n (Arabic-Indic digit one) generates the sequence ١ then ٢\n then ٣ ...

The grouping-separator-signs are handled as follows. The position of\n grouping separators within the format token, counting backwards from the last\n digit, indicates the position of grouping separators to appear within the\n formatted number, and the character used as the grouping-separator-sign\n within the format token indicates the character to be used as the corresponding\n grouping separator in the formatted number. If grouping-separator-signs\n appear at regular intervals within the format token, that is if the same grouping\n separator appears at positions forming a sequence N, 2N,\n 3N, ... for some integer value N (including the case\n where there is only one number in the list), then the sequence is extrapolated to\n the left, so grouping separators will be used in the formatted number at every\n multiple of N. For example, if the format token is 0\'000\n then the number one million will be formatted as 1\'000\'000, while the\n number fifteen will be formatted as 0\'015.

The only purpose of optional-digit-signs is to mark the position of\n grouping-separator-signs. For example, if the format token is\n #\'##0 then the number one million will be formatted as\n 1\'000\'000, while the number fifteen will be formatted as\n 15. A grouping separator is included in the formatted number only\n if there is a digit to its left, which will only be the case if either (a) the\n number is large enough to require that digit, or (b) the number of\n mandatory-digit-signs in the format token requires insignificant\n leading zeros to be present.

Numbers will never be truncated. Given the decimal-digit-pattern\n 01, the number three hundred will be output as 300,\n despite the absence of any optional-digit-sign.

The format token A, which generates the sequence A B C ... Z AA AB\n AC....

The format token a, which generates the sequence a b c ... z aa ab\n ac....

The format token i, which generates the sequence i ii iii iv v vi vii\n viii ix x ....

The format token I, which generates the sequence I II III IV V VI VII\n VIII IX X ....

The format token w, which generates numbers written as lower-case words, for\n example in English, one two three four ...\n

The format token W, which generates numbers written as upper-case words, for\n example in English, ONE TWO THREE FOUR ...\n

The format token Ww, which generates numbers written as title-case words, for\n example in English, One Two Three Four ...\n

Any other format token, which indicates a numbering sequence in which that token\n represents the number 1 (one) (but see the note below).\n \n It is implementation-defined which\n numbering sequences, additional to those listed above, are supported. If an\n implementation does not support a numbering sequence represented by the given\n token, it must use a format token of 1.

In some traditional numbering sequences additional signs are added to denote\n that the letters should be interpreted as numbers; these are not included in\n the format token. An example (see also the example below) is classical Greek\n where a dexia keraia (x0374, ʹ) and sometimes an aristeri keraia\n (x0375, ͵) is added.

For all format tokens other than the first kind above (one that consists of decimal\n digits), there may be implementation-defined lower and upper bounds on the range of numbers that\n can be formatted using this format token; indeed, for some numbering sequences there may\n be intrinsic limits. For example, the format token &#x2460; (circled\n digit one, ①) has a range imposed by the Unicode character repertoire — 1 to 20 in\n Unicode versions prior to 4.0, increased in subsequent versions. For\n the numbering sequences described above any upper bound imposed by the implementation\n must not be less than 1000 (one thousand) and any lower bound must\n not be greater than 1. Numbers that fall outside this range must be\n formatted using the format token 1.

The above expansions of numbering sequences for format tokens such as a and\n i are indicative but not prescriptive. There are various conventions in\n use for how alphabetic sequences continue when the alphabet is exhausted, and differing\n conventions for how roman numerals are written (for example, IV versus\n IIII as the representation of the number 4). Sometimes alphabetic\n sequences are used that omit letters such as i and o. This\n specification does not prescribe the detail of any sequence other than those sequences\n consisting entirely of decimal digits.

Many numbering sequences are language-sensitive. This applies especially to the sequence\n selected by the tokens w, W and Ww. It also\n applies to other sequences, for example different languages using the Cyrillic alphabet\n use different sequences of characters, each starting with the letter #x410 (Cyrillic\n capital letter A). In such cases, the $lang argument specifies which\n language\'s conventions are to be used. If the argument\n is specified, the value should be either an empty sequence\n or a value that would be valid for the xml:lang attribute (see ).\n Note that this permits the identification of sublanguages based on country codes (from ISO 3166-1)\n as well as identification of dialects and regions within a country..

The set of languages\n for which numbering is supported is .\n If the $lang argument is absent,\n or is set to an empty sequence, or is invalid, or is not a language supported by the\n implementation, then the number is formatted using the\n default language from the dynamic context.\n

The format modifier must\n be a string that matches the regular expression ^([co](\\(.+\\))?)?[at]?$. \n That is, if it is present it must consist of one or more of\n the following, in any order:

either c or o, optionally followed by\n a sequence of characters enclosed between parentheses, to indicate cardinal or\n ordinal numbering respectively, the default being cardinal numbering

either a or t, to indicate alphabetic\n or traditional numbering respectively, the default being implementation-defined.

If the o modifier is present, this indicates a request to output ordinal\n numbers rather than cardinal numbers. For example, in English, when used with the format\n token 1, this outputs the sequence 1st 2nd 3rd 4th ..., and\n when used with the format token w outputs the sequence first second\n third fourth ....

The string of characters between the parentheses, if present, is used to\n select between other possible variations of cardinal or ordinal numbering sequences.\n The interpretation of this string is implementation-defined. No error occurs\n if the implementation does not define any interpretation for the defined string.

For example, in some languages, ordinal numbers vary depending on the grammatical context:\n they may have different genders and may decline with the noun that they qualify.\n In such cases the string appearing in parentheses after the letter o may be\n used to indicate the variation of the ordinal number required. The way in which the\n variation is indicated will depend on the conventions of the language. For inflected\n languages that vary the ending of the word, the recommended approach is to indicate the\n required ending, preceded by a hyphen: for example in German, appropriate values are\n o(-e), o(-er), o(-es), o(-en).

It is implementation-defined what\n combinations of values of the format token, the language, and the cardinal/ordinal\n modifier are supported. If ordinal numbering is not supported for the combination of the\n format token, the language, and the string appearing in parentheses, the request is\n ignored and cardinal numbers are generated instead.

Ordinal Numbering in Italian

The specification "1;o(-º)" with $lang equal to\n it, if supported, should produce the sequence:

1º 2º 3º 4º ...

The specification "Ww;o" with $lang equal to\n it, if supported, should produce the sequence:

Primo Secondo Terzo Quarto Quinto ...

The use of the a or t\n modifier disambiguates between numbering sequences that use letters. In many\n languages there are two commonly used numbering sequences that use letters. One\n numbering sequence assigns numeric values to letters in alphabetic sequence, and the\n other assigns numeric values to each letter in some other manner traditional in that\n language. In English, these would correspond to the numbering sequences specified by the\n format tokens a and i. In some languages, the first member of\n each sequence is the same, and so the format token alone would be ambiguous. In the absence of the a or t modifier,\n the default is implementation-defined.

A dynamic error is raised if the format token is invalid,\n that is, if it violates any mandatory rules (indicated by an emphasized must\n or required keyword in the above rules). For example, the error is raised if\n the primary format token contains a digit but does not match the required regular expression.

\n',summary:"

Formats an integer according to a given picture string, using the conventions\n of a given natural language if specified.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:integer",occurrence:"?",description:""},{name:"picture",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:3,name:"format-integer",qname:"fn:format-integer",signature:"($value as xs:integer?, $picture as xs:string, $language as xs:string) as xs:string external",description:'

Formats an integer according to a given picture string, using the conventions\n of a given natural language if specified.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n default language.\n

The three-argument form of this function is deterministic, context-independent, and focus-independent.

If $value is an empty sequence, the function returns a zero-length\n string.

In all other cases, the $picture argument describes the format in which\n $value is output.

The rules that follow describe how non-negative numbers are output. If the value of\n $value is negative, the rules below are applied to the absolute value of\n $value, and a minus sign is prepended to the result.

The value of $picture consists of a primary format token,\n optionally followed\n by a format modifier. The primary format token is always present and must not\n be zero-length. If the string contains one or more semicolons then everything that\n precedes the last semicolon is taken as the primary format token and everything\n that follows is taken as the format modifier; if the string contains no\n semicolon then the entire picture is taken as the primary format token, and the\n format modifier is taken to be absent (which is equivalent to supplying a\n zero-length string).

The primary format token is classified as one of the following:

A decimal-digit-pattern made up of optional-digit-signs,\n mandatory-digit-signs, and grouping-separator-signs.

The optional-digit-sign is the character "#".

A mandatory-digit-sign is a character in Unicode category Nd. All\n mandatory-digit-signs within the format token must be from the\n same digit family, where a digit family is a sequence of ten consecutive\n characters in Unicode category Nd, having digit values 0 through 9. Within\n the format token, these digits are interchangeable: a three-digit number may\n thus be indicated equivalently by 000, 001, or\n 999.

a grouping-separator-sign is a non-alphanumeric character, that\n is a character whose Unicode category is\n other than Nd, Nl, No, Lu, Ll, Lt, Lm or Lo.

If the primary format token contains at least one Unicode digit\n then it is taken as a decimal digit pattern, and in this case it must\n match the regular expression ^((\\p{Nd}|#|[^\\p{N}\\p{L}])+?)$. If it contains\n a digit but does not match this pattern, a dynamic error\n is raised .

If a semicolon is to be used as a grouping separator, then the primary\n format token as a whole must be followed by another semicolon, to ensure that\n the grouping separator is not mistaken as a separator between the primary format\n token and the format modifier.

There must be at least one mandatory-digit-sign. There may be zero or\n more optional-digit-signs, and (if present) these must precede all\n mandatory-digit-signs. There may be zero or more\n grouping-separator-signs. A grouping-separator-sign must\n not appear at the start or end of the decimal-digit-pattern, nor\n adjacent to another grouping-separator-sign.

The corresponding output format is a decimal number, using this digit family, with\n at least as many digits as there are mandatory-digit-signs in the\n format token. Thus, a format token 1 generates the sequence 0 1\n 2 ... 10 11 12 ..., and a format token 01 (or equivalently,\n 00 or 99) generates the sequence 00 01 02 ...\n 09 10 11 12 ... 99 100 101. A format token of &#x661;\n (Arabic-Indic digit one) generates the sequence ١ then ٢\n then ٣ ...

The grouping-separator-signs are handled as follows. The position of\n grouping separators within the format token, counting backwards from the last\n digit, indicates the position of grouping separators to appear within the\n formatted number, and the character used as the grouping-separator-sign\n within the format token indicates the character to be used as the corresponding\n grouping separator in the formatted number. If grouping-separator-signs\n appear at regular intervals within the format token, that is if the same grouping\n separator appears at positions forming a sequence N, 2N,\n 3N, ... for some integer value N (including the case\n where there is only one number in the list), then the sequence is extrapolated to\n the left, so grouping separators will be used in the formatted number at every\n multiple of N. For example, if the format token is 0\'000\n then the number one million will be formatted as 1\'000\'000, while the\n number fifteen will be formatted as 0\'015.

The only purpose of optional-digit-signs is to mark the position of\n grouping-separator-signs. For example, if the format token is\n #\'##0 then the number one million will be formatted as\n 1\'000\'000, while the number fifteen will be formatted as\n 15. A grouping separator is included in the formatted number only\n if there is a digit to its left, which will only be the case if either (a) the\n number is large enough to require that digit, or (b) the number of\n mandatory-digit-signs in the format token requires insignificant\n leading zeros to be present.

Numbers will never be truncated. Given the decimal-digit-pattern\n 01, the number three hundred will be output as 300,\n despite the absence of any optional-digit-sign.

The format token A, which generates the sequence A B C ... Z AA AB\n AC....

The format token a, which generates the sequence a b c ... z aa ab\n ac....

The format token i, which generates the sequence i ii iii iv v vi vii\n viii ix x ....

The format token I, which generates the sequence I II III IV V VI VII\n VIII IX X ....

The format token w, which generates numbers written as lower-case words, for\n example in English, one two three four ...\n

The format token W, which generates numbers written as upper-case words, for\n example in English, ONE TWO THREE FOUR ...\n

The format token Ww, which generates numbers written as title-case words, for\n example in English, One Two Three Four ...\n

Any other format token, which indicates a numbering sequence in which that token\n represents the number 1 (one) (but see the note below).\n \n It is implementation-defined which\n numbering sequences, additional to those listed above, are supported. If an\n implementation does not support a numbering sequence represented by the given\n token, it must use a format token of 1.

In some traditional numbering sequences additional signs are added to denote\n that the letters should be interpreted as numbers; these are not included in\n the format token. An example (see also the example below) is classical Greek\n where a dexia keraia (x0374, ʹ) and sometimes an aristeri keraia\n (x0375, ͵) is added.

For all format tokens other than the first kind above (one that consists of decimal\n digits), there may be implementation-defined lower and upper bounds on the range of numbers that\n can be formatted using this format token; indeed, for some numbering sequences there may\n be intrinsic limits. For example, the format token &#x2460; (circled\n digit one, ①) has a range imposed by the Unicode character repertoire — 1 to 20 in\n Unicode versions prior to 4.0, increased in subsequent versions. For\n the numbering sequences described above any upper bound imposed by the implementation\n must not be less than 1000 (one thousand) and any lower bound must\n not be greater than 1. Numbers that fall outside this range must be\n formatted using the format token 1.

The above expansions of numbering sequences for format tokens such as a and\n i are indicative but not prescriptive. There are various conventions in\n use for how alphabetic sequences continue when the alphabet is exhausted, and differing\n conventions for how roman numerals are written (for example, IV versus\n IIII as the representation of the number 4). Sometimes alphabetic\n sequences are used that omit letters such as i and o. This\n specification does not prescribe the detail of any sequence other than those sequences\n consisting entirely of decimal digits.

Many numbering sequences are language-sensitive. This applies especially to the sequence\n selected by the tokens w, W and Ww. It also\n applies to other sequences, for example different languages using the Cyrillic alphabet\n use different sequences of characters, each starting with the letter #x410 (Cyrillic\n capital letter A). In such cases, the $lang argument specifies which\n language\'s conventions are to be used. If the argument\n is specified, the value should be either an empty sequence\n or a value that would be valid for the xml:lang attribute (see ).\n Note that this permits the identification of sublanguages based on country codes (from ISO 3166-1)\n as well as identification of dialects and regions within a country..

The set of languages\n for which numbering is supported is .\n If the $lang argument is absent,\n or is set to an empty sequence, or is invalid, or is not a language supported by the\n implementation, then the number is formatted using the\n default language from the dynamic context.\n

The format modifier must\n be a string that matches the regular expression ^([co](\\(.+\\))?)?[at]?$. \n That is, if it is present it must consist of one or more of\n the following, in any order:

either c or o, optionally followed by\n a sequence of characters enclosed between parentheses, to indicate cardinal or\n ordinal numbering respectively, the default being cardinal numbering

either a or t, to indicate alphabetic\n or traditional numbering respectively, the default being implementation-defined.

If the o modifier is present, this indicates a request to output ordinal\n numbers rather than cardinal numbers. For example, in English, when used with the format\n token 1, this outputs the sequence 1st 2nd 3rd 4th ..., and\n when used with the format token w outputs the sequence first second\n third fourth ....

The string of characters between the parentheses, if present, is used to\n select between other possible variations of cardinal or ordinal numbering sequences.\n The interpretation of this string is implementation-defined. No error occurs\n if the implementation does not define any interpretation for the defined string.

For example, in some languages, ordinal numbers vary depending on the grammatical context:\n they may have different genders and may decline with the noun that they qualify.\n In such cases the string appearing in parentheses after the letter o may be\n used to indicate the variation of the ordinal number required. The way in which the\n variation is indicated will depend on the conventions of the language. For inflected\n languages that vary the ending of the word, the recommended approach is to indicate the\n required ending, preceded by a hyphen: for example in German, appropriate values are\n o(-e), o(-er), o(-es), o(-en).

It is implementation-defined what\n combinations of values of the format token, the language, and the cardinal/ordinal\n modifier are supported. If ordinal numbering is not supported for the combination of the\n format token, the language, and the string appearing in parentheses, the request is\n ignored and cardinal numbers are generated instead.

Ordinal Numbering in Italian

The specification "1;o(-º)" with $lang equal to\n it, if supported, should produce the sequence:

1º 2º 3º 4º ...

The specification "Ww;o" with $lang equal to\n it, if supported, should produce the sequence:

Primo Secondo Terzo Quarto Quinto ...

The use of the a or t\n modifier disambiguates between numbering sequences that use letters. In many\n languages there are two commonly used numbering sequences that use letters. One\n numbering sequence assigns numeric values to letters in alphabetic sequence, and the\n other assigns numeric values to each letter in some other manner traditional in that\n language. In English, these would correspond to the numbering sequences specified by the\n format tokens a and i. In some languages, the first member of\n each sequence is the same, and so the format token alone would be ambiguous. In the absence of the a or t modifier,\n the default is implementation-defined.

A dynamic error is raised if the format token is invalid,\n that is, if it violates any mandatory rules (indicated by an emphasized must\n or required keyword in the above rules). For example, the error is raised if\n the primary format token contains a digit but does not match the required regular expression.

\n',summary:"

Formats an integer according to a given picture string, using the conventions\n of a given natural language if specified.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:integer",occurrence:"?",description:""},{name:"picture",type:"xs:string",occurrence:null,description:""},{name:"language",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"format-number",qname:"fn:format-number",signature:"($value as numeric?, $picture as xs:string) as xs:string external",description:'

Returns a string containing a number formatted according to a given picture\n string, taking account of decimal formats specified in the static context.

The two-argument form of this function is deterministic, context-independent, and focus-independent.

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n decimal formats, and namespaces.\n

The effect of the two-argument form of the function is equivalent to calling\n the three-argument form with an empty sequence as the value of the third argument.

The function formats $value as a string using the picture string specified by the\n $picture argument and the decimal-format named by the\n $decimal-format-name argument, or the default decimal-format, if there\n is no $decimal-format-name argument. The syntax of the picture string is\n described in .

The $value argument may be of any numeric data type\n (xs:double, xs:float, xs:decimal, or their\n subtypes including xs:integer). Note that if an xs:decimal is\n supplied, it is not automatically promoted to an xs:double, as such\n promotion can involve a loss of precision.

If the supplied value of the $value argument is an empty sequence, the\n function behaves as if the supplied value were the xs:double value\n NaN.

The value of $decimal-format-name,\n if present and non-empty, \n must be a string which after removal of leading and trailing whitespace is in the form of an\n an EQName as defined in the XPath 3.0 grammar, that is one of the following:

A lexical QName, which is expanded using the\n statically known namespaces.\n The default namespace is not used (no prefix means no namespace).

A URIQualifiedName using the syntax Q{uri}local,\n where the URI can be zero-length to indicate a name in no namespace.

The decimal format that is used is the decimal format\n in the static context whose name matches $decimal-format-name if supplied,\n or the default decimal format in the static context otherwise.

The evaluation of the format-number function takes place in two\n phases, an analysis phase described in and a\n formatting phase described in .

The analysis phase takes as its inputs the picture\n string and the variables derived from the relevant decimal format in the\n static context, and produces as its output a number of variables with defined values.\n The formatting phase takes as its inputs the number to be formatted and the variables\n produced by the analysis phase, and produces as its output a string containing a\n formatted representation of the number.

The result of the function is the formatted string representation of the supplied\n number.

A dynamic error is raised if the name specified as the\n $decimal-format-name argument is\n neither a valid lexical QName nor a valid URIQualifiedName, or if it\n uses a prefix that is not found in the statically known namespaces, or if the static\n context does not contain a declaration of a decimal-format with a matching expanded\n QName. If the processor is able to detect the error statically (for example, when the\n argument is supplied as a string literal), then the processor may\n optionally signal this as a static error.

\n',summary:"

Returns a string containing a number formatted according to a given picture\n string, taking account of decimal formats specified in the static context.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"numeric",occurrence:"?",description:""},{name:"picture",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:3,name:"format-number",qname:"fn:format-number",signature:"($value as numeric?, $picture as xs:string, $decimal-format-name as xs:string) as xs:string external",description:'

Returns a string containing a number formatted according to a given picture\n string, taking account of decimal formats specified in the static context.

The two-argument form of this function is deterministic, context-independent, and focus-independent.

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n decimal formats, and namespaces.\n

The effect of the two-argument form of the function is equivalent to calling\n the three-argument form with an empty sequence as the value of the third argument.

The function formats $value as a string using the picture string specified by the\n $picture argument and the decimal-format named by the\n $decimal-format-name argument, or the default decimal-format, if there\n is no $decimal-format-name argument. The syntax of the picture string is\n described in .

The $value argument may be of any numeric data type\n (xs:double, xs:float, xs:decimal, or their\n subtypes including xs:integer). Note that if an xs:decimal is\n supplied, it is not automatically promoted to an xs:double, as such\n promotion can involve a loss of precision.

If the supplied value of the $value argument is an empty sequence, the\n function behaves as if the supplied value were the xs:double value\n NaN.

The value of $decimal-format-name,\n if present and non-empty, \n must be a string which after removal of leading and trailing whitespace is in the form of an\n an EQName as defined in the XPath 3.0 grammar, that is one of the following:

A lexical QName, which is expanded using the\n statically known namespaces.\n The default namespace is not used (no prefix means no namespace).

A URIQualifiedName using the syntax Q{uri}local,\n where the URI can be zero-length to indicate a name in no namespace.

The decimal format that is used is the decimal format\n in the static context whose name matches $decimal-format-name if supplied,\n or the default decimal format in the static context otherwise.

The evaluation of the format-number function takes place in two\n phases, an analysis phase described in and a\n formatting phase described in .

The analysis phase takes as its inputs the picture\n string and the variables derived from the relevant decimal format in the\n static context, and produces as its output a number of variables with defined values.\n The formatting phase takes as its inputs the number to be formatted and the variables\n produced by the analysis phase, and produces as its output a string containing a\n formatted representation of the number.

The result of the function is the formatted string representation of the supplied\n number.

A dynamic error is raised if the name specified as the\n $decimal-format-name argument is\n neither a valid lexical QName nor a valid URIQualifiedName, or if it\n uses a prefix that is not found in the statically known namespaces, or if the static\n context does not contain a declaration of a decimal-format with a matching expanded\n QName. If the processor is able to detect the error statically (for example, when the\n argument is supplied as a string literal), then the processor may\n optionally signal this as a static error.

\n',summary:"

Returns a string containing a number formatted according to a given picture\n string, taking account of decimal formats specified in the static context.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"numeric",occurrence:"?",description:""},{name:"picture",type:"xs:string",occurrence:null,description:""},{name:"decimal-format-name",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"format-time",qname:"fn:format-time",signature:"($value as xs:time?, $picture as xs:string) as xs:string? external",description:'

Returns a string containing an xs:time value formatted for display.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n default calendar, and default language, and default place, and implicit timezone.\n

The five-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n implicit timezone, and namespaces.\n

See .

\n',summary:"

Returns a string containing an xs:time value formatted for display.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:time",occurrence:"?",description:""},{name:"picture",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:5,name:"format-time",qname:"fn:format-time",signature:"($value as xs:time?, $picture as xs:string, $language as xs:string?, $calendar as xs:string?, $place as xs:string?) as xs:string? external",description:'

Returns a string containing an xs:time value formatted for display.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n default calendar, and default language, and default place, and implicit timezone.\n

The five-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n implicit timezone, and namespaces.\n

See .

\n',summary:"

Returns a string containing an xs:time value formatted for display.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:time",occurrence:"?",description:""},{name:"picture",type:"xs:string",occurrence:null,description:""},{name:"language",type:"xs:string",occurrence:"?",description:""},{name:"calendar",type:"xs:string",occurrence:"?",description:""},{name:"place",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"function-arity",qname:"fn:function-arity",signature:"($func as function (*)) as xs:integer external",description:'

Returns the arity of the function identified by a function item.

This function is deterministic, context-independent, and focus-independent.

The fn:function-arity function returns the arity (number of arguments) of\n the function identified by $func.

The expression fn:function-arity(fn:substring#2) returns 2.

The expression fn:function-arity(function($node){name($node)}) returns 1.

The expression let $initial := fn:substring(?, 1, 1) return fn:function-arity($initial) returns 1.

\n',summary:"

Returns the arity of the function identified by a function item.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"func",type:"function (*)",occurrence:null,description:""}],returns:{type:"xs:integer",description:""},errors:[]},{isDocumented:!0,arity:0,name:"generate-id",qname:"fn:generate-id",signature:"() as xs:string external",description:'

This function returns a string that uniquely identifies a given node.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

If the argument is the empty sequence, the result is the zero-length string.

In other cases, the function returns a string that uniquely identifies a given node.

The returned identifier must consist of ASCII alphanumeric characters\n and must start with an alphabetic character. Thus, the string is\n syntactically an XML name.

An implementation is free to generate an identifier in any convenient way provided that\n it always generates the same identifier for the same node and that different identifiers\n are always generated from different nodes. An implementation is under no obligation to\n generate the same identifiers each time a document is transformed or queried.

The following errors may be raised when $arg is omitted:

\n',summary:"

This function returns a string that uniquely identifies a given node.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"generate-id",qname:"fn:generate-id",signature:"($arg as node()?) as xs:string external",description:'

This function returns a string that uniquely identifies a given node.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

If the argument is the empty sequence, the result is the zero-length string.

In other cases, the function returns a string that uniquely identifies a given node.

The returned identifier must consist of ASCII alphanumeric characters\n and must start with an alphabetic character. Thus, the string is\n syntactically an XML name.

An implementation is free to generate an identifier in any convenient way provided that\n it always generates the same identifier for the same node and that different identifiers\n are always generated from different nodes. An implementation is under no obligation to\n generate the same identifiers each time a document is transformed or queried.

The following errors may be raised when $arg is omitted:

\n',summary:"

This function returns a string that uniquely identifies a given node.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"node()",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:0,name:"has-children",qname:"fn:has-children",signature:"() as xs:boolean external",description:'

Returns true if the supplied node has one or more child nodes (of any kind).

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

Provided that the supplied argument $node matches the expected\n type node()?, the result of the function call fn:has-children($node) is defined to be\n the same as the result of the expression\n fn:exists($node/child::node()).

The following errors may be raised when $node is omitted:

\n',summary:"

Returns true if the supplied node has one or more child nodes (of any kind).

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"has-children",qname:"fn:has-children",signature:"($node as node()?) as xs:boolean external",description:'

Returns true if the supplied node has one or more child nodes (of any kind).

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

Provided that the supplied argument $node matches the expected\n type node()?, the result of the function call fn:has-children($node) is defined to be\n the same as the result of the expression\n fn:exists($node/child::node()).

The following errors may be raised when $node is omitted:

\n',summary:"

Returns true if the supplied node has one or more child nodes (of any kind).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:"?",description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"head",qname:"fn:head",signature:"($arg as item()*) as item()? external",description:'

Returns the first item in a sequence.

This function is deterministic, context-independent, and focus-independent.

The function returns the value of the expression $arg[1]

If $arg is the empty sequence, the empty sequence is returned. Otherwise\n the first item in the sequence is returned.

\n',summary:"

Returns the first item in a sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:""}],returns:{type:"item()?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"hours-from-duration",qname:"fn:hours-from-duration",signature:"($arg as xs:duration?) as xs:integer? external",description:'

Returns the number of hours in a duration.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:integer representing the hours\n component in the value of $arg. The result is obtained by casting\n $arg to an xs:dayTimeDuration (see ) and then computing the hours component as described in\n .

If $arg is a negative duration then the result will be negative..

If $arg is an xs:yearMonthDuration the function returns 0.

The expression fn:hours-from-duration(xs:dayTimeDuration("P3DT10H")) returns 10.

The expression fn:hours-from-duration(xs:dayTimeDuration("P3DT12H32M12S")) returns 12.

The expression fn:hours-from-duration(xs:dayTimeDuration("PT123H")) returns 3.

The expression fn:hours-from-duration(xs:dayTimeDuration("-P3DT10H")) returns -10.

\n',summary:"

Returns the number of hours in a duration.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:duration",occurrence:"?",description:""}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"hours-from-time",qname:"fn:hours-from-time",signature:"($arg as xs:time?) as xs:integer? external",description:'

Returns the hours component of an xs:time.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:integer between 0 and 23, both\n inclusive, representing the value of the hours component in the local value of\n $arg.

Assume that the dynamic context provides an implicit timezone value of\n -05:00.

The expression fn:hours-from-time(xs:time("11:23:00")) returns 11.

The expression fn:hours-from-time(xs:time("21:23:00")) returns 21.

The expression fn:hours-from-time(xs:time("01:23:00+05:00")) returns 1.

The expression fn:hours-from-time(fn:adjust-time-to-timezone(xs:time("01:23:00+05:00"),\n xs:dayTimeDuration("PT0S"))) returns 20.

The expression fn:hours-from-time(xs:time("24:00:00")) returns 0.

\n',summary:"

Returns the hours component of an xs:time .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:time",occurrence:"?",description:""}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"id",qname:"fn:id",signature:"($arg as xs:string*) as element(*)* external",description:'

Returns the sequence of element nodes that have an ID value\n matching the value of one or more of the IDREF values supplied in\n $arg.

The one-argument form of this function is deterministic, context-dependent, and focus-dependent.

The two-argument form of this function is deterministic, context-independent, and focus-independent.

The function returns a sequence, in document order with duplicates eliminated,\n containing every element node E that satisfies all the following\n conditions:

\n E is in the target document. The target document is the document\n containing $node, or the document containing the context item\n (.) if the second argument is omitted. The behavior of the\n function if $node is omitted is exactly the same as if the context\n item had been passed as $node.

E has an ID value equal to one of the candidate\n IDREF values, where:

An element has an ID value equal to V if either\n or both of the following conditions are true:

The is-id property (See .) of the element node is true, and the typed value\n of the element node is equal to V under the rules of the\n eq operator using the Unicode codepoint collation\n (http://www.w3.org/2005/xpath-functions/collation/codepoint).

The element has an attribute node whose is-id property\n (See .) is true and whose typed\n value is equal to V under the rules of the\n eq operator using the Unicode code point collation\n (http://www.w3.org/2005/xpath-functions/collation/codepoint).

Each xs:string in $arg is parsed as if it were of\n type IDREFS, that is, each xs:string in\n $arg is treated as a whitespace-separated sequence of\n tokens, each acting as an IDREF. These tokens are then included\n in the list of candidate IDREFs. If any of the tokens is not a\n lexically valid IDREF (that is, if it is not lexically an\n xs:NCName), it is ignored. Formally, the candidate\n IDREF values are the strings in the sequence given by the\n expression:

for $s in $arg return\n fn:tokenize(fn:normalize-space($s), \' \')[. castable as xs:IDREF]

If several elements have the same ID value, then E is\n the one that is first in document order.

A dynamic error is raised if\n $node, or the context item if the second argument is absent, is a node\n in a tree whose root is not a document node.

The following errors may be raised when $node is omitted:

\n',summary:"

Returns the sequence of element nodes that have an ID value\n matching the value of one or more of the IDREF values supplied in\n $arg .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"*",description:""}],returns:{type:"element(*)*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"id",qname:"fn:id",signature:"($arg as xs:string*, $node as node()) as element(*)* external",description:'

Returns the sequence of element nodes that have an ID value\n matching the value of one or more of the IDREF values supplied in\n $arg.

The one-argument form of this function is deterministic, context-dependent, and focus-dependent.

The two-argument form of this function is deterministic, context-independent, and focus-independent.

The function returns a sequence, in document order with duplicates eliminated,\n containing every element node E that satisfies all the following\n conditions:

\n E is in the target document. The target document is the document\n containing $node, or the document containing the context item\n (.) if the second argument is omitted. The behavior of the\n function if $node is omitted is exactly the same as if the context\n item had been passed as $node.

E has an ID value equal to one of the candidate\n IDREF values, where:

An element has an ID value equal to V if either\n or both of the following conditions are true:

The is-id property (See .) of the element node is true, and the typed value\n of the element node is equal to V under the rules of the\n eq operator using the Unicode codepoint collation\n (http://www.w3.org/2005/xpath-functions/collation/codepoint).

The element has an attribute node whose is-id property\n (See .) is true and whose typed\n value is equal to V under the rules of the\n eq operator using the Unicode code point collation\n (http://www.w3.org/2005/xpath-functions/collation/codepoint).

Each xs:string in $arg is parsed as if it were of\n type IDREFS, that is, each xs:string in\n $arg is treated as a whitespace-separated sequence of\n tokens, each acting as an IDREF. These tokens are then included\n in the list of candidate IDREFs. If any of the tokens is not a\n lexically valid IDREF (that is, if it is not lexically an\n xs:NCName), it is ignored. Formally, the candidate\n IDREF values are the strings in the sequence given by the\n expression:

for $s in $arg return\n fn:tokenize(fn:normalize-space($s), \' \')[. castable as xs:IDREF]

If several elements have the same ID value, then E is\n the one that is first in document order.

A dynamic error is raised if\n $node, or the context item if the second argument is absent, is a node\n in a tree whose root is not a document node.

The following errors may be raised when $node is omitted:

\n',summary:"

Returns the sequence of element nodes that have an ID value\n matching the value of one or more of the IDREF values supplied in\n $arg .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"*",description:""},{name:"node",type:"node()",occurrence:null,description:""}],returns:{type:"element(*)*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"idref",qname:"fn:idref",signature:"($arg as xs:string*) as node()* external",description:'

Returns the sequence of element or attribute nodes with an IDREF\n value matching the value of one or more of the ID values supplied in\n $arg.

The one-argument form of this function is deterministic, context-dependent, and focus-dependent.

The two-argument form of this function is deterministic, context-independent, and focus-independent.

The function returns a sequence, in document order with duplicates eliminated,\n containing every element or attribute node $N that satisfies all the\n following conditions:

$N is in the target document. The target document is the document\n containing $node or the document containing the context item\n (.) if the second argument is omitted. The behavior of the\n function if $node is omitted is exactly the same as if the context\n item had been passed as $node.

$N has an IDREF value equal to one of the candidate\n ID values, where:

A node $N has an IDREF value equal to\n V if both of the following conditions are true:

The is-idrefs property (see ) of $N is true.

The sequence fn:tokenize(fn:normalize-space(fn:string($N)), \' \')\n contains a string that is\n equal to V under the rules of the eq\n operator using the Unicode code point collation\n (http://www.w3.org/2005/xpath-functions/collation/codepoint).

Each xs:string in $arg is parsed as if it were of\n lexically of type xs:ID. These xs:strings are then\n included in the list of candidate xs:IDs. If any of the strings\n in $arg is not a lexically valid xs:ID (that is,\n if it is not lexically an xs:NCName), it is ignored. More\n formally, the candidate ID values are the strings in the\n sequence:

$arg[. castable as xs:NCName]

A dynamic error is raised if\n $node, or the context item if the second argument is omitted, is a node\n in a tree whose root is not a document node.

The following errors may be raised when $node is omitted:

\n',summary:"

Returns the sequence of element or attribute nodes with an IDREF \n value matching the value of one or more of the ID values supplied in\n $arg .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"*",description:""}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"idref",qname:"fn:idref",signature:"($arg as xs:string*, $node as node()) as node()* external",description:'

Returns the sequence of element or attribute nodes with an IDREF\n value matching the value of one or more of the ID values supplied in\n $arg.

The one-argument form of this function is deterministic, context-dependent, and focus-dependent.

The two-argument form of this function is deterministic, context-independent, and focus-independent.

The function returns a sequence, in document order with duplicates eliminated,\n containing every element or attribute node $N that satisfies all the\n following conditions:

$N is in the target document. The target document is the document\n containing $node or the document containing the context item\n (.) if the second argument is omitted. The behavior of the\n function if $node is omitted is exactly the same as if the context\n item had been passed as $node.

$N has an IDREF value equal to one of the candidate\n ID values, where:

A node $N has an IDREF value equal to\n V if both of the following conditions are true:

The is-idrefs property (see ) of $N is true.

The sequence fn:tokenize(fn:normalize-space(fn:string($N)), \' \')\n contains a string that is\n equal to V under the rules of the eq\n operator using the Unicode code point collation\n (http://www.w3.org/2005/xpath-functions/collation/codepoint).

Each xs:string in $arg is parsed as if it were of\n lexically of type xs:ID. These xs:strings are then\n included in the list of candidate xs:IDs. If any of the strings\n in $arg is not a lexically valid xs:ID (that is,\n if it is not lexically an xs:NCName), it is ignored. More\n formally, the candidate ID values are the strings in the\n sequence:

$arg[. castable as xs:NCName]

A dynamic error is raised if\n $node, or the context item if the second argument is omitted, is a node\n in a tree whose root is not a document node.

The following errors may be raised when $node is omitted:

\n',summary:"

Returns the sequence of element or attribute nodes with an IDREF \n value matching the value of one or more of the ID values supplied in\n $arg .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"*",description:""},{name:"node",type:"node()",occurrence:null,description:""}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:0,name:"implicit-timezone",qname:"fn:implicit-timezone",signature:"() as xs:dayTimeDuration external",description:'

Returns the value of the implicit timezone property from the dynamic context.\n

This function is deterministic, context-dependent, and focus-independent. It depends on\n implicit timezone.\n

Returns the value of the implicit timezone property from the dynamic context. Components\n of the dynamic context are discussed in .

\n',summary:"

Returns the value of the implicit timezone property from the dynamic context.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:dayTimeDuration",description:""},errors:[]},{isDocumented:!0,arity:1,name:"in-scope-prefixes",qname:"fn:in-scope-prefixes",signature:"($element as element(*)) as xs:string* external",description:'

Returns the prefixes of the in-scope namespaces for an element node.

This function is deterministic, context-independent, and focus-independent.

The function returns a sequence of strings representing the prefixes of the in-scope\n namespaces for $element.

For namespace bindings that have a prefix, the function returns the prefix as an\n xs:NCName. For the default namespace, which has no prefix, it returns\n the zero-length string.

The result sequence contains no duplicates.

The ordering of the result sequence is implementation-dependent.

\n',summary:"

Returns the prefixes of the in-scope namespaces for an element node.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"element",type:"element(*)",occurrence:null,description:""}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"index-of",qname:"fn:index-of",signature:"($seq as xs:anyAtomicType*, $search as xs:anyAtomicType) as xs:integer* external",description:'

Returns a sequence of positive integers giving the positions within the\n sequence $seq of items that are equal to $search.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and implicit timezone.\n

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri, and implicit timezone.\n

The function returns a sequence of positive integers giving the positions within the\n sequence $seq of items that are equal to $search.

The collation used by this function is determined according to the rules in . This collation is used when string comparison is\n required.

The items in the sequence $seq are compared with $search under\n the rules for the eq operator. Values of type xs:untypedAtomic\n are compared as if they were of type xs:string. Values that cannot be\n compared, because the eq operator is not defined for their types, are\n considered to be distinct. If an item compares equal, then the position of that item in\n the sequence $seq is included in the result.

The first item in a sequence is at position 1, not position 0.

The result sequence is in ascending numeric order.

If the value of $seq is the empty sequence, or if no item in\n $seq matches $search, then the function returns the empty\n sequence.

No error occurs if non-comparable values are encountered. So when\n comparing two atomic values, the effective boolean value of fn:index-of($a,\n $b) is true if $a and $b are equal, false if they\n are not equal or not comparable.

\n',summary:"

Returns a sequence of positive integers giving the positions within the\n sequence $seq of items that are equal to $search .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"xs:anyAtomicType",occurrence:"*",description:""},{name:"search",type:"xs:anyAtomicType",occurrence:null,description:""}],returns:{type:"xs:integer*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"index-of",qname:"fn:index-of",signature:"($seq as xs:anyAtomicType*, $search as xs:anyAtomicType, $collation as xs:string) as xs:integer* external",description:'

Returns a sequence of positive integers giving the positions within the\n sequence $seq of items that are equal to $search.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and implicit timezone.\n

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri, and implicit timezone.\n

The function returns a sequence of positive integers giving the positions within the\n sequence $seq of items that are equal to $search.

The collation used by this function is determined according to the rules in . This collation is used when string comparison is\n required.

The items in the sequence $seq are compared with $search under\n the rules for the eq operator. Values of type xs:untypedAtomic\n are compared as if they were of type xs:string. Values that cannot be\n compared, because the eq operator is not defined for their types, are\n considered to be distinct. If an item compares equal, then the position of that item in\n the sequence $seq is included in the result.

The first item in a sequence is at position 1, not position 0.

The result sequence is in ascending numeric order.

If the value of $seq is the empty sequence, or if no item in\n $seq matches $search, then the function returns the empty\n sequence.

No error occurs if non-comparable values are encountered. So when\n comparing two atomic values, the effective boolean value of fn:index-of($a,\n $b) is true if $a and $b are equal, false if they\n are not equal or not comparable.

\n',summary:"

Returns a sequence of positive integers giving the positions within the\n sequence $seq of items that are equal to $search .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"xs:anyAtomicType",occurrence:"*",description:""},{name:"search",type:"xs:anyAtomicType",occurrence:null,description:""},{name:"collation",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:integer*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"innermost",qname:"fn:innermost",signature:"($nodes as node()*) as node()* external",description:'

Returns every node within the input sequence that is not an ancestor of another member\n of the input sequence; the nodes are returned in document order with duplicates\n eliminated.

This function is deterministic, context-independent, and focus-independent.

The effect of the function call fn:innermost($nodes) is defined to be\n equivalent to the result of the expression $nodes except\n $nodes/ancestor::node().

That is, the function takes as input a sequence of nodes, and returns every node within\n the sequence that is not an ancestor of another node within the sequence; the nodes are\n returned in document order with duplicates eliminated.

If the source document contains nested sections represented by div\n elements, the expression innermost(//div) returns those div\n elements that do not contain further div elements.

\n',summary:"

Returns every node within the input sequence that is not an ancestor of another member\n of the input sequence; the nodes are returned in document order with duplicates\n eliminated.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:""}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"insert-before",qname:"fn:insert-before",signature:"($target as item()*, $position as xs:integer, $inserts as item()*) as item()* external",description:'

Returns a sequence constructed by inserting an item or a sequence of items at a\n given position within an existing sequence.

This function is deterministic, context-independent, and focus-independent.

The value returned by the function consists of all items of $target whose\n index is less than $position, followed by all items of\n $inserts, followed by the remaining elements of $target, in\n that order.

For detailed type semantics, see [Formal Semantics].

If $target is the empty sequence, $inserts is returned. If\n $inserts is the empty sequence, $target is returned.

If $position is less than one (1), the first position, the effective value\n of $position is one (1). If $position is greater than the\n number of items in $target, then the effective value of\n $position is equal to the number of items in $target plus\n 1.

The value of $target is not affected by the sequence construction.

\n',summary:"

Returns a sequence constructed by inserting an item or a sequence of items at a\n given position within an existing sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"target",type:"item()",occurrence:"*",description:""},{name:"position",type:"xs:integer",occurrence:null,description:""},{name:"inserts",type:"item()",occurrence:"*",description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"iri-to-uri",qname:"fn:iri-to-uri",signature:"($iri as xs:string?) as xs:string external",description:'

Converts a string containing an IRI into a URI according to the rules of\n .

This function is deterministic, context-independent, and focus-independent.

If $iri is the empty sequence, the function returns the zero-length\n string.

Otherwise, the function converts the value of $iri into a URI according to\n the rules given in Section 3.1 of by percent-encoding characters\n that are allowed in an IRI but not in a URI. If $iri contains a character\n that is invalid in an IRI, such as the space character (see note below), the invalid\n character is replaced by its percent-encoded form as described in before the conversion is performed.

Since recommends that, for consistency, URI producers and\n normalizers should use uppercase hexadecimal digits for all percent-encodings, this\n function must always generate hexadecimal values using the upper-case letters A-F.

The function is idempotent but not invertible. Both the inputs My Documents\n and My%20Documents will be converted to the output\n My%20Documents.

This function does not check whether $iri is a valid IRI. It treats it as\n an string and operates on the characters in the string.

The following printable ASCII characters are invalid in an IRI: "<", ">", \n " (double quote), space, "{", "}", "|", "\\", "^", and "`". Since these\n characters should not appear in an IRI, if they do appear in $iri they will\n be percent-encoded. In addition, characters outside the range x20-x7E will be percent-encoded because they are invalid in a URI.

Since this function does not escape the PERCENT SIGN "%" and this character is not\n allowed in data within a URI, users wishing to convert character strings (such as file\n names) that include "%" to a URI should manually escape "%" by replacing it with "%25".\n

\n',summary:"

Converts a string containing an IRI into a URI according to the rules of\n .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"iri",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"lang",qname:"fn:lang",signature:"($testlang as xs:string?) as xs:boolean external",description:'

This function tests whether the language of $node, or the context\n item if the second argument is omitted, as specified by xml:lang attributes\n is the same as, or is a sublanguage of, the language specified by\n $testlang.

The one-argument form of this function is deterministic, context-dependent, and focus-dependent.

The two-argument form of this function is deterministic, context-independent, and focus-independent.

The behavior of the function if the second argument is omitted is exactly the same as if\n the context item (.) had been passed as the second argument.

The language of the argument $node, or the context item if the second\n argument is omitted, is determined by the value of the xml:lang attribute\n on the node, or, if the node has no such attribute, by the value of the\n xml:lang attribute on the nearest ancestor of the node that has an\n xml:lang attribute. If there is no such ancestor, then the function\n returns false.

If $testlang is the empty sequence it is interpreted as the zero-length\n string.

The relevant xml:lang attribute is determined by the value of the XPath\n expression:

(ancestor-or-self::*/@xml:lang)[last()]

If this expression returns an empty sequence, the function returns false.

Otherwise, the function returns true if and only if, based on a caseless\n default match as specified in section 3.13 of , either:

\n $testlang is equal to the string-value of the relevant\n xml:lang attribute, or

\n $testlang is equal to some substring of the string-value of the\n relevant xml:lang attribute that starts at the start of the\n string-value and ends immediately before a hyphen, "-" (the character "-" is\n HYPHEN-MINUS, #x002D).

The following errors may be raised when $arg is omitted:

\n',summary:"

This function tests whether the language of $node , or the context\n item if the second argument is omitted, as specified by xml:lang attributes\n is the same as, or is a sublanguage of, the language specified by\n $testlang .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"testlang",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"lang",qname:"fn:lang",signature:"($testlang as xs:string?, $node as node()) as xs:boolean external",description:'

This function tests whether the language of $node, or the context\n item if the second argument is omitted, as specified by xml:lang attributes\n is the same as, or is a sublanguage of, the language specified by\n $testlang.

The one-argument form of this function is deterministic, context-dependent, and focus-dependent.

The two-argument form of this function is deterministic, context-independent, and focus-independent.

The behavior of the function if the second argument is omitted is exactly the same as if\n the context item (.) had been passed as the second argument.

The language of the argument $node, or the context item if the second\n argument is omitted, is determined by the value of the xml:lang attribute\n on the node, or, if the node has no such attribute, by the value of the\n xml:lang attribute on the nearest ancestor of the node that has an\n xml:lang attribute. If there is no such ancestor, then the function\n returns false.

If $testlang is the empty sequence it is interpreted as the zero-length\n string.

The relevant xml:lang attribute is determined by the value of the XPath\n expression:

(ancestor-or-self::*/@xml:lang)[last()]

If this expression returns an empty sequence, the function returns false.

Otherwise, the function returns true if and only if, based on a caseless\n default match as specified in section 3.13 of , either:

\n $testlang is equal to the string-value of the relevant\n xml:lang attribute, or

\n $testlang is equal to some substring of the string-value of the\n relevant xml:lang attribute that starts at the start of the\n string-value and ends immediately before a hyphen, "-" (the character "-" is\n HYPHEN-MINUS, #x002D).

The following errors may be raised when $arg is omitted:

\n',summary:"

This function tests whether the language of $node , or the context\n item if the second argument is omitted, as specified by xml:lang attributes\n is the same as, or is a sublanguage of, the language specified by\n $testlang .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"testlang",type:"xs:string",occurrence:"?",description:""},{name:"node",type:"node()",occurrence:null,description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:0,name:"last",qname:"fn:last",signature:"() as xs:integer external",description:'

Returns the context size from the dynamic context.

This function is deterministic, context-dependent, and focus-dependent.

Returns the context size from the dynamic context. (See .)

A dynamic error is raised if the\n context item is absent.

\n',summary:"

Returns the context size from the dynamic context.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:integer",description:""},errors:[]},{isDocumented:!0,arity:1,name:"local-name-from-QName",qname:"fn:local-name-from-QName",signature:"($arg as xs:QName?) as xs:NCName? external",description:'

Returns the local part of the supplied QName.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence the function returns the empty sequence.

Otherwise, the function returns an xs:NCName representing the local part of\n $arg.

The expression fn:local-name-from-QName(fn:QName("http://www.example.com/example",\n "person")) returns "person".

\n',summary:"

Returns the local part of the supplied QName.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:QName",occurrence:"?",description:""}],returns:{type:"xs:NCName?",description:""},errors:[]},{isDocumented:!0,arity:0,name:"local-name",qname:"fn:local-name",signature:"() as xs:string external",description:'

Returns the local part of the name of $arg as an\n xs:string that is either the zero-length string, or has the lexical form\n of an xs:NCName.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

If the argument is supplied and is the empty sequence, the function returns the\n zero-length string.

If the node identified by $arg has no name (that is, if it is a document\n node, a comment, a text node, or a namespace node having no name), the function returns\n the zero-length string.

Otherwise, the function returns the local part of the expanded-QName of the node\n identified by $arg, as determined by the dm:node-name accessor\n defined in ). This will be an\n xs:string whose lexical form is an xs:NCName.

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the local part of the name of $arg as an\n xs:string that is either the zero-length string, or has the lexical form\n of an xs:NCName .

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"local-name",qname:"fn:local-name",signature:"($arg as node()?) as xs:string external",description:'

Returns the local part of the name of $arg as an\n xs:string that is either the zero-length string, or has the lexical form\n of an xs:NCName.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

If the argument is supplied and is the empty sequence, the function returns the\n zero-length string.

If the node identified by $arg has no name (that is, if it is a document\n node, a comment, a text node, or a namespace node having no name), the function returns\n the zero-length string.

Otherwise, the function returns the local part of the expanded-QName of the node\n identified by $arg, as determined by the dm:node-name accessor\n defined in ). This will be an\n xs:string whose lexical form is an xs:NCName.

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the local part of the name of $arg as an\n xs:string that is either the zero-length string, or has the lexical form\n of an xs:NCName .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"node()",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"lower-case",qname:"fn:lower-case",signature:"($arg as xs:string?) as xs:string external",description:'

Converts a string to lower case.

This function is deterministic, context-independent, and focus-independent.

If the value of $arg is the empty sequence, the zero-length string is\n returned.

Otherwise, the function returns the value of $arg after translating every\n character to its lower-case correspondent as\n defined in the appropriate case mappings section in the Unicode standard . For versions of Unicode beginning with the 2.1.8 update, only\n locale-insensitive case mappings should be applied. Beginning with version 3.2.0 (and\n likely future versions) of Unicode, precise mappings are described in default case\n operations, which are full case mappings in the absence of tailoring for particular\n languages and environments. Every upper-case character that does not have a lower-case\n correspondent, as well as every lower-case character, is included in the returned value\n in its original form.

Case mappings may change the length of a string. In general, the\n fn:upper-case and fn:lower-case functions are not inverses\n of each other: fn:lower-case(fn:upper-case($arg)) is not guaranteed to\n return $arg, nor is fn:upper-case(fn:lower-case($arg)). The\n Latin small letter dotless i (as used in Turkish) is perhaps the most prominent\n lower-case letter which will not round-trip. The Latin capital letter i with dot above\n is the most prominent upper-case letter which will not round trip; there are others,\n such as Latin capital letter Sharp S (#1E9E) which is introduced in Unicode 5.1.

These functions may not always be linguistically appropriate (e.g. Turkish i without\n dot) or appropriate for the application (e.g. titlecase). In cases such as Turkish, a\n simple translation should be used first.

Because the function is not sensitive to locale, results will not always match user\n expectations. In Quebec, for example, the standard uppercase equivalent of "è" is "È",\n while in metropolitan France it is more commonly "E"; only one of these is supported by\n the functions as defined.

Many characters of class Ll lack uppercase equivalents in the Unicode case mapping\n tables; many characters of class Lu lack lowercase equivalents.

\n',summary:"

Converts a string to lower case.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"matches",qname:"fn:matches",signature:"($input as xs:string?, $pattern as xs:string) as xs:boolean external",description:'

Returns true if the supplied string matches a given regular expression.

This function is deterministic, context-independent, and focus-independent.

The effect of calling the first version of this function (omitting the argument\n $flags) is the same as the effect of calling the second version with the\n $flags argument set to a zero-length string. Flags are defined in\n .

If $input is the empty sequence, it is interpreted as the zero-length\n string.

The function returns true if $input or some substring of\n $input matches the regular expression supplied as $pattern.\n Otherwise, the function returns false. The matching rules are influenced by\n the value of $flags if present.

A dynamic error is raised if the value of\n $pattern is invalid according to the rules described in .

A dynamic error is raised if the value of\n $flags is invalid according to the rules described in .

\n',summary:"

Returns true if the supplied string matches a given regular expression.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"input",type:"xs:string",occurrence:"?",description:""},{name:"pattern",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:3,name:"matches",qname:"fn:matches",signature:"($input as xs:string?, $pattern as xs:string, $flags as xs:string) as xs:boolean external",description:'

Returns true if the supplied string matches a given regular expression.

This function is deterministic, context-independent, and focus-independent.

The effect of calling the first version of this function (omitting the argument\n $flags) is the same as the effect of calling the second version with the\n $flags argument set to a zero-length string. Flags are defined in\n .

If $input is the empty sequence, it is interpreted as the zero-length\n string.

The function returns true if $input or some substring of\n $input matches the regular expression supplied as $pattern.\n Otherwise, the function returns false. The matching rules are influenced by\n the value of $flags if present.

A dynamic error is raised if the value of\n $pattern is invalid according to the rules described in .

A dynamic error is raised if the value of\n $flags is invalid according to the rules described in .

\n',summary:"

Returns true if the supplied string matches a given regular expression.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"input",type:"xs:string",occurrence:"?",description:""},{name:"pattern",type:"xs:string",occurrence:null,description:""},{name:"flags",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"max",qname:"fn:max",signature:"($arg as xs:anyAtomicType*) as xs:anyAtomicType? external",description:'

Returns a value that is equal to the highest value appearing in the input\n sequence.

The zero-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and implicit timezone.\n

The one-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri, and implicit timezone.\n

The following rules are applied to the input sequence $arg:

Values of type xs:untypedAtomic in $arg are cast to\n xs:double.

Numeric and xs:anyURI values are converted to\n the least common type reachable by a combination of type promotion and subtype\n substitution. See and .

The items in the resulting sequence may be reordered in an arbitrary order. The\n resulting sequence is referred to below as the converted sequence. The function returns\n an item from the converted sequence rather than the input sequence.

If the converted sequence is empty, the function returns the empty sequence.

All items in the converted sequence must be\n derived from a single base type for which the le operator is\n defined. In addition, the values in the sequence must have a total order. If date/time\n values do not have a timezone, they are considered to have the implicit timezone\n provided by the dynamic context for the purpose of comparison. Duration values must\n either all be xs:yearMonthDuration values or must all be\n xs:dayTimeDuration values.

If the converted sequence contains the value NaN, the value\n NaN is returned.

If the items in the converted sequence are of\n type xs:string or types derived by restriction from xs:string,\n then the determination of the item with the smallest value is made according to the\n collation that is used. If the type of the items in the converted sequence is not xs:string and\n $collation is specified, the collation is ignored.

The collation used by this function is determined according to the rules in .

The function returns the result of the expression:

\n if (every $v in $c satisfies $c[1] ge $v)\n then $c[1]\n else fn:max(fn:subsequence($c, 2))

evaluated with $collation as the default collation if specified, and with\n $c as the converted sequence.

For detailed type semantics, see [Formal Semantics].

A type error is raised if the input sequence contains\n items of incompatible types, as described above.

\n',summary:"

Returns a value that is equal to the highest value appearing in the input\n sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:"*",description:""}],returns:{type:"xs:anyAtomicType?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"max",qname:"fn:max",signature:"($arg as xs:anyAtomicType*, $collation as xs:string) as xs:anyAtomicType? external",description:'

Returns a value that is equal to the highest value appearing in the input\n sequence.

The zero-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and implicit timezone.\n

The one-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri, and implicit timezone.\n

The following rules are applied to the input sequence $arg:

Values of type xs:untypedAtomic in $arg are cast to\n xs:double.

Numeric and xs:anyURI values are converted to\n the least common type reachable by a combination of type promotion and subtype\n substitution. See and .

The items in the resulting sequence may be reordered in an arbitrary order. The\n resulting sequence is referred to below as the converted sequence. The function returns\n an item from the converted sequence rather than the input sequence.

If the converted sequence is empty, the function returns the empty sequence.

All items in the converted sequence must be\n derived from a single base type for which the le operator is\n defined. In addition, the values in the sequence must have a total order. If date/time\n values do not have a timezone, they are considered to have the implicit timezone\n provided by the dynamic context for the purpose of comparison. Duration values must\n either all be xs:yearMonthDuration values or must all be\n xs:dayTimeDuration values.

If the converted sequence contains the value NaN, the value\n NaN is returned.

If the items in the converted sequence are of\n type xs:string or types derived by restriction from xs:string,\n then the determination of the item with the smallest value is made according to the\n collation that is used. If the type of the items in the converted sequence is not xs:string and\n $collation is specified, the collation is ignored.

The collation used by this function is determined according to the rules in .

The function returns the result of the expression:

\n if (every $v in $c satisfies $c[1] ge $v)\n then $c[1]\n else fn:max(fn:subsequence($c, 2))

evaluated with $collation as the default collation if specified, and with\n $c as the converted sequence.

For detailed type semantics, see [Formal Semantics].

A type error is raised if the input sequence contains\n items of incompatible types, as described above.

\n',summary:"

Returns a value that is equal to the highest value appearing in the input\n sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:"*",description:""},{name:"collation",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:anyAtomicType?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"min",qname:"fn:min",signature:"($arg as xs:anyAtomicType*) as xs:anyAtomicType? external",description:'

Returns a value that is equal to the lowest value appearing in the input\n sequence.

The zero-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and implicit timezone.\n

The one-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri, and implicit timezone.\n

The following rules are applied to the input sequence:

Values of type xs:untypedAtomic in $arg are cast to\n xs:double.

Numeric and xs:anyURI values are converted to\n the least common type reachable by a combination of type promotion and subtype\n substitution. See and .

The items in the resulting sequence may be reordered in an arbitrary order. The\n resulting sequence is referred to below as the converted sequence. The function returns\n an item from the converted sequence rather than the input sequence.

If the converted sequence is empty, the empty sequence is returned.

All items in the converted sequence must be\n derived from a single base type for which the le operator is\n defined. In addition, the values in the sequence must have a total order. If date/time\n values do not have a timezone, they are considered to have the implicit timezone\n provided by the dynamic context for the purpose of comparison. Duration values must\n either all be xs:yearMonthDuration values or must all be\n xs:dayTimeDuration values.

If the converted sequence contains the value NaN, the value\n NaN is returned.

If the items in the converted sequence are of\n type xs:string or types derived by restriction from xs:string,\n then the determination of the item with the smallest value is made according to the\n collation that is used. If the type of the items in the converted sequence is not xs:string and\n $collation is specified, the collation is ignored.

The collation used by this function is determined according to the rules in .

The function returns the result of the expression:

\n if (every $v in $c satisfies $c[1] le $v)\n then $c[1]\n else fn:min(fn:subsequence($c, 2))

evaluated with $collation as the default collation if specified, and with\n $c as the converted sequence.

For detailed type semantics, see [Formal Semantics].

A type error is raised if the input sequence contains\n items of incompatible types, as described above.

\n',summary:"

Returns a value that is equal to the lowest value appearing in the input\n sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:"*",description:""}],returns:{type:"xs:anyAtomicType?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"min",qname:"fn:min",signature:"($arg as xs:anyAtomicType*, $collation as xs:string) as xs:anyAtomicType? external",description:'

Returns a value that is equal to the lowest value appearing in the input\n sequence.

The zero-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and implicit timezone.\n

The one-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri, and implicit timezone.\n

The following rules are applied to the input sequence:

Values of type xs:untypedAtomic in $arg are cast to\n xs:double.

Numeric and xs:anyURI values are converted to\n the least common type reachable by a combination of type promotion and subtype\n substitution. See and .

The items in the resulting sequence may be reordered in an arbitrary order. The\n resulting sequence is referred to below as the converted sequence. The function returns\n an item from the converted sequence rather than the input sequence.

If the converted sequence is empty, the empty sequence is returned.

All items in the converted sequence must be\n derived from a single base type for which the le operator is\n defined. In addition, the values in the sequence must have a total order. If date/time\n values do not have a timezone, they are considered to have the implicit timezone\n provided by the dynamic context for the purpose of comparison. Duration values must\n either all be xs:yearMonthDuration values or must all be\n xs:dayTimeDuration values.

If the converted sequence contains the value NaN, the value\n NaN is returned.

If the items in the converted sequence are of\n type xs:string or types derived by restriction from xs:string,\n then the determination of the item with the smallest value is made according to the\n collation that is used. If the type of the items in the converted sequence is not xs:string and\n $collation is specified, the collation is ignored.

The collation used by this function is determined according to the rules in .

The function returns the result of the expression:

\n if (every $v in $c satisfies $c[1] le $v)\n then $c[1]\n else fn:min(fn:subsequence($c, 2))

evaluated with $collation as the default collation if specified, and with\n $c as the converted sequence.

For detailed type semantics, see [Formal Semantics].

A type error is raised if the input sequence contains\n items of incompatible types, as described above.

\n',summary:"

Returns a value that is equal to the lowest value appearing in the input\n sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:"*",description:""},{name:"collation",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:anyAtomicType?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"minutes-from-dateTime",qname:"fn:minutes-from-dateTime",signature:"($arg as xs:dateTime?) as xs:integer? external",description:'

Returns the minute component of an xs:dateTime.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:integer value between 0 and 59, both\n inclusive, representing the minute component in the local value of\n $arg.

The expression fn:minutes-from-dateTime(xs:dateTime("1999-05-31T13:20:00-05:00")) returns 20.

The expression fn:minutes-from-dateTime(xs:dateTime("1999-05-31T13:30:00+05:30")) returns 30.

\n',summary:"

Returns the minute component of an xs:dateTime .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:dateTime",occurrence:"?",description:""}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"minutes-from-duration",qname:"fn:minutes-from-duration",signature:"($arg as xs:duration?) as xs:integer? external",description:'

Returns the number of minutes in a duration.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:integer representing the minutes\n component in the value of $arg. The result is obtained by casting\n $arg to an xs:dayTimeDuration (see ) and then computing the minutes component as described\n in .

If $arg is a negative duration then the result will be negative..

If $arg is an xs:yearMonthDuration the function returns 0.

The expression fn:minutes-from-duration(xs:dayTimeDuration("P3DT10H")) returns 0.

The expression fn:minutes-from-duration(xs:dayTimeDuration("-P5DT12H30M")) returns -30.

\n',summary:"

Returns the number of minutes in a duration.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:duration",occurrence:"?",description:""}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"minutes-from-time",qname:"fn:minutes-from-time",signature:"($arg as xs:time?) as xs:integer? external",description:'

Returns the minutes component of an xs:time.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:integer value between 0 and 59, both\n inclusive, representing the value of the minutes component in the local value of\n $arg.

The expression fn:minutes-from-time(xs:time("13:00:00Z")) returns 0.

\n',summary:"

Returns the minutes component of an xs:time .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:time",occurrence:"?",description:""}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"month-from-date",qname:"fn:month-from-date",signature:"($arg as xs:date?) as xs:integer? external",description:'

Returns the month component of an xs:date.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:integer between 1 and 12, both\n inclusive, representing the month component in the local value of $arg.\n

The expression fn:month-from-date(xs:date("1999-05-31-05:00")) returns 5.

The expression fn:month-from-date(xs:date("2000-01-01+05:00")) returns 1.

\n',summary:"

Returns the month component of an xs:date .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:date",occurrence:"?",description:""}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"months-from-duration",qname:"fn:months-from-duration",signature:"($arg as xs:duration?) as xs:integer? external",description:'

Returns the number of months in a duration.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:integer representing the months\n component in the value of $arg. The result is obtained by casting\n $arg to an xs:yearMonthDuration (see ) and then computing the months component as described in\n .

If $arg is a negative duration then the result will be negative..

If $arg is an xs:dayTimeDuration the function returns 0.

The expression fn:months-from-duration(xs:yearMonthDuration("P20Y15M")) returns 3.

The expression fn:months-from-duration(xs:yearMonthDuration("-P20Y18M")) returns -6.

The expression fn:months-from-duration(xs:dayTimeDuration("-P2DT15H0M0S")) returns 0.

\n',summary:"

Returns the number of months in a duration.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:duration",occurrence:"?",description:""}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:0,name:"name",qname:"fn:name",signature:"() as xs:string external",description:'

Returns the name of a node, as an xs:string that is either the\n zero-length string, or has the lexical form of an xs:QName.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

If the argument is supplied and is the empty sequence, the function returns the\n zero-length string.

If the node identified by $arg has no name (that is, if it is a document\n node, a comment, a text node, or a namespace node having no name), the function returns\n the zero-length string.

Otherwise, the function returns the value of the expression\n fn:string(fn:node-name($arg)).

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the name of a node, as an xs:string that is either the\n zero-length string, or has the lexical form of an xs:QName .

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"name",qname:"fn:name",signature:"($arg as node()?) as xs:string external",description:'

Returns the name of a node, as an xs:string that is either the\n zero-length string, or has the lexical form of an xs:QName.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

If the argument is supplied and is the empty sequence, the function returns the\n zero-length string.

If the node identified by $arg has no name (that is, if it is a document\n node, a comment, a text node, or a namespace node having no name), the function returns\n the zero-length string.

Otherwise, the function returns the value of the expression\n fn:string(fn:node-name($arg)).

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the name of a node, as an xs:string that is either the\n zero-length string, or has the lexical form of an xs:QName .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"node()",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"namespace-uri-for-prefix",qname:"fn:namespace-uri-for-prefix",signature:"($prefix as xs:string?, $element as element(*)) as xs:anyURI? external",description:'

Returns the namespace URI of one of the in-scope namespaces for\n $element, identified by its namespace prefix.

This function is deterministic, context-independent, and focus-independent.

If $element has an in-scope namespace whose namespace prefix is equal to\n $prefix, the function returns the namespace URI of that namespace.

If $element has no in-scope namespace whose namespace prefix is equal to\n $prefix, the function returns the empty sequence.

If $prefix is the zero-length string or the empty\n sequence, then if $element has a default namespace (that is, a namespace\n node with no name), the function returns the namespace URI of the default namespace. If\n $element has no default namespace, the function returns the empty\n sequence.

Prefixes are equal only if their Unicode codepoints match exactly.

let $e := \n <z:a xmlns="http://example.org/one" xmlns:z="http://example.org/two">\n <b xmlns=""/>\n </z:a>

The expression fn:namespace-uri-for-prefix("z", $e) returns "http://example.org/two".

The expression fn:namespace-uri-for-prefix("", $e) returns "http://example.org/one".

The expression fn:namespace-uri-for-prefix((), $e) returns "http://example.org/one".

The expression fn:namespace-uri-for-prefix("xml", $e) returns "http://www.w3.org/XML/1998/namespace".

The expression fn:namespace-uri-for-prefix("xml", $e) returns "http://www.w3.org/XML/1998/namespace".

\n',summary:"

Returns the namespace URI of one of the in-scope namespaces for\n $element , identified by its namespace prefix.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"prefix",type:"xs:string",occurrence:"?",description:""},{name:"element",type:"element(*)",occurrence:null,description:""}],returns:{type:"xs:anyURI?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"namespace-uri-from-QName",qname:"fn:namespace-uri-from-QName",signature:"($arg as xs:QName?) as xs:anyURI? external",description:'

Returns the namespace URI part of the supplied QName.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence the function returns the empty sequence.

Otherwise, the function returns an xs:anyURI representing the namespace URI\n part of $arg.

If $arg is in no namespace, the function returns the zero-length\n xs:anyURI.

The expression fn:namespace-uri-from-QName(fn:QName("http://www.example.com/example",\n "person")) returns xs:anyURI("http://www.example.com/example").

\n',summary:"

Returns the namespace URI part of the supplied QName.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:QName",occurrence:"?",description:""}],returns:{type:"xs:anyURI?",description:""},errors:[]},{isDocumented:!0,arity:0,name:"namespace-uri",qname:"fn:namespace-uri",signature:"() as xs:anyURI external",description:'

Returns the namespace URI part of the name of\n $arg, as an xs:anyURI value.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context node (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

If the node identified by $arg is neither an element nor an attribute node,\n or if it is an element or attribute node whose expanded-QName (as determined by the\n dm:node-name accessor in the )\n is in no namespace, then the function returns the zero-length xs:anyURI\n value.

Otherwise, the result will be the namespace URI part of the expanded-QName of the node\n identified by $arg, as determined by the dm:node-name accessor\n defined in ), returned as an\n xs:anyURI value.

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the namespace URI part of the name of\n $arg , as an xs:anyURI value.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:anyURI",description:""},errors:[]},{isDocumented:!0,arity:1,name:"namespace-uri",qname:"fn:namespace-uri",signature:"($arg as node()?) as xs:anyURI external",description:'

Returns the namespace URI part of the name of\n $arg, as an xs:anyURI value.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context node (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

If the node identified by $arg is neither an element nor an attribute node,\n or if it is an element or attribute node whose expanded-QName (as determined by the\n dm:node-name accessor in the )\n is in no namespace, then the function returns the zero-length xs:anyURI\n value.

Otherwise, the result will be the namespace URI part of the expanded-QName of the node\n identified by $arg, as determined by the dm:node-name accessor\n defined in ), returned as an\n xs:anyURI value.

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the namespace URI part of the name of\n $arg , as an xs:anyURI value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"node()",occurrence:"?",description:""}],returns:{type:"xs:anyURI",description:""},errors:[]},{isDocumented:!0,arity:0,name:"nilled",qname:"fn:nilled",signature:"() as xs:boolean external",description:'

Returns true for an element that is nilled.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise the function returns the result of the dm:nilled accessor as\n defined in (see ).

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns true for an element that is nilled .

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"nilled",qname:"fn:nilled",signature:"($arg as node()?) as xs:boolean? external",description:'

Returns true for an element that is nilled.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item (.). The\n behavior of the function if the argument is omitted is exactly the same as if the\n context item had been passed as the argument.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise the function returns the result of the dm:nilled accessor as\n defined in (see ).

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns true for an element that is nilled .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"node()",occurrence:"?",description:""}],returns:{type:"xs:boolean?",description:""},errors:[]},{isDocumented:!0,arity:0,name:"node-name",qname:"fn:node-name",signature:"() as xs:QName? external",description:'

Returns the name of a node, as an xs:QName.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item\n (.). The behavior of the function if the argument is omitted is exactly\n the same as if the context item had been passed as the argument.

If $arg is the empty sequence, the empty sequence is returned.

Otherwise, the function returns the result of the dm:node-name accessor as\n defined in (see ).

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the name of a node, as an xs:QName .

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"node-name",qname:"fn:node-name",signature:"($arg as node()?) as xs:QName? external",description:'

Returns the name of a node, as an xs:QName.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the argument is omitted, it defaults to the context item\n (.). The behavior of the function if the argument is omitted is exactly\n the same as if the context item had been passed as the argument.

If $arg is the empty sequence, the empty sequence is returned.

Otherwise, the function returns the result of the dm:node-name accessor as\n defined in (see ).

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the name of a node, as an xs:QName .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"node()",occurrence:"?",description:""}],returns:{type:"xs:QName?",description:""},errors:[]},{isDocumented:!0,arity:0,name:"normalize-space",qname:"fn:normalize-space",signature:"() as xs:string external",description:'

Returns the value of $arg with leading and trailing whitespace\n removed, and sequences of internal whitespace reduced to a single space character.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the value of $arg is the empty sequence, the function returns the\n zero-length string.

The function returns a string constructed by stripping leading and trailing whitespace\n from the value of $arg, and replacing sequences of one or more adjacent\n whitespace characters with a single space, #x20.

The whitespace characters are defined in the metasymbol S (Production 3) of .

If no argument is supplied, then $arg defaults to the\n string value (calculated using fn:string) of the context item\n (.).

If no argument is supplied and the context item is absent then a dynamic error is raised: .

\n',summary:"

Returns the value of $arg with leading and trailing whitespace\n removed, and sequences of internal whitespace reduced to a single space character.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"normalize-space",qname:"fn:normalize-space",signature:"($arg as xs:string?) as xs:string external",description:'

Returns the value of $arg with leading and trailing whitespace\n removed, and sequences of internal whitespace reduced to a single space character.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the value of $arg is the empty sequence, the function returns the\n zero-length string.

The function returns a string constructed by stripping leading and trailing whitespace\n from the value of $arg, and replacing sequences of one or more adjacent\n whitespace characters with a single space, #x20.

The whitespace characters are defined in the metasymbol S (Production 3) of .

If no argument is supplied, then $arg defaults to the\n string value (calculated using fn:string) of the context item\n (.).

If no argument is supplied and the context item is absent then a dynamic error is raised: .

\n',summary:"

Returns the value of $arg with leading and trailing whitespace\n removed, and sequences of internal whitespace reduced to a single space character.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"normalize-unicode",qname:"fn:normalize-unicode",signature:"($arg as xs:string?) as xs:string external",description:'

Returns the value of $arg after applying Unicode\n normalization.

This function is deterministic, context-independent, and focus-independent.

If the value of $arg is the empty sequence, the function returns the\n zero-length string.

If the single-argument version of the function is used, the result is the same as\n calling the two-argument version with $normalizationForm set to the string\n "NFC".

Otherwise, the function returns the value of $arg normalized according to\n the rules of the normalization form identified by the value of\n $normalizationForm.

The effective value of $normalizationForm is the value of the expression\n fn:upper-case(fn:normalize-space($normalizationForm)).

See for a description of the\n normalization forms.

If the effective value of $normalizationForm is NFC,\n then the function returns the value of $arg converted to Unicode\n Normalization Form C (NFC).

If the effective value of $normalizationForm is NFD,\n then the function returns the value of $arg converted to Unicode\n Normalization Form D (NFD).

If the effective value of $normalizationForm is NFKC,\n then the function returns the value of $arg in Unicode Normalization\n Form KC (NFKC).

If the effective value of $normalizationForm is NFKD,\n then the function returns the value of $arg converted to Unicode\n Normalization Form KD (NFKD).

If the effective value of $normalizationForm is\n FULLY-NORMALIZED, then the function returns the value of\n $arg converted to fully normalized form.

If the effective value of $normalizationForm is the zero-length\n string, no normalization is performed and $arg is returned.

Normalization forms NFC, NFD, NFKC, and NFKD, and the algorithms to be\n used for converting a string to each of these forms, are defined in .

The motivation for normalization form FULLY-NORMALIZED is explained in\n . However, as that specification did not\n progress beyond working draft status, the normative specification is as follows:

A string is fully-normalized if (a) it is in normalization form NFC\n as defined in , and (b) it does not start\n with a composing character.

A composing character is a character that is one or both of the following:

the second character in the canonical decomposition mapping of some\n character that is not listed in the Composition Exclusion Table defined in\n ;

of non-zero canonical combining class (as defined in ).

A string is converted to FULLY-NORMALIZED form as follows:

if the first character in the string is a composing character, prepend a\n single space (x20);

convert the resulting string to normalization form NFC.

Conforming implementations must support normalization form "NFC" and\n may support normalization forms "NFD", "NFKC", "NFKD", and\n "FULLY-NORMALIZED". They may also support other normalization forms\n with implementation-defined semantics.

It is implementation-defined which version of\n Unicode (and therefore, of the normalization algorithms and their underlying\n data) is supported by the implementation. See for details of the\n stability policy regarding changes to the normalization rules in future\n versions of Unicode. If the input string contains codepoints that are\n unassigned in the relevant version of Unicode, or for which no normalization\n rules are defined, the fn:normalize-unicode function leaves such codepoints\n unchanged. If the implementation supports the requested normalization form then\n it must be able to handle every input string without raising an error.

A dynamic error is raised if the effective value of the\n $normalizationForm argument is not one of the values supported by the\n implementation.

\n',summary:"

Returns the value of $arg after applying Unicode\n normalization.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"normalize-unicode",qname:"fn:normalize-unicode",signature:"($arg as xs:string?, $normalizationForm as xs:string) as xs:string external",description:'

Returns the value of $arg after applying Unicode\n normalization.

This function is deterministic, context-independent, and focus-independent.

If the value of $arg is the empty sequence, the function returns the\n zero-length string.

If the single-argument version of the function is used, the result is the same as\n calling the two-argument version with $normalizationForm set to the string\n "NFC".

Otherwise, the function returns the value of $arg normalized according to\n the rules of the normalization form identified by the value of\n $normalizationForm.

The effective value of $normalizationForm is the value of the expression\n fn:upper-case(fn:normalize-space($normalizationForm)).

See for a description of the\n normalization forms.

If the effective value of $normalizationForm is NFC,\n then the function returns the value of $arg converted to Unicode\n Normalization Form C (NFC).

If the effective value of $normalizationForm is NFD,\n then the function returns the value of $arg converted to Unicode\n Normalization Form D (NFD).

If the effective value of $normalizationForm is NFKC,\n then the function returns the value of $arg in Unicode Normalization\n Form KC (NFKC).

If the effective value of $normalizationForm is NFKD,\n then the function returns the value of $arg converted to Unicode\n Normalization Form KD (NFKD).

If the effective value of $normalizationForm is\n FULLY-NORMALIZED, then the function returns the value of\n $arg converted to fully normalized form.

If the effective value of $normalizationForm is the zero-length\n string, no normalization is performed and $arg is returned.

Normalization forms NFC, NFD, NFKC, and NFKD, and the algorithms to be\n used for converting a string to each of these forms, are defined in .

The motivation for normalization form FULLY-NORMALIZED is explained in\n . However, as that specification did not\n progress beyond working draft status, the normative specification is as follows:

A string is fully-normalized if (a) it is in normalization form NFC\n as defined in , and (b) it does not start\n with a composing character.

A composing character is a character that is one or both of the following:

the second character in the canonical decomposition mapping of some\n character that is not listed in the Composition Exclusion Table defined in\n ;

of non-zero canonical combining class (as defined in ).

A string is converted to FULLY-NORMALIZED form as follows:

if the first character in the string is a composing character, prepend a\n single space (x20);

convert the resulting string to normalization form NFC.

Conforming implementations must support normalization form "NFC" and\n may support normalization forms "NFD", "NFKC", "NFKD", and\n "FULLY-NORMALIZED". They may also support other normalization forms\n with implementation-defined semantics.

It is implementation-defined which version of\n Unicode (and therefore, of the normalization algorithms and their underlying\n data) is supported by the implementation. See for details of the\n stability policy regarding changes to the normalization rules in future\n versions of Unicode. If the input string contains codepoints that are\n unassigned in the relevant version of Unicode, or for which no normalization\n rules are defined, the fn:normalize-unicode function leaves such codepoints\n unchanged. If the implementation supports the requested normalization form then\n it must be able to handle every input string without raising an error.

A dynamic error is raised if the effective value of the\n $normalizationForm argument is not one of the values supported by the\n implementation.

\n',summary:"

Returns the value of $arg after applying Unicode\n normalization.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""},{name:"normalizationForm",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"not",qname:"fn:not",signature:"($arg as item()*) as xs:boolean external",description:'

Returns true if the effective boolean value of $arg\n is false, or false if it is true.

This function is deterministic, context-independent, and focus-independent.

The value of $arg is first reduced to an effective boolean value by\n applying the fn:boolean() function. The function returns true\n if the effective boolean value is false, or false if the\n effective boolean value is true.

The expression fn:not(fn:true()) returns false().

The expression fn:not("false") returns false().

\n',summary:"

Returns true if the effective boolean value of $arg \n is false , or false if it is true .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:0,name:"number",qname:"fn:number",signature:"() as xs:double external",description:'

Returns the value indicated by $arg or, if $arg is\n not specified, the context item after atomization, converted to an\n xs:double.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

Calling the zero-argument version of the function is defined to give the same result as\n calling the single-argument version with the context item (.). That is,\n fn:number() is equivalent to fn:number(.), as\n defined by the rules that follow.

If $arg is the empty sequence or if $arg or the context item\n cannot be converted to an xs:double, the xs:double value\n NaN is returned.

Otherwise, $arg , or the context item after atomization, is converted to an\n xs:double following the rules of . If\n the conversion to xs:double fails, the xs:double value\n NaN is returned.

A dynamic error is raised if\n $arg is omitted and the context item is absent.

As a consequence of the rules given above, a type error occurs if the context\n item cannot be atomized, or if the result of atomizing the context item is a sequence containing\n more than one atomic value.

\n',summary:"

Returns the value indicated by $arg or, if $arg is\n not specified, the context item after atomization, converted to an\n xs:double .

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:double",description:""},errors:[]},{isDocumented:!0,arity:1,name:"number",qname:"fn:number",signature:"($arg as xs:anyAtomicType?) as xs:double external",description:'

Returns the value indicated by $arg or, if $arg is\n not specified, the context item after atomization, converted to an\n xs:double.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

Calling the zero-argument version of the function is defined to give the same result as\n calling the single-argument version with the context item (.). That is,\n fn:number() is equivalent to fn:number(.), as\n defined by the rules that follow.

If $arg is the empty sequence or if $arg or the context item\n cannot be converted to an xs:double, the xs:double value\n NaN is returned.

Otherwise, $arg , or the context item after atomization, is converted to an\n xs:double following the rules of . If\n the conversion to xs:double fails, the xs:double value\n NaN is returned.

A dynamic error is raised if\n $arg is omitted and the context item is absent.

As a consequence of the rules given above, a type error occurs if the context\n item cannot be atomized, or if the result of atomizing the context item is a sequence containing\n more than one atomic value.

\n',summary:"

Returns the value indicated by $arg or, if $arg is\n not specified, the context item after atomization, converted to an\n xs:double .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:"?",description:""}],returns:{type:"xs:double",description:""},errors:[]},{isDocumented:!0,arity:1,name:"one-or-more",qname:"fn:one-or-more",signature:"($arg as item()*) as item()+ external",description:'

Returns $arg if it contains one or more items. Otherwise, raises\n an error.

This function is deterministic, context-independent, and focus-independent.

Except in error cases, the function returns $arg unchanged.

For detailed type semantics, see [Formal Semantics].

A dynamic error is raised if $arg is an empty\n sequence.

\n',summary:"

Returns $arg if it contains one or more items.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:""}],returns:{type:"item()+",description:""},errors:[]},{isDocumented:!0,arity:1,name:"outermost",qname:"fn:outermost",signature:"($nodes as node()*) as node()* external",description:'

Returns every node within the input sequence that has no ancestor that is itself a\n member of the input sequence; the nodes are returned in document order with duplicates\n eliminated.

This function is deterministic, context-independent, and focus-independent.

The effect of the function call fn:outermost($nodes) is defined to be\n equivalent to the result of the expression $nodes[not(ancestor::node() intersect\n $nodes)]/..

That is, the function takes as input a sequence of nodes, and returns every node within\n the sequence that does not have another node within the sequence as an ancestor; the nodes are\n returned in document order with duplicates eliminated.

The formulation $nodes except $nodes/descendant::node() might appear to be\n simpler, but does not correctly account for attribute nodes, as these are not\n descendants of their parent element.

The motivation for the function was based on XSLT streaming use cases. There are cases\n where the streaming rules allow the construct\n outermost(//section) but do not allow //section; the\n function can therefore be useful in cases where it is known that sections will not be\n nested, as well as cases where the application actually wishes to process all sections\n except those that are nested within another.

\n',summary:"

Returns every node within the input sequence that has no ancestor that is itself a\n member of the input sequence; the nodes are returned in document order with duplicates\n eliminated.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:""}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"parse-xml-fragment",qname:"fn:parse-xml-fragment",signature:"($arg as xs:string?) as document(element(*,xs:untyped)) external",description:'

This function takes as input an XML external entity represented as a string,\n and returns the document node at the root of an XDM tree representing the parsed\n document fragment.

This function is nondeterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

If $arg is the empty sequence, the function returns the empty sequence.

The input must be a namespace-well-formed external general parsed entity. More specifically,\n it must be a string conforming to the production rule extParsedEnt in , it must contain no entity references other\n than references to predefined entities,\n and it must satisfy all the rules\n of for namespace-well-formed documents with the exception\n that the rule requiring it to be a well-formed document is replaced by the rule requiring\n it to be a well-formed external general parsed entity.

The string is parsed to form a sequence of nodes which\n become children of the new document node, in the same way as the content of any element\n is converted into a sequence of children for the resulting element node.

Schema validation is not invoked, which means that the nodes in the\n returned document will all be untyped.

The precise process used to construct the XDM instance is . In\n particular, it is implementation-defined whether an XML 1.0 or XML 1.1 parser is\n used.

The Static Base URI from the static context of the fn:parse-xml-fragment function call\n is used as the base URI of the document node\n that is returned.

The document URI of the returned node is absent.

The function is not\n deterministic: that is, if the function is called\n twice with the same arguments, it is implementation-dependent whether the same node is returned on both\n occasions.

A dynamic error is raised if the content of\n $arg is not a well-formed external general parsed entity,\n if it contains entity references other than references to predefined entities, or if a document that\n incorporates this well-formed parsed entity would not be namespace-well-formed.

\n',summary:"

This function takes as input an XML external entity represented as a string,\n and returns the document node at the root of an XDM tree representing the parsed\n document fragment.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""}],returns:{type:"document(element(*,xs:untyped))",description:""},errors:[]},{isDocumented:!0,arity:1,name:"parse-xml",qname:"fn:parse-xml",signature:"($arg as xs:string?) as document(element(*,xs:untyped)) external",description:'

This function takes as input an XML document represented as a string, and\n returns the document node at the root of an XDM tree representing the parsed\n document.

This function is nondeterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

If $arg is the empty sequence, the function returns the\n empty sequence.

The precise process used to construct the XDM instance is . In\n particular, it is implementation-defined whether DTD and/or schema validation is invoked, and it is\n implementation-defined whether an XML 1.0 or XML 1.1 parser is used.

The Static Base URI property from the static context of the\n fn:parse-xml function call is used both as the base URI used by the XML parser to resolve\n relative entity references within the document, and as the base URI of the document node\n that is returned.

The document URI of the returned node is absent.

The function is not\n deterministic: that is, if the function is called\n twice with the same arguments, it is implementation-dependent whether the same node is returned on both\n occasions.

A dynamic error is raised if the content of\n $arg is not a well-formed and namespace-well-formed XML document.

A dynamic error is raised if DTD-based\n validation is carried out and the content of $arg is not valid against its\n DTD.

\n',summary:"

This function takes as input an XML document represented as a string, and\n returns the document node at the root of an XDM tree representing the parsed\n document.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""}],returns:{type:"document(element(*,xs:untyped))",description:""},errors:[]},{isDocumented:!0,arity:2,name:"parse-xml",qname:"fn:parse-xml",signature:"($arg as xs:string?, $baseURI as xs:string) as document(element(*,xs:untyped)) external",description:'

This function takes as input an XML document represented as a string, and\n returns the document node at the root of an XDM tree representing the parsed\n document.

This function is nondeterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

If $arg is the empty sequence, the function returns the\n empty sequence.

The precise process used to construct the XDM instance is . In\n particular, it is implementation-defined whether DTD and/or schema validation is invoked, and it is\n implementation-defined whether an XML 1.0 or XML 1.1 parser is used.

The Static Base URI property from the static context of the\n fn:parse-xml function call is used both as the base URI used by the XML parser to resolve\n relative entity references within the document, and as the base URI of the document node\n that is returned.

The document URI of the returned node is absent.

The function is not\n deterministic: that is, if the function is called\n twice with the same arguments, it is implementation-dependent whether the same node is returned on both\n occasions.

A dynamic error is raised if the content of\n $arg is not a well-formed and namespace-well-formed XML document.

A dynamic error is raised if DTD-based\n validation is carried out and the content of $arg is not valid against its\n DTD.

\n',summary:"

This function takes as input an XML document represented as a string, and\n returns the document node at the root of an XDM tree representing the parsed\n document.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""},{name:"baseURI",type:"xs:string",occurrence:null,description:""}],returns:{type:"document(element(*,xs:untyped))",description:""},errors:[]},{isDocumented:!0,arity:0,name:"position",qname:"fn:position",signature:"() as xs:integer external",description:'

Returns the context position from the dynamic context.

This function is deterministic, context-dependent, and focus-dependent.

Returns the context position from the dynamic context. (See .)

A dynamic error is raised if the\n context item is absent.

\n',summary:"

Returns the context position from the dynamic context.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:integer",description:""},errors:[]},{isDocumented:!0,arity:1,name:"prefix-from-QName",qname:"fn:prefix-from-QName",signature:"($arg as xs:QName?) as xs:NCName? external",description:'

Returns the prefix component of the supplied QName.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence the function returns the empty sequence.

If $arg has no prefix component the function returns the empty\n sequence.

Otherwise, the function returns an xs:NCName representing the prefix\n component of $arg.

\n',summary:"

Returns the prefix component of the supplied QName.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:QName",occurrence:"?",description:""}],returns:{type:"xs:NCName?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"remove",qname:"fn:remove",signature:"($target as item()*, $position as xs:integer) as item()* external",description:'

Returns a new sequence containing all the items of $target except\n the item at position $position.

This function is deterministic, context-independent, and focus-independent.

The function returns a sequence consisting of all items of $target whose\n index is less than $position, followed by all items of $target\n whose index is greater than $position.

For detailed type semantics, see [Formal Semantics].

If $position is less than 1 or greater than the number of items in\n $target, $target is returned.

If $target is the empty sequence, the empty sequence is returned.

\n',summary:"

Returns a new sequence containing all the items of $target except\n the item at position $position .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"target",type:"item()",occurrence:"*",description:""},{name:"position",type:"xs:integer",occurrence:null,description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"replace",qname:"fn:replace",signature:"($input as xs:string?, $pattern as xs:string, $replacement as xs:string) as xs:string external",description:'

Returns a string produced from the input string by replacing any substrings\n that match a given regular expression with a supplied replacement string.

This function is deterministic, context-independent, and focus-independent.

The effect of calling the first version of this function (omitting the argument\n $flags) is the same as the effect of calling the second version with the\n $flags argument set to a zero-length string. Flags are defined in\n .

The $flags argument is interpreted in the same manner as for the\n fn:matches function.

If $input is the empty sequence, it is interpreted as the zero-length\n string.

The function returns the xs:string that is obtained by replacing each\n non-overlapping substring of $input that matches the given\n $pattern with an occurrence of the $replacement string.

If two overlapping substrings of $input both match the\n $pattern, then only the first one (that is, the one whose first character comes first in the $input string) is\n replaced.

If the q flag is present, the replacement string is used\n as is.

Otherwise, within the $replacement\n string, a variable $N may be used to refer to the substring captured by the\n Nth parenthesized sub-expression in the regular expression. For each match of the\n pattern, these variables are assigned the value of the content matched by the relevant\n sub-expression, and the modified replacement string is then substituted for the characters in $input that matched the pattern.\n $0 refers to the substring captured by the regular expression as a\n whole.

More specifically, the rules are as follows, where S is the number of\n parenthesized sub-expressions in the regular expression, and N is the\n decimal number formed by taking all the digits that consecutively follow the\n $ character:

If N=0, then the variable is replaced by the substring\n matched by the regular expression as a whole.

If 1<=N<=S, then the variable is\n replaced by the substring captured by the Nth parenthesized sub-expression. If the\n Nth parenthesized sub-expression was not matched, then the\n variable is replaced by the zero-length string.

If S<N<=9, then the variable is\n replaced by the zero-length string.

Otherwise (if N>S and\n N>9), the last digit of N is taken to\n be a literal character to be included "as is" in the replacement string, and the\n rules are reapplied using the number N formed by stripping off this\n last digit.

For example, if the replacement string is \n $23\n and there are 5 substrings, the result contains the value of the substring that\n matches the second sub-expression, followed by the digit \n 3\n .

Unless the q flag is used, a literal $\n character within the replacement string must be written as \\$, and a\n literal \\ character must be written as \\\\.

If two alternatives within the pattern both match at the same position in the\n $input, then the match that is chosen is the one matched by the first\n alternative. For example:

fn:replace("abcd", "(ab)|(a)", "[1=$1][2=$2]") returns "[1=ab][2=]cd"

A dynamic error is raised if the value of\n $pattern is invalid according to the rules described in section .

A dynamic error is raised if the value of\n $flags is invalid according to the rules described in section .

A dynamic error is raised if the pattern matches a\n zero-length string, that is, if the expression fn:matches("", $pattern,\n $flags) returns true. It is not an error, however, if a captured\n substring is zero-length.

A dynamic error is raised if the value of\n $replacement contains a "$" character that is not\n immediately followed by a digit 0-9 and not immediately preceded by a\n "\\".

A dynamic error is raised if the value of\n $replacement contains a "\\" character that is not part of a\n "\\\\" pair, unless it is immediately followed by a "$"\n character.

\n',summary:"

Returns a string produced from the input string by replacing any substrings\n that match a given regular expression with a supplied replacement string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"input",type:"xs:string",occurrence:"?",description:""},{name:"pattern",type:"xs:string",occurrence:null,description:""},{name:"replacement",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:4,name:"replace",qname:"fn:replace",signature:"($input as xs:string?, $pattern as xs:string, $replacement as xs:string, $flags as xs:string) as xs:string external",description:'

Returns a string produced from the input string by replacing any substrings\n that match a given regular expression with a supplied replacement string.

This function is deterministic, context-independent, and focus-independent.

The effect of calling the first version of this function (omitting the argument\n $flags) is the same as the effect of calling the second version with the\n $flags argument set to a zero-length string. Flags are defined in\n .

The $flags argument is interpreted in the same manner as for the\n fn:matches function.

If $input is the empty sequence, it is interpreted as the zero-length\n string.

The function returns the xs:string that is obtained by replacing each\n non-overlapping substring of $input that matches the given\n $pattern with an occurrence of the $replacement string.

If two overlapping substrings of $input both match the\n $pattern, then only the first one (that is, the one whose first character comes first in the $input string) is\n replaced.

If the q flag is present, the replacement string is used\n as is.

Otherwise, within the $replacement\n string, a variable $N may be used to refer to the substring captured by the\n Nth parenthesized sub-expression in the regular expression. For each match of the\n pattern, these variables are assigned the value of the content matched by the relevant\n sub-expression, and the modified replacement string is then substituted for the characters in $input that matched the pattern.\n $0 refers to the substring captured by the regular expression as a\n whole.

More specifically, the rules are as follows, where S is the number of\n parenthesized sub-expressions in the regular expression, and N is the\n decimal number formed by taking all the digits that consecutively follow the\n $ character:

If N=0, then the variable is replaced by the substring\n matched by the regular expression as a whole.

If 1<=N<=S, then the variable is\n replaced by the substring captured by the Nth parenthesized sub-expression. If the\n Nth parenthesized sub-expression was not matched, then the\n variable is replaced by the zero-length string.

If S<N<=9, then the variable is\n replaced by the zero-length string.

Otherwise (if N>S and\n N>9), the last digit of N is taken to\n be a literal character to be included "as is" in the replacement string, and the\n rules are reapplied using the number N formed by stripping off this\n last digit.

For example, if the replacement string is \n $23\n and there are 5 substrings, the result contains the value of the substring that\n matches the second sub-expression, followed by the digit \n 3\n .

Unless the q flag is used, a literal $\n character within the replacement string must be written as \\$, and a\n literal \\ character must be written as \\\\.

If two alternatives within the pattern both match at the same position in the\n $input, then the match that is chosen is the one matched by the first\n alternative. For example:

fn:replace("abcd", "(ab)|(a)", "[1=$1][2=$2]") returns "[1=ab][2=]cd"

A dynamic error is raised if the value of\n $pattern is invalid according to the rules described in section .

A dynamic error is raised if the value of\n $flags is invalid according to the rules described in section .

A dynamic error is raised if the pattern matches a\n zero-length string, that is, if the expression fn:matches("", $pattern,\n $flags) returns true. It is not an error, however, if a captured\n substring is zero-length.

A dynamic error is raised if the value of\n $replacement contains a "$" character that is not\n immediately followed by a digit 0-9 and not immediately preceded by a\n "\\".

A dynamic error is raised if the value of\n $replacement contains a "\\" character that is not part of a\n "\\\\" pair, unless it is immediately followed by a "$"\n character.

\n',summary:"

Returns a string produced from the input string by replacing any substrings\n that match a given regular expression with a supplied replacement string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"input",type:"xs:string",occurrence:"?",description:""},{name:"pattern",type:"xs:string",occurrence:null,description:""},{name:"replacement",type:"xs:string",occurrence:null,description:""},{name:"flags",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"resolve-QName",qname:"fn:resolve-QName",signature:"($qname as xs:string?, $element as element(*)) as xs:QName? external",description:'

Returns an xs:QName value (that is, an expanded-QName) by taking\n an xs:string that has the lexical form of an xs:QName (a\n string in the form "prefix:local-name" or "local-name") and resolving it using the\n in-scope namespaces for a given element.

This function is deterministic, context-independent, and focus-independent.

If $qname is the empty sequence, returns the empty sequence.

More specifically, the function searches the namespace bindings of $element\n for a binding whose name matches the prefix of $qname, or the zero-length\n string if it has no prefix, and constructs an expanded-QName whose local name is taken\n from the supplied $qname, and whose namespace URI is taken from the string\n value of the namespace binding.

If the $qname has no prefix, and there is no namespace binding for\n $element corresponding to the default (unnamed) namespace, then the\n resulting expanded-QName has no namespace part.

The prefix (or absence of a prefix) in the supplied $qname argument is\n retained in the returned expanded-QName, as discussed in .

A dynamic error is raised if $qname does not\n have the correct lexical form for an instance of xs:QName.

A dynamic error is raised if $qname has a\n prefix and there is no namespace binding for $element that matches this\n prefix.

\n',summary:'

Returns an xs:QName value (that is, an expanded-QName) by taking\n an xs:string that has the lexical form of an xs:QName (a\n string in the form "prefix:local-name" or "local-name") and resolving it using the\n in-scope namespaces for a given element.

',annotation_str:"",annotations:[],updating:!1,parameters:[{name:"qname",type:"xs:string",occurrence:"?",description:""},{name:"element",type:"element(*)",occurrence:null,description:""}],returns:{type:"xs:QName?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"resolve-uri",qname:"fn:resolve-uri",signature:"($relative as xs:string?) as xs:anyURI? external",description:'

Resolves a relative IRI reference against an absolute IRI.

The one-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The two-argument form of this function is deterministic, context-independent, and focus-independent.

If the second argument is absent, the effect is the same as calling the two-argument\n function with the value of fn:static-base-uri() as the second argument.

The function is defined to operate on IRI references as defined in , and the implementation must permit all arguments that are valid\n according to that specification. In addition, the implementation may\n accept some or all strings that conform to the rules for (absolute or relative) Legacy\n Extended IRI references as defined in . For the purposes of this\n section, the terms IRI and IRI reference include these extensions, insofar as the\n implementation chooses to support them.

If $relative is the empty sequence, the function returns the empty\n sequence.

If $relative is an absolute IRI (as defined above), then it is returned\n unchanged.

Otherwise, the function resolves the relative IRI reference $relative\n against the base IRI $base using the algorithm defined in , adapted by treating any character\n that would not be valid in an RFC3986 URI or relative reference in the same way that\n RFC3986 treats unreserved characters. No percent-encoding takes place.

The first form of this function resolves $relative against the value of the\n base-uri property from the static context. A dynamic error is raised if the base-uri property is not initialized in the static context.

A dynamic error is raised if $relative is not a\n valid IRI according to the rules of RFC3987, extended with an implementation-defined\n subset of the extensions permitted in LEIRI, or if it is not a suitable relative\n reference to use as input to the RFC3986 resolution algorithm extended to handle\n additional unreserved characters.

A dynamic error is raised if $base is not a\n valid IRI according to the rules of RFC3987, extended with an implementation-defined\n subset of the extensions permitted in LEIRI, or if it is not a suitable IRI to use as\n input to the chosen resolution algorithm (for example, if it is a relative IRI\n reference, if it is a non-hierarchic URI, or if it contains a fragment identifier).

A dynamic error is raised if the chosen resolution algorithm\n fails for any other reason.

\n',summary:"

Resolves a relative IRI reference against an absolute IRI.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"relative",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:anyURI?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"resolve-uri",qname:"fn:resolve-uri",signature:"($relative as xs:string?, $base as xs:string) as xs:anyURI? external",description:'

Resolves a relative IRI reference against an absolute IRI.

The one-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The two-argument form of this function is deterministic, context-independent, and focus-independent.

If the second argument is absent, the effect is the same as calling the two-argument\n function with the value of fn:static-base-uri() as the second argument.

The function is defined to operate on IRI references as defined in , and the implementation must permit all arguments that are valid\n according to that specification. In addition, the implementation may\n accept some or all strings that conform to the rules for (absolute or relative) Legacy\n Extended IRI references as defined in . For the purposes of this\n section, the terms IRI and IRI reference include these extensions, insofar as the\n implementation chooses to support them.

If $relative is the empty sequence, the function returns the empty\n sequence.

If $relative is an absolute IRI (as defined above), then it is returned\n unchanged.

Otherwise, the function resolves the relative IRI reference $relative\n against the base IRI $base using the algorithm defined in , adapted by treating any character\n that would not be valid in an RFC3986 URI or relative reference in the same way that\n RFC3986 treats unreserved characters. No percent-encoding takes place.

The first form of this function resolves $relative against the value of the\n base-uri property from the static context. A dynamic error is raised if the base-uri property is not initialized in the static context.

A dynamic error is raised if $relative is not a\n valid IRI according to the rules of RFC3987, extended with an implementation-defined\n subset of the extensions permitted in LEIRI, or if it is not a suitable relative\n reference to use as input to the RFC3986 resolution algorithm extended to handle\n additional unreserved characters.

A dynamic error is raised if $base is not a\n valid IRI according to the rules of RFC3987, extended with an implementation-defined\n subset of the extensions permitted in LEIRI, or if it is not a suitable IRI to use as\n input to the chosen resolution algorithm (for example, if it is a relative IRI\n reference, if it is a non-hierarchic URI, or if it contains a fragment identifier).

A dynamic error is raised if the chosen resolution algorithm\n fails for any other reason.

\n',summary:"

Resolves a relative IRI reference against an absolute IRI.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"relative",type:"xs:string",occurrence:"?",description:""},{name:"base",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:anyURI?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"reverse",qname:"fn:reverse",signature:"($arg as item()*) as item()* external",description:'

Reverses the order of items in a sequence.

This function is deterministic, context-independent, and focus-independent.

The function returns a sequence containing the items in $arg in reverse\n order.

For detailed type semantics, see [Formal Semantics].

If $arg is the empty sequence, the empty sequence is returned.

\n',summary:"

Reverses the order of items in a sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:0,name:"root",qname:"fn:root",signature:"() as node() external",description:'

Returns the root of the tree to which $arg belongs. This will\n usually, but not necessarily, be a document node.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the function is called without an argument, the context item (.) is used\n as the default argument. The behavior of the function if the argument is omitted is\n exactly the same as if the context item had been passed as the argument.

The function returns the value of the expression\n ($arg/ancestor-or-self::node())[1].

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the root of the tree to which $arg belongs.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"node()",description:""},errors:[]},{isDocumented:!0,arity:1,name:"root",qname:"fn:root",signature:"($arg as node()?) as node()? external",description:'

Returns the root of the tree to which $arg belongs. This will\n usually, but not necessarily, be a document node.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

If the function is called without an argument, the context item (.) is used\n as the default argument. The behavior of the function if the argument is omitted is\n exactly the same as if the context item had been passed as the argument.

The function returns the value of the expression\n ($arg/ancestor-or-self::node())[1].

The following errors may be raised when $arg is omitted:

\n',summary:"

Returns the root of the tree to which $arg belongs.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"node()",occurrence:"?",description:""}],returns:{type:"node()?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"round-half-to-even",qname:"fn:round-half-to-even",signature:"($arg as numeric?) as numeric? external",description:'

Rounds a value to a specified number of decimal places, rounding to make the\n last digit even if two such values are equally near.

This function is deterministic, context-independent, and focus-independent.

General rules: see .

The function returns the nearest (that is, numerically closest) value to\n $arg that is a multiple of ten to the power of minus\n $precision. If two such values are equally near (e.g. if the fractional\n part in $arg is exactly .500...), the function returns the one whose least\n significant digit is even.

If the type of $arg is one of the four numeric types xs:float,\n xs:double, xs:decimal or xs:integer the type\n of the result is the same as the type of $arg. If the type of\n $arg is a type derived from one of the numeric types, the result is an\n instance of the base numeric type.

The first signature of this function produces the same result as the second signature\n with $precision=0.

For arguments of type xs:float and xs:double:

If the argument is NaN, positive or negative zero, or positive or\n negative infinity, then the result is the same as the argument.

In all other cases, the argument is cast to xs:decimal\n using an implementation of xs:decimal that imposes no\n limits on the number of digits that can be represented. The function\n is applied to this xs:decimal value, and the resulting\n xs:decimal is cast back to xs:float or\n xs:double as appropriate to form the function result. If the\n resulting xs:decimal value is zero, then positive or negative zero is\n returned according to the sign of the original argument.

For detailed type semantics, see [Formal Semantics].

This function is typically used in financial applications where the\n argument is of type xs:decimal. For arguments of type xs:float\n and xs:double the results may be counter-intuitive. For example, consider\n round-half-to-even(xs:float(150.015), 2). The result is not 150.02 as\n might be expected, but 150.01. This is because the conversion of the\n xs:float value represented by the literal 150.015 to an\n xs:decimal produces the xs:decimal value 150.014999389...,\n which is closer to 150.01 than to 150.02.

\n',summary:"

Rounds a value to a specified number of decimal places, rounding to make the\n last digit even if two such values are equally near.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"numeric",occurrence:"?",description:""}],returns:{type:"numeric?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"round-half-to-even",qname:"fn:round-half-to-even",signature:"($arg as numeric?, $precision as xs:integer) as numeric? external",description:'

Rounds a value to a specified number of decimal places, rounding to make the\n last digit even if two such values are equally near.

This function is deterministic, context-independent, and focus-independent.

General rules: see .

The function returns the nearest (that is, numerically closest) value to\n $arg that is a multiple of ten to the power of minus\n $precision. If two such values are equally near (e.g. if the fractional\n part in $arg is exactly .500...), the function returns the one whose least\n significant digit is even.

If the type of $arg is one of the four numeric types xs:float,\n xs:double, xs:decimal or xs:integer the type\n of the result is the same as the type of $arg. If the type of\n $arg is a type derived from one of the numeric types, the result is an\n instance of the base numeric type.

The first signature of this function produces the same result as the second signature\n with $precision=0.

For arguments of type xs:float and xs:double:

If the argument is NaN, positive or negative zero, or positive or\n negative infinity, then the result is the same as the argument.

In all other cases, the argument is cast to xs:decimal\n using an implementation of xs:decimal that imposes no\n limits on the number of digits that can be represented. The function\n is applied to this xs:decimal value, and the resulting\n xs:decimal is cast back to xs:float or\n xs:double as appropriate to form the function result. If the\n resulting xs:decimal value is zero, then positive or negative zero is\n returned according to the sign of the original argument.

For detailed type semantics, see [Formal Semantics].

This function is typically used in financial applications where the\n argument is of type xs:decimal. For arguments of type xs:float\n and xs:double the results may be counter-intuitive. For example, consider\n round-half-to-even(xs:float(150.015), 2). The result is not 150.02 as\n might be expected, but 150.01. This is because the conversion of the\n xs:float value represented by the literal 150.015 to an\n xs:decimal produces the xs:decimal value 150.014999389...,\n which is closer to 150.01 than to 150.02.

\n',summary:"

Rounds a value to a specified number of decimal places, rounding to make the\n last digit even if two such values are equally near.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"numeric",occurrence:"?",description:""},{name:"precision",type:"xs:integer",occurrence:null,description:""}],returns:{type:"numeric?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"round",qname:"fn:round",signature:"($arg as numeric?) as numeric? external",description:'

Rounds a value to a specified number of decimal places, rounding upwards if two\n such values are equally near.

This function is deterministic, context-independent, and focus-independent.

General rules: see .

The function returns the nearest (that is, numerically closest) value to\n $arg that is a multiple of ten to the power of minus\n $precision. If two such values are equally near (for example, if the\n fractional part in $arg is exactly .5), the function returns the one that\n is closest to positive infinity.

If the type of $arg is one of the four numeric types xs:float,\n xs:double, xs:decimal or xs:integer the type\n of the result is the same as the type of $arg. If the type of\n $arg is a type derived from one of the numeric types, the result is an\n instance of the base numeric type.

The single-argument version of this function produces the same result as the\n two-argument version with $precision=0 (that is, it rounds to a whole\n number).

When $arg is of type xs:float and xs:double:

If $arg is NaN, positive or negative zero, or positive or negative\n infinity, then the result is the same as the argument.

For other values, the argument is cast to xs:decimal using an\n implementation of xs:decimal that imposes no limits on the number of\n digits that can be represented. The function is applied to this\n xs:decimal value, and the resulting xs:decimal is\n cast back to xs:float or xs:double as appropriate to\n form the function result. If the resulting xs:decimal value is zero,\n then positive or negative zero is returned according to the sign of\n $arg.

For detailed type semantics, see [Formal Semantics].

This function is typically used with a non-zero $precision in financial\n applications where the argument is of type xs:decimal. For arguments of\n type xs:float and xs:double the results may be\n counter-intuitive. For example, consider round(35.425e0, 2). The result is\n not 35.43, as might be expected, but 35.42. This is because the xs:double written as 35.425e0\n has an exact value equal to 35.42499999999..., which is closer\n to 35.42 than to 35.43.

\n',summary:"

Rounds a value to a specified number of decimal places, rounding upwards if two\n such values are equally near.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"numeric",occurrence:"?",description:""}],returns:{type:"numeric?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"round",qname:"fn:round",signature:"($arg as numeric?, $precision as xs:integer) as numeric? external",description:'

Rounds a value to a specified number of decimal places, rounding upwards if two\n such values are equally near.

This function is deterministic, context-independent, and focus-independent.

General rules: see .

The function returns the nearest (that is, numerically closest) value to\n $arg that is a multiple of ten to the power of minus\n $precision. If two such values are equally near (for example, if the\n fractional part in $arg is exactly .5), the function returns the one that\n is closest to positive infinity.

If the type of $arg is one of the four numeric types xs:float,\n xs:double, xs:decimal or xs:integer the type\n of the result is the same as the type of $arg. If the type of\n $arg is a type derived from one of the numeric types, the result is an\n instance of the base numeric type.

The single-argument version of this function produces the same result as the\n two-argument version with $precision=0 (that is, it rounds to a whole\n number).

When $arg is of type xs:float and xs:double:

If $arg is NaN, positive or negative zero, or positive or negative\n infinity, then the result is the same as the argument.

For other values, the argument is cast to xs:decimal using an\n implementation of xs:decimal that imposes no limits on the number of\n digits that can be represented. The function is applied to this\n xs:decimal value, and the resulting xs:decimal is\n cast back to xs:float or xs:double as appropriate to\n form the function result. If the resulting xs:decimal value is zero,\n then positive or negative zero is returned according to the sign of\n $arg.

For detailed type semantics, see [Formal Semantics].

This function is typically used with a non-zero $precision in financial\n applications where the argument is of type xs:decimal. For arguments of\n type xs:float and xs:double the results may be\n counter-intuitive. For example, consider round(35.425e0, 2). The result is\n not 35.43, as might be expected, but 35.42. This is because the xs:double written as 35.425e0\n has an exact value equal to 35.42499999999..., which is closer\n to 35.42 than to 35.43.

\n',summary:"

Rounds a value to a specified number of decimal places, rounding upwards if two\n such values are equally near.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"numeric",occurrence:"?",description:""},{name:"precision",type:"xs:integer",occurrence:null,description:""}],returns:{type:"numeric?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"seconds-from-dateTime",qname:"fn:seconds-from-dateTime",signature:"($arg as xs:dateTime?) as xs:decimal? external",description:'

Returns the seconds component of an xs:dateTime.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:decimal value greater than or equal\n to zero and less than 60, representing the seconds and fractional seconds in the local\n value of $arg.

The expression fn:seconds-from-dateTime(xs:dateTime("1999-05-31T13:20:00-05:00")) returns 0.

\n',summary:"

Returns the seconds component of an xs:dateTime .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:dateTime",occurrence:"?",description:""}],returns:{type:"xs:decimal?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"seconds-from-duration",qname:"fn:seconds-from-duration",signature:"($arg as xs:duration?) as xs:decimal? external",description:'

Returns the number of seconds in a duration.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:decimal representing the seconds\n component in the value of $arg. The result is obtained by casting\n $arg to an xs:dayTimeDuration (see ) and then computing the seconds component as described\n in .

If $arg is a negative duration then the result will be negative..

If $arg is an xs:yearMonthDuration the function returns 0.

The expression fn:seconds-from-duration(xs:dayTimeDuration("P3DT10H12.5S")) returns 12.5.

The expression fn:seconds-from-duration(xs:dayTimeDuration("-PT256S")) returns -16.0.

\n',summary:"

Returns the number of seconds in a duration.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:duration",occurrence:"?",description:""}],returns:{type:"xs:decimal?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"seconds-from-time",qname:"fn:seconds-from-time",signature:"($arg as xs:time?) as xs:decimal? external",description:'

Returns the seconds component of an xs:time.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:decimal value greater than or equal\n to zero and less than 60, representing the seconds and fractional seconds in the local\n value of $arg.

The expression fn:seconds-from-time(xs:time("13:20:10.5")) returns 10.5.

\n',summary:"

Returns the seconds component of an xs:time .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:time",occurrence:"?",description:""}],returns:{type:"xs:decimal?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"serialize",qname:"fn:serialize",signature:"($arg as item()*) as xs:string external",description:'

This function serializes the supplied input\n sequence\n $arg as described in ,\n returning the serialized representation of the\n sequence as a string.

This function is deterministic, context-independent, and focus-independent.

The value of $arg acts as the input sequence to the serialization process,\n which starts with sequence normalization.

The single-argument version of this function has the same effect as\n the two-argument version called with $params set to an empty sequence. This\n in turn is the same as the effect of passing an\n output:serialization-parameters element with no child elements.

The $params argument is used to identify a set of\n serialization parameters. These are supplied in the form of an\n output:serialization-parameters element, having the format described in\n .

The final stage of serialization, that is, encoding, is skipped. If the serializer does\n not allow this phase to be skipped, then the sequence of octets returned by the\n serializer is decoded into a string by reversing the character encoding performed in the\n final stage.

If the host language makes serialization an optional feature and\n the implementation does not support serialization, then a dynamic error\n is raised.

The serialization process will raise an error if $arg is an attribute or\n namespace node.

If any serialization error occurs, including the detection of an invalid value for a\n serialization parameter, this results in the fn:serialize call failing with\n a dynamic error.

\n',summary:"

This function serializes the supplied input\n sequence \n $arg as described in ,\n returning the serialized representation of the\n sequence as a string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"serialize",qname:"fn:serialize",signature:"($arg as item()*, $params as element(output:serialization-parameters)?) as xs:string external",description:'

This function serializes the supplied input\n sequence\n $arg as described in ,\n returning the serialized representation of the\n sequence as a string.

This function is deterministic, context-independent, and focus-independent.

The value of $arg acts as the input sequence to the serialization process,\n which starts with sequence normalization.

The single-argument version of this function has the same effect as\n the two-argument version called with $params set to an empty sequence. This\n in turn is the same as the effect of passing an\n output:serialization-parameters element with no child elements.

The $params argument is used to identify a set of\n serialization parameters. These are supplied in the form of an\n output:serialization-parameters element, having the format described in\n .

The final stage of serialization, that is, encoding, is skipped. If the serializer does\n not allow this phase to be skipped, then the sequence of octets returned by the\n serializer is decoded into a string by reversing the character encoding performed in the\n final stage.

If the host language makes serialization an optional feature and\n the implementation does not support serialization, then a dynamic error\n is raised.

The serialization process will raise an error if $arg is an attribute or\n namespace node.

If any serialization error occurs, including the detection of an invalid value for a\n serialization parameter, this results in the fn:serialize call failing with\n a dynamic error.

\n',summary:"

This function serializes the supplied input\n sequence \n $arg as described in ,\n returning the serialized representation of the\n sequence as a string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:""},{name:"params",type:"element(output:serialization-parameters)",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"starts-with",qname:"fn:starts-with",signature:"($arg1 as xs:string?, $arg2 as xs:string?) as xs:boolean external",description:'

Returns true if the string $arg1 contains $arg2 as a\n leading substring, taking collations into account.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations.\n

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri.\n

If the value of $arg1 or $arg2 is the empty sequence, or\n contains only ignorable collation units, it is interpreted as the zero-length\n string.

If the value of $arg2 is the zero-length string, then the function returns\n true. If the value of $arg1 is the zero-length string and\n the value of $arg2 is not the zero-length string, then the function returns\n false.

The collation used by this function is determined according to the rules in .

The function returns an xs:boolean indicating whether or not the value of\n $arg1 starts with a sequence of collation units that provides a\n match to the collation units of $arg2 according to the\n collation that is used.

Match is defined in .

A dynamic error may be raised if the\n specified collation does not support collation units.

\n',summary:"

Returns true if the string $arg1 contains $arg2 as a\n leading substring, taking collations into account.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:string",occurrence:"?",description:""},{name:"arg2",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:3,name:"starts-with",qname:"fn:starts-with",signature:"($arg1 as xs:string?, $arg2 as xs:string?, $collation as xs:string) as xs:boolean external",description:'

Returns true if the string $arg1 contains $arg2 as a\n leading substring, taking collations into account.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations.\n

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri.\n

If the value of $arg1 or $arg2 is the empty sequence, or\n contains only ignorable collation units, it is interpreted as the zero-length\n string.

If the value of $arg2 is the zero-length string, then the function returns\n true. If the value of $arg1 is the zero-length string and\n the value of $arg2 is not the zero-length string, then the function returns\n false.

The collation used by this function is determined according to the rules in .

The function returns an xs:boolean indicating whether or not the value of\n $arg1 starts with a sequence of collation units that provides a\n match to the collation units of $arg2 according to the\n collation that is used.

Match is defined in .

A dynamic error may be raised if the\n specified collation does not support collation units.

\n',summary:"

Returns true if the string $arg1 contains $arg2 as a\n leading substring, taking collations into account.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:string",occurrence:"?",description:""},{name:"arg2",type:"xs:string",occurrence:"?",description:""},{name:"collation",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:0,name:"static-base-uri",qname:"fn:static-base-uri",signature:"() as xs:anyURI? external",description:'

This function returns the value of the Static Base URI property from the static context.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The function returns the value of the Static Base URI property from the static context. If the\n property is absent, the empty sequence is returned.

Components of the static context are discussed in .

XQuery 3.0 and XSLT 3.0 give an implementation freedom to use different base URIs during the\n static analysis phase and the dynamic evaluation phase, that is, for compile-time and run-time resources respectively.\n In this situation, the fn:static-base-uri function should return a URI suitable for locating resources needed\n during dynamic evaluation.

\n',summary:"

This function returns the value of the Static Base URI property from the static context.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:anyURI?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"string-join",qname:"fn:string-join",signature:"($arg1 as xs:string*) as xs:string external",description:'

Returns a string created by concatenating the items in a sequence, with a\n defined separator between adjacent items.

This function is deterministic, context-independent, and focus-independent.

The effect of calling the single-argument version of this function is\n the same as calling the two-argument version with $arg2 set to a\n zero-length string.

The function returns an xs:string created by concatenating the items in the\n sequence $arg1, in order, using the value of $arg2 as a\n separator between adjacent items. If the value of $arg2 is the zero-length\n string, then the members of $arg1 are concatenated without a separator.

If the value of $arg1 is the empty sequence, the function returns the\n zero-length string.

\n',summary:"

Returns a string created by concatenating the items in a sequence, with a\n defined separator between adjacent items.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:string",occurrence:"*",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"string-join",qname:"fn:string-join",signature:"($arg1 as xs:string*, $arg2 as xs:string) as xs:string external",description:'

Returns a string created by concatenating the items in a sequence, with a\n defined separator between adjacent items.

This function is deterministic, context-independent, and focus-independent.

The effect of calling the single-argument version of this function is\n the same as calling the two-argument version with $arg2 set to a\n zero-length string.

The function returns an xs:string created by concatenating the items in the\n sequence $arg1, in order, using the value of $arg2 as a\n separator between adjacent items. If the value of $arg2 is the zero-length\n string, then the members of $arg1 are concatenated without a separator.

If the value of $arg1 is the empty sequence, the function returns the\n zero-length string.

\n',summary:"

Returns a string created by concatenating the items in a sequence, with a\n defined separator between adjacent items.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:string",occurrence:"*",description:""},{name:"arg2",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:0,name:"string-length",qname:"fn:string-length",signature:"() as xs:integer external",description:'

Returns the number of characters in a\n string.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

The function returns an xs:integer equal to the length in characters of the value of $arg.

Calling the zero-argument version of the function is equivalent to calling\n fn:string-length(fn:string(.)).

If the value of $arg is the empty sequence, the function returns the\n xs:integer value zero (0).

If $arg is not specified and the context item is absent, a dynamic error is raised: .

\n',summary:"

Returns the number of characters in a\n string.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:integer",description:""},errors:[]},{isDocumented:!0,arity:1,name:"string-length",qname:"fn:string-length",signature:"($arg as xs:string?) as xs:integer external",description:'

Returns the number of characters in a\n string.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

The function returns an xs:integer equal to the length in characters of the value of $arg.

Calling the zero-argument version of the function is equivalent to calling\n fn:string-length(fn:string(.)).

If the value of $arg is the empty sequence, the function returns the\n xs:integer value zero (0).

If $arg is not specified and the context item is absent, a dynamic error is raised: .

\n',summary:"

Returns the number of characters in a\n string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:integer",description:""},errors:[]},{isDocumented:!0,arity:1,name:"string-to-codepoints",qname:"fn:string-to-codepoints",signature:"($arg as xs:string?) as xs:integer* external",description:'

Returns the sequence of codepoints that\n constitute an xs:string value.

This function is deterministic, context-independent, and focus-independent.

The function returns a sequence of integers, each integer being the Unicode codepoints of the corresponding character in $arg.

If $arg is a zero-length string or the empty sequence, the function returns\n the empty sequence.

The expression fn:string-to-codepoints("Thérèse") returns (84, 104, 233, 114, 232, 115, 101).

\n',summary:"

Returns the sequence of codepoints that\n constitute an xs:string value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:integer*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"string-to-codepoints",qname:"fn:string-to-codepoints",signature:"($arg as xs:string?) as xs:integer* external",description:'

Returns the sequence of codepoints that\n constitute an xs:string value.

This function is deterministic, context-independent, and focus-independent.

The function returns a sequence of integers, each integer being the Unicode codepoints of the corresponding character in $arg.

If $arg is a zero-length string or the empty sequence, the function returns\n the empty sequence.

The expression fn:string-to-codepoints("Thérèse") returns (84, 104, 233, 114, 232, 115, 101).

\n',summary:"

Returns the sequence of codepoints that\n constitute an xs:string value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:integer*",description:""},errors:[]},{isDocumented:!0,arity:0,name:"string",qname:"fn:string",signature:"() as xs:string external",description:'

Returns the value of $arg represented as an\n xs:string.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

In the zero-argument version of the function, $arg defaults to the context\n item. That is, calling fn:string() is equivalent to calling\n fn:string(.).

If $arg is the empty sequence, the function returns the zero-length\n string.

If $arg is a node, the function returns the string-value of the node, as\n obtained using the dm:string-value accessor defined in (see ).

If $arg is an atomic value, the function returns the result of the\n expression $arg cast as xs:string (see ).

A dynamic error is raised by the\n zero-argument version of the function if the context item is absent.

A type error is raised if\n $arg is a function item.

\n',summary:"

Returns the value of $arg represented as an\n xs:string .

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"string",qname:"fn:string",signature:"($arg as item()?) as xs:string external",description:'

Returns the value of $arg represented as an\n xs:string.

The zero-argument form of this function is deterministic, context-dependent, and focus-dependent.

The one-argument form of this function is deterministic, context-independent, and focus-independent.

In the zero-argument version of the function, $arg defaults to the context\n item. That is, calling fn:string() is equivalent to calling\n fn:string(.).

If $arg is the empty sequence, the function returns the zero-length\n string.

If $arg is a node, the function returns the string-value of the node, as\n obtained using the dm:string-value accessor defined in (see ).

If $arg is an atomic value, the function returns the result of the\n expression $arg cast as xs:string (see ).

A dynamic error is raised by the\n zero-argument version of the function if the context item is absent.

A type error is raised if\n $arg is a function item.

\n',summary:"

Returns the value of $arg represented as an\n xs:string .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"subsequence",qname:"fn:subsequence",signature:"($sourceSeq as item()*, $startingLoc as xs:double) as item()* external",description:'

Returns the contiguous sequence of items in the value of\n $sourceSeq beginning at the position indicated by the value of\n $startingLoc and continuing for the number of items indicated by the\n value of $length.

This function is deterministic, context-independent, and focus-independent.

In the two-argument case, returns:

$sourceSeq[fn:round($startingLoc) le position()]

In the three-argument case, returns:

$sourceSeq[fn:round($startingLoc) le position()\n and position() lt fn:round($startingLoc) + fn:round($length)]

For detailed type semantics, see [Formal Semantics].

The first item of a sequence is located at position 1, not position 0.

If $sourceSeq is the empty sequence, the empty sequence is returned.

If $startingLoc is zero or negative, the subsequence includes items from\n the beginning of the $sourceSeq.

If $length is not specified, the subsequence includes items to the end of\n $sourceSeq.

If $length is greater than the number of items in the value of\n $sourceSeq following $startingLoc, the subsequence includes\n items to the end of $sourceSeq.

As an exception to the previous two notes, if\n $startingLoc is -INF and $length is\n +INF, then fn:round($startingLoc) + fn:round($length) is\n NaN; since position() lt NaN is always false, the result is\n an empty sequence.

The reason the function accepts arguments of type xs:double is that many\n computations on untyped data return an xs:double result; and the reason for\n the rounding rules is to compensate for any imprecision in these floating-point\n computations.

\n',summary:"

Returns the contiguous sequence of items in the value of\n $sourceSeq beginning at the position indicated by the value of\n $startingLoc and continuing for the number of items indicated by the\n value of $length .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sourceSeq",type:"item()",occurrence:"*",description:""},{name:"startingLoc",type:"xs:double",occurrence:null,description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"subsequence",qname:"fn:subsequence",signature:"($sourceSeq as item()*, $startingLoc as xs:double, $length as xs:double) as item()* external",description:'

Returns the contiguous sequence of items in the value of\n $sourceSeq beginning at the position indicated by the value of\n $startingLoc and continuing for the number of items indicated by the\n value of $length.

This function is deterministic, context-independent, and focus-independent.

In the two-argument case, returns:

$sourceSeq[fn:round($startingLoc) le position()]

In the three-argument case, returns:

$sourceSeq[fn:round($startingLoc) le position()\n and position() lt fn:round($startingLoc) + fn:round($length)]

For detailed type semantics, see [Formal Semantics].

The first item of a sequence is located at position 1, not position 0.

If $sourceSeq is the empty sequence, the empty sequence is returned.

If $startingLoc is zero or negative, the subsequence includes items from\n the beginning of the $sourceSeq.

If $length is not specified, the subsequence includes items to the end of\n $sourceSeq.

If $length is greater than the number of items in the value of\n $sourceSeq following $startingLoc, the subsequence includes\n items to the end of $sourceSeq.

As an exception to the previous two notes, if\n $startingLoc is -INF and $length is\n +INF, then fn:round($startingLoc) + fn:round($length) is\n NaN; since position() lt NaN is always false, the result is\n an empty sequence.

The reason the function accepts arguments of type xs:double is that many\n computations on untyped data return an xs:double result; and the reason for\n the rounding rules is to compensate for any imprecision in these floating-point\n computations.

\n',summary:"

Returns the contiguous sequence of items in the value of\n $sourceSeq beginning at the position indicated by the value of\n $startingLoc and continuing for the number of items indicated by the\n value of $length .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sourceSeq",type:"item()",occurrence:"*",description:""},{name:"startingLoc",type:"xs:double",occurrence:null,description:""},{name:"length",type:"xs:double",occurrence:null,description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"substring-after",qname:"fn:substring-after",signature:"($arg1 as xs:string?, $arg2 as xs:string?) as xs:string external",description:'

Returns the part of $arg1 that follows the first occurrence of\n $arg2, taking collations into account.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations.\n

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri.\n

If the value of $arg1 or $arg2 is the empty sequence, or\n contains only ignorable collation units, it is interpreted as the zero-length\n string.

If the value of $arg2 is the zero-length string, then the function returns\n the value of $arg1.

If the value of $arg1 does not contain a string that is equal to the value\n of $arg2, then the function returns the zero-length string.

The collation used by this function is determined according to the rules in .

The function returns the substring of the value of $arg1 that follows in\n the value of $arg1 the first occurrence of a sequence of collation units\n that provides a minimal match to the collation units of $arg2\n according to the collation that is used.

Minimal match is defined in .

A dynamic error may be raised if the\n specified collation does not support collation units.

\n',summary:"

Returns the part of $arg1 that follows the first occurrence of\n $arg2 , taking collations into account.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:string",occurrence:"?",description:""},{name:"arg2",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:3,name:"substring-after",qname:"fn:substring-after",signature:"($arg1 as xs:string?, $arg2 as xs:string?, $collation as xs:string) as xs:string external",description:'

Returns the part of $arg1 that follows the first occurrence of\n $arg2, taking collations into account.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations.\n

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri.\n

If the value of $arg1 or $arg2 is the empty sequence, or\n contains only ignorable collation units, it is interpreted as the zero-length\n string.

If the value of $arg2 is the zero-length string, then the function returns\n the value of $arg1.

If the value of $arg1 does not contain a string that is equal to the value\n of $arg2, then the function returns the zero-length string.

The collation used by this function is determined according to the rules in .

The function returns the substring of the value of $arg1 that follows in\n the value of $arg1 the first occurrence of a sequence of collation units\n that provides a minimal match to the collation units of $arg2\n according to the collation that is used.

Minimal match is defined in .

A dynamic error may be raised if the\n specified collation does not support collation units.

\n',summary:"

Returns the part of $arg1 that follows the first occurrence of\n $arg2 , taking collations into account.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:string",occurrence:"?",description:""},{name:"arg2",type:"xs:string",occurrence:"?",description:""},{name:"collation",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"substring-before",qname:"fn:substring-before",signature:"($arg1 as xs:string?, $arg2 as xs:string?) as xs:string external",description:'

Returns the part of $arg1 that precedes the first occurrence of\n $arg2, taking collations into account.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations.\n

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri.\n

If the value of $arg1 or $arg2 is the empty sequence, or\n contains only ignorable collation units, it is interpreted as the zero-length\n string.

If the value of $arg2 is the zero-length string, then the function returns\n the zero-length string.

If the value of $arg1 does not contain a string that is equal to the value\n of $arg2, then the function returns the zero-length string.

The collation used by this function is determined according to the rules in .

The function returns the substring of the value of $arg1 that precedes in\n the value of $arg1 the first occurrence of a sequence of collation units\n that provides a minimal match to the collation units of $arg2\n according to the collation that is used.

Minimal match is defined in .

A dynamic error may be raised if the\n specified collation does not support collation units.

\n',summary:"

Returns the part of $arg1 that precedes the first occurrence of\n $arg2 , taking collations into account.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:string",occurrence:"?",description:""},{name:"arg2",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:3,name:"substring-before",qname:"fn:substring-before",signature:"($arg1 as xs:string?, $arg2 as xs:string?, $collation as xs:string) as xs:string external",description:'

Returns the part of $arg1 that precedes the first occurrence of\n $arg2, taking collations into account.

The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations.\n

The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on\n collations, and static base uri.\n

If the value of $arg1 or $arg2 is the empty sequence, or\n contains only ignorable collation units, it is interpreted as the zero-length\n string.

If the value of $arg2 is the zero-length string, then the function returns\n the zero-length string.

If the value of $arg1 does not contain a string that is equal to the value\n of $arg2, then the function returns the zero-length string.

The collation used by this function is determined according to the rules in .

The function returns the substring of the value of $arg1 that precedes in\n the value of $arg1 the first occurrence of a sequence of collation units\n that provides a minimal match to the collation units of $arg2\n according to the collation that is used.

Minimal match is defined in .

A dynamic error may be raised if the\n specified collation does not support collation units.

\n',summary:"

Returns the part of $arg1 that precedes the first occurrence of\n $arg2 , taking collations into account.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:string",occurrence:"?",description:""},{name:"arg2",type:"xs:string",occurrence:"?",description:""},{name:"collation",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"substring",qname:"fn:substring",signature:"($sourceString as xs:string?, $start as xs:double) as xs:string external",description:'

Returns the portion of the value of $sourceString beginning at the\n position indicated by the value of $start and continuing for the number of\n characters indicated by the value of\n $length.

This function is deterministic, context-independent, and focus-independent.

If the value of $sourceString is the empty sequence, the function returns\n the zero-length string.

Otherwise, the function returns a string comprising those characters of $sourceString whose index position (counting\n from one) is greater than or equal to the value of $start (rounded to an\n integer), and (if $length is specified) less than the sum of\n $start and $length (both rounded to integers).

The characters returned do not extend beyond $sourceString. If\n $start is zero or negative, only those characters in positions greater\n than zero are returned.

More specifically, the three argument version of the function returns the characters in\n $sourceString whose position $p satisfies:

\n fn:round($start) <= $p < fn:round($start) + fn:round($length)\n

The two argument version of the function assumes that $length is infinite\n and thus returns the characters in\n $sourceString whose position $p satisfies:

\n fn:round($start) <= $p\n

In the above computations, the rules for op:numeric-less-than and\n op:numeric-greater-than apply.

The first character of a string is located at position 1, not position 0.

\n',summary:"

Returns the portion of the value of $sourceString beginning at the\n position indicated by the value of $start and continuing for the number of\n characters indicated by the value of\n $length .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sourceString",type:"xs:string",occurrence:"?",description:""},{name:"start",type:"xs:double",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:3,name:"substring",qname:"fn:substring",signature:"($sourceString as xs:string?, $start as xs:double, $length as xs:double) as xs:string external",description:'

Returns the portion of the value of $sourceString beginning at the\n position indicated by the value of $start and continuing for the number of\n characters indicated by the value of\n $length.

This function is deterministic, context-independent, and focus-independent.

If the value of $sourceString is the empty sequence, the function returns\n the zero-length string.

Otherwise, the function returns a string comprising those characters of $sourceString whose index position (counting\n from one) is greater than or equal to the value of $start (rounded to an\n integer), and (if $length is specified) less than the sum of\n $start and $length (both rounded to integers).

The characters returned do not extend beyond $sourceString. If\n $start is zero or negative, only those characters in positions greater\n than zero are returned.

More specifically, the three argument version of the function returns the characters in\n $sourceString whose position $p satisfies:

\n fn:round($start) <= $p < fn:round($start) + fn:round($length)\n

The two argument version of the function assumes that $length is infinite\n and thus returns the characters in\n $sourceString whose position $p satisfies:

\n fn:round($start) <= $p\n

In the above computations, the rules for op:numeric-less-than and\n op:numeric-greater-than apply.

The first character of a string is located at position 1, not position 0.

\n',summary:"

Returns the portion of the value of $sourceString beginning at the\n position indicated by the value of $start and continuing for the number of\n characters indicated by the value of\n $length .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sourceString",type:"xs:string",occurrence:"?",description:""},{name:"start",type:"xs:double",occurrence:null,description:""},{name:"length",type:"xs:double",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"sum",qname:"fn:sum",signature:"($arg as xs:anyAtomicType*) as xs:anyAtomicType external",description:'

Returns a value obtained by adding together the values in\n $arg.

This function is deterministic, context-independent, and focus-independent.

Any values of type xs:untypedAtomic in $arg are cast to\n xs:double. The items in the resulting sequence may be reordered in an\n arbitrary order. The resulting sequence is referred to below as the converted\n sequence.

If the converted sequence is empty, then the single-argument form of the function\n returns the xs:integer value 0; the two-argument form returns\n the value of the argument $zero.

If the converted sequence contains the value NaN, NaN is\n returned.

All items in $arg must be numeric or derived from a single base type. In\n addition, the type must support addition. Duration values must either all be\n xs:yearMonthDuration values or must all be\n xs:dayTimeDuration values. For numeric values, the numeric promotion\n rules defined in are used to promote all values to a single\n common type. The sum of a sequence of integers will therefore be an integer, while the\n sum of a numeric sequence that includes at least one xs:double will be an\n xs:double.

The result of the function, using the second signature, is the result of the\n expression:

\n if (fn:count($c) eq 0) then\n $zero\n else if (fn:count($c) eq 1) then\n $c[1]\n else\n $c[1] + fn:sum(subsequence($c, 2))

where $c is the converted sequence.

The result of the function, using the first signature, is the result of the expression:\n fn:sum($arg, 0).

For detailed type semantics, see [Formal Semantics].

A type error is raised if the input sequence contains\n items of incompatible types, as described above.

\n',summary:"

Returns a value obtained by adding together the values in\n $arg .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:"*",description:""}],returns:{type:"xs:anyAtomicType",description:""},errors:[]},{isDocumented:!0,arity:2,name:"sum",qname:"fn:sum",signature:"($arg as xs:anyAtomicType*, $zero as xs:anyAtomicType?) as xs:anyAtomicType? external",description:'

Returns a value obtained by adding together the values in\n $arg.

This function is deterministic, context-independent, and focus-independent.

Any values of type xs:untypedAtomic in $arg are cast to\n xs:double. The items in the resulting sequence may be reordered in an\n arbitrary order. The resulting sequence is referred to below as the converted\n sequence.

If the converted sequence is empty, then the single-argument form of the function\n returns the xs:integer value 0; the two-argument form returns\n the value of the argument $zero.

If the converted sequence contains the value NaN, NaN is\n returned.

All items in $arg must be numeric or derived from a single base type. In\n addition, the type must support addition. Duration values must either all be\n xs:yearMonthDuration values or must all be\n xs:dayTimeDuration values. For numeric values, the numeric promotion\n rules defined in are used to promote all values to a single\n common type. The sum of a sequence of integers will therefore be an integer, while the\n sum of a numeric sequence that includes at least one xs:double will be an\n xs:double.

The result of the function, using the second signature, is the result of the\n expression:

\n if (fn:count($c) eq 0) then\n $zero\n else if (fn:count($c) eq 1) then\n $c[1]\n else\n $c[1] + fn:sum(subsequence($c, 2))

where $c is the converted sequence.

The result of the function, using the first signature, is the result of the expression:\n fn:sum($arg, 0).

For detailed type semantics, see [Formal Semantics].

A type error is raised if the input sequence contains\n items of incompatible types, as described above.

\n',summary:"

Returns a value obtained by adding together the values in\n $arg .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:"*",description:""},{name:"zero",type:"xs:anyAtomicType",occurrence:"?",description:""}],returns:{type:"xs:anyAtomicType?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"tail",qname:"fn:tail",signature:"($arg as item()*) as item()* external",description:'

Returns all but the first item in a sequence.

This function is deterministic, context-independent, and focus-independent.

The function returns the value of the expression subsequence($arg, 2)

If $arg is the empty sequence, or a sequence containing a single item, then\n the empty sequence is returned.

\n',summary:"

Returns all but the first item in a sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"timezone-from-date",qname:"fn:timezone-from-date",signature:"($arg as xs:date?) as xs:dayTimeDuration? external",description:'

Returns the timezone component of an xs:date.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns the timezone component of $arg, if any. If\n $arg has a timezone component, then the result is an\n xs:dayTimeDuration that indicates deviation from UTC; its value may\n range from +14:00 to -14:00 hours, both inclusive. If $arg has no timezone\n component, the result is the empty sequence.

The expression fn:timezone-from-date(xs:date("1999-05-31-05:00")) returns xs:dayTimeDuration("-PT5H").

The expression fn:timezone-from-date(xs:date("2000-06-12Z")) returns xs:dayTimeDuration("PT0S").

\n',summary:"

Returns the timezone component of an xs:date .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:date",occurrence:"?",description:""}],returns:{type:"xs:dayTimeDuration?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"timezone-from-dateTime",qname:"fn:timezone-from-dateTime",signature:"($arg as xs:dateTime?) as xs:dayTimeDuration? external",description:'

Returns the timezone component of an xs:dateTime.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns the timezone component of $arg, if any. If\n $arg has a timezone component, then the result is an\n xs:dayTimeDuration that indicates deviation from UTC; its value may\n range from +14:00 to -14:00 hours, both inclusive. If $arg has no timezone\n component, the result is the empty sequence.

The expression fn:timezone-from-dateTime(xs:dateTime("1999-05-31T13:20:00-05:00")) returns xs:dayTimeDuration("-PT5H").

The expression fn:timezone-from-dateTime(xs:dateTime("2000-06-12T13:20:00Z")) returns xs:dayTimeDuration("PT0S").

The expression fn:timezone-from-dateTime(xs:dateTime("2004-08-27T00:00:00")) returns ().

\n',summary:"

Returns the timezone component of an xs:dateTime .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:dateTime",occurrence:"?",description:""}],returns:{type:"xs:dayTimeDuration?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"timezone-from-time",qname:"fn:timezone-from-time",signature:"($arg as xs:time?) as xs:dayTimeDuration? external",description:'

Returns the timezone component of an xs:time.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns the timezone component of $arg, if any. If\n $arg has a timezone component, then the result is an\n xs:dayTimeDuration that indicates deviation from UTC; its value may\n range from +14:00 to -14:00 hours, both inclusive. If $arg has no timezone\n component, the result is the empty sequence.

The expression fn:timezone-from-time(xs:time("13:20:00-05:00")) returns xs:dayTimeDuration("-PT5H").

The expression fn:timezone-from-time(xs:time("13:20:00")) returns ().

\n',summary:"

Returns the timezone component of an xs:time .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:time",occurrence:"?",description:""}],returns:{type:"xs:dayTimeDuration?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"tokenize",qname:"fn:tokenize",signature:"($input as xs:string?, $pattern as xs:string) as xs:string* external",description:'

Returns a sequence of strings constructed by splitting the input wherever a\n separator is found; the separator is any substring that matches a given regular\n expression.

This function is deterministic, context-independent, and focus-independent.

The effect of calling the first version of this function (omitting the argument\n $flags) is the same as the effect of calling the second version with the\n $flags argument set to a zero-length string. Flags are defined in\n .

The $flags argument is interpreted in the same way as for the\n fn:matches function.

If $input is the empty sequence, or if $input is the\n zero-length string, the function returns the empty sequence.

The function returns a sequence of strings formed by breaking the $input\n string into a sequence of strings, treating any substring that matches\n $pattern as a separator. The separators themselves are not returned.

If a separator occurs at the start of the $input string, the result\n sequence will start with a zero-length string. Zero-length strings will also occur in\n the result sequence if a separator occurs at the end of the $input string,\n or if two adjacent substrings match the supplied $pattern.

If two alternatives within the supplied $pattern both match at the same\n position in the $input string, then the match that is chosen is the first.\n For example:

fn:tokenize("abracadabra", "(ab)|(a)") returns ("", "r", "c", "d", "r", "")

A dynamic error is raised if the value of\n $pattern is invalid according to the rules described in section .

A dynamic error is raised if the value of\n $flags is invalid according to the rules described in section .

A dynamic error is raised if the supplied\n $pattern matches a zero-length string, that is, if fn:matches("",\n $pattern, $flags) returns true.

\n',summary:"

Returns a sequence of strings constructed by splitting the input wherever a\n separator is found; the separator is any substring that matches a given regular\n expression.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"input",type:"xs:string",occurrence:"?",description:""},{name:"pattern",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"tokenize",qname:"fn:tokenize",signature:"($input as xs:string?, $pattern as xs:string, $flags as xs:string) as xs:string* external",description:'

Returns a sequence of strings constructed by splitting the input wherever a\n separator is found; the separator is any substring that matches a given regular\n expression.

This function is deterministic, context-independent, and focus-independent.

The effect of calling the first version of this function (omitting the argument\n $flags) is the same as the effect of calling the second version with the\n $flags argument set to a zero-length string. Flags are defined in\n .

The $flags argument is interpreted in the same way as for the\n fn:matches function.

If $input is the empty sequence, or if $input is the\n zero-length string, the function returns the empty sequence.

The function returns a sequence of strings formed by breaking the $input\n string into a sequence of strings, treating any substring that matches\n $pattern as a separator. The separators themselves are not returned.

If a separator occurs at the start of the $input string, the result\n sequence will start with a zero-length string. Zero-length strings will also occur in\n the result sequence if a separator occurs at the end of the $input string,\n or if two adjacent substrings match the supplied $pattern.

If two alternatives within the supplied $pattern both match at the same\n position in the $input string, then the match that is chosen is the first.\n For example:

fn:tokenize("abracadabra", "(ab)|(a)") returns ("", "r", "c", "d", "r", "")

A dynamic error is raised if the value of\n $pattern is invalid according to the rules described in section .

A dynamic error is raised if the value of\n $flags is invalid according to the rules described in section .

A dynamic error is raised if the supplied\n $pattern matches a zero-length string, that is, if fn:matches("",\n $pattern, $flags) returns true.

\n',summary:"

Returns a sequence of strings constructed by splitting the input wherever a\n separator is found; the separator is any substring that matches a given regular\n expression.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"input",type:"xs:string",occurrence:"?",description:""},{name:"pattern",type:"xs:string",occurrence:null,description:""},{name:"flags",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"trace",qname:"fn:trace",signature:"($value as item()*, $label as xs:string) as item()* external",description:'

Provides an execution trace intended to be used in debugging queries.

This function is deterministic, context-independent, and focus-independent.

The function returns the value of $value, unchanged.

In addition, the values of $value, converted to an xs:string,\n and $label\n may be directed to a trace data set. The destination of the trace\n output is . The format of the trace output is\n . The ordering of output from calls of the\n fn:trace function is .

Consider a situation in which a user wants to investigate the actual value passed to\n a function. Assume that in a particular execution, $v is an\n xs:decimal with value 124.84. Writing fn:trace($v,\n \'the value of $v is:\') will put the strings "124.84" and\n "the value of $v is:" in the trace data set in implementation\n dependent order.

\n',summary:"

Provides an execution trace intended to be used in debugging queries.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"item()",occurrence:"*",description:""},{name:"label",type:"xs:string",occurrence:null,description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"translate",qname:"fn:translate",signature:"($arg as xs:string?, $mapString as xs:string, $transString as xs:string) as xs:string external",description:'

Returns the value of $arg modified by replacing or removing\n individual characters.

This function is deterministic, context-independent, and focus-independent.

If the value of $arg is the empty sequence, the function returns the\n zero-length string.

Otherwise, the function returns a result string constructed by processing each character in the value of $arg, in order,\n according to the following rules:

If the character does not appear in the value of $mapString then it\n is added to the result string unchanged.

If the character first appears in the value of $mapString at some\n position M, where the value of $transString is\n M or more characters in length, then the character at position\n M in $transString is added to the result string.

If the character first appears in the value of $mapString at some\n position M, where the value of $transString is less than\n M characters in length, then the character is omitted from the\n result string.

If $mapString is the zero-length string then the function returns\n $arg unchanged.

If a character occurs more than once in $mapString, then the first\n occurrence determines the action taken.

If $transString is longer than $mapString, the excess\n characters are ignored.

\n',summary:"

Returns the value of $arg modified by replacing or removing\n individual characters.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""},{name:"mapString",type:"xs:string",occurrence:null,description:""},{name:"transString",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:0,name:"true",qname:"fn:true",signature:"() as xs:boolean external",description:'

Returns the xs:boolean value true.

This function is deterministic, context-independent, and focus-independent.

The result is equivalent to xs:boolean("1").

The expression fn:true() returns xs:boolean(1).

\n',summary:"

Returns the xs:boolean value true .

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"unordered",qname:"fn:unordered",signature:"($sourceSeq as item()*) as item()* external",description:'

Returns the items of $sourceSeq in an order.

This function is deterministic, context-independent, and focus-independent.

The function returns the items of $sourceSeq in an order.

Query optimizers may be able to do a better job if the order of the output sequence is\n not specified. For example, when retrieving prices from a purchase order, if an index\n exists on prices, it may be more efficient to return the prices in index order rather\n than in document order.

\n',summary:"

Returns the items of $sourceSeq in an order.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sourceSeq",type:"item()",occurrence:"*",description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"unparsed-text-available",qname:"fn:unparsed-text-available",signature:"($href as xs:string?) as xs:boolean external",description:'

Because errors in evaluating the fn:unparsed-text function are\n non-recoverable, these two functions are provided to allow an application to determine\n whether a call with particular arguments would succeed.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The fn:unparsed-text-available function determines whether a call\n on the fn:unparsed-text function with identical arguments would\n return a string.

If the first argument is an empty sequence, the function returns false. If the second\n argument is an empty sequence, the function behaves as if the second argument were\n omitted.

In other cases, the function returns true if a call on\n fn:unparsed-text with the same arguments would succeed, and\n false if a call on fn:unparsed-text with the same arguments would\n fail with a non-recoverable dynamic error.

The functions fn:unparsed-text and\n fn:unparsed-text-available have the same requirement for\n determinism as the functions\n fn:doc and fn:doc-available. This means that unless the\n user has explicitly stated a requirement for a reduced level of determinism, either of\n these functions if called twice with the same arguments during the course of a\n transformation must return the same results each time; moreover, the\n results of a call on fn:unparsed-text-available\n must be consistent with the results of a subsequent call on\n unparsed-text with the same arguments.

This requires that the unparsed-text-available function should\n actually attempt to read the resource identified by the URI, and check that it is\n correctly encoded and contains no characters that are invalid in XML. Implementations\n may avoid the cost of repeating these checks for example by caching the validated\n contents of the resource, to anticipate a subsequent call on the\n unparsed-text\n or unparsed-text-lines\n function. Alternatively, implementations may be able to rewrite an expression\n such as if (unparsed-text-available(A)) then unparsed-text(A) else ... to\n generate a single call internally.

\n',summary:"

Because errors in evaluating the fn:unparsed-text function are\n non-recoverable, these two functions are provided to allow an application to determine\n whether a call with particular arguments would succeed.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"href",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"unparsed-text-available",qname:"fn:unparsed-text-available",signature:"($href as xs:string?) as xs:boolean external",description:'

Because errors in evaluating the fn:unparsed-text function are\n non-recoverable, these two functions are provided to allow an application to determine\n whether a call with particular arguments would succeed.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The fn:unparsed-text-available function determines whether a call\n on the fn:unparsed-text function with identical arguments would\n return a string.

If the first argument is an empty sequence, the function returns false. If the second\n argument is an empty sequence, the function behaves as if the second argument were\n omitted.

In other cases, the function returns true if a call on\n fn:unparsed-text with the same arguments would succeed, and\n false if a call on fn:unparsed-text with the same arguments would\n fail with a non-recoverable dynamic error.

The functions fn:unparsed-text and\n fn:unparsed-text-available have the same requirement for\n determinism as the functions\n fn:doc and fn:doc-available. This means that unless the\n user has explicitly stated a requirement for a reduced level of determinism, either of\n these functions if called twice with the same arguments during the course of a\n transformation must return the same results each time; moreover, the\n results of a call on fn:unparsed-text-available\n must be consistent with the results of a subsequent call on\n unparsed-text with the same arguments.

This requires that the unparsed-text-available function should\n actually attempt to read the resource identified by the URI, and check that it is\n correctly encoded and contains no characters that are invalid in XML. Implementations\n may avoid the cost of repeating these checks for example by caching the validated\n contents of the resource, to anticipate a subsequent call on the\n unparsed-text\n or unparsed-text-lines\n function. Alternatively, implementations may be able to rewrite an expression\n such as if (unparsed-text-available(A)) then unparsed-text(A) else ... to\n generate a single call internally.

\n',summary:"

Because errors in evaluating the fn:unparsed-text function are\n non-recoverable, these two functions are provided to allow an application to determine\n whether a call with particular arguments would succeed.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"href",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"unparsed-text-available",qname:"fn:unparsed-text-available",signature:"($href as xs:string?, $encoding as xs:string) as xs:boolean external",description:'

Because errors in evaluating the fn:unparsed-text function are\n non-recoverable, these two functions are provided to allow an application to determine\n whether a call with particular arguments would succeed.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The fn:unparsed-text-available function determines whether a call\n on the fn:unparsed-text function with identical arguments would\n return a string.

If the first argument is an empty sequence, the function returns false. If the second\n argument is an empty sequence, the function behaves as if the second argument were\n omitted.

In other cases, the function returns true if a call on\n fn:unparsed-text with the same arguments would succeed, and\n false if a call on fn:unparsed-text with the same arguments would\n fail with a non-recoverable dynamic error.

The functions fn:unparsed-text and\n fn:unparsed-text-available have the same requirement for\n determinism as the functions\n fn:doc and fn:doc-available. This means that unless the\n user has explicitly stated a requirement for a reduced level of determinism, either of\n these functions if called twice with the same arguments during the course of a\n transformation must return the same results each time; moreover, the\n results of a call on fn:unparsed-text-available\n must be consistent with the results of a subsequent call on\n unparsed-text with the same arguments.

This requires that the unparsed-text-available function should\n actually attempt to read the resource identified by the URI, and check that it is\n correctly encoded and contains no characters that are invalid in XML. Implementations\n may avoid the cost of repeating these checks for example by caching the validated\n contents of the resource, to anticipate a subsequent call on the\n unparsed-text\n or unparsed-text-lines\n function. Alternatively, implementations may be able to rewrite an expression\n such as if (unparsed-text-available(A)) then unparsed-text(A) else ... to\n generate a single call internally.

\n',summary:"

Because errors in evaluating the fn:unparsed-text function are\n non-recoverable, these two functions are provided to allow an application to determine\n whether a call with particular arguments would succeed.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"href",type:"xs:string",occurrence:"?",description:""},{name:"encoding",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"unparsed-text-available",qname:"fn:unparsed-text-available",signature:"($href as xs:string?, $encoding as xs:string) as xs:boolean external",description:'

Because errors in evaluating the fn:unparsed-text function are\n non-recoverable, these two functions are provided to allow an application to determine\n whether a call with particular arguments would succeed.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The fn:unparsed-text-available function determines whether a call\n on the fn:unparsed-text function with identical arguments would\n return a string.

If the first argument is an empty sequence, the function returns false. If the second\n argument is an empty sequence, the function behaves as if the second argument were\n omitted.

In other cases, the function returns true if a call on\n fn:unparsed-text with the same arguments would succeed, and\n false if a call on fn:unparsed-text with the same arguments would\n fail with a non-recoverable dynamic error.

The functions fn:unparsed-text and\n fn:unparsed-text-available have the same requirement for\n determinism as the functions\n fn:doc and fn:doc-available. This means that unless the\n user has explicitly stated a requirement for a reduced level of determinism, either of\n these functions if called twice with the same arguments during the course of a\n transformation must return the same results each time; moreover, the\n results of a call on fn:unparsed-text-available\n must be consistent with the results of a subsequent call on\n unparsed-text with the same arguments.

This requires that the unparsed-text-available function should\n actually attempt to read the resource identified by the URI, and check that it is\n correctly encoded and contains no characters that are invalid in XML. Implementations\n may avoid the cost of repeating these checks for example by caching the validated\n contents of the resource, to anticipate a subsequent call on the\n unparsed-text\n or unparsed-text-lines\n function. Alternatively, implementations may be able to rewrite an expression\n such as if (unparsed-text-available(A)) then unparsed-text(A) else ... to\n generate a single call internally.

\n',summary:"

Because errors in evaluating the fn:unparsed-text function are\n non-recoverable, these two functions are provided to allow an application to determine\n whether a call with particular arguments would succeed.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"href",type:"xs:string",occurrence:"?",description:""},{name:"encoding",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"unparsed-text-lines",qname:"fn:unparsed-text-lines",signature:"($href as xs:string?) as xs:string* external",description:'

The fn:unparsed-text-lines function reads an external resource (for\n example, a file) and returns its contents as a sequence of strings, one for each line of\n text in the string representation of the resource.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The unparsed-text-lines function reads an external resource (for example, a\n file) and returns its string representation as a sequence of strings, separated at newline\n boundaries.

The result of the single-argument function is the same as the result of the expression\n fn:tokenize(fn:unparsed-text($href), \'\\r\\n|\\r|\\n\')[not(position()=last() and\n .=\'\')]. The result of the two-argument function is the same as the result of\n the expression fn:tokenize(fn:unparsed-text($href, $encoding),\n \'\\r\\n|\\r|\\n\'))[not(position()=last() and .=\'\')].

The result is a thus a sequence of strings containing the text of the resource retrieved\n using the URI, each string representing one line of text. Lines are separated by one of\n the sequences x0A, x0D, or x0Dx0A. The characters representing the newline are not\n included in the returned strings. If there are two adjacent newline sequences, a\n zero-length string will be returned to represent the empty line; but if the external\n resource ends with a newline sequence, no zero-length string will be returned as the\n last item in the result.

Error conditions are the same as for the fn:unparsed-text function.

\n',summary:"

The fn:unparsed-text-lines function reads an external resource (for\n example, a file) and returns its contents as a sequence of strings, one for each line of\n text in the string representation of the resource.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"href",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"unparsed-text-lines",qname:"fn:unparsed-text-lines",signature:"($href as xs:string?, $encoding as xs:string) as xs:string* external",description:'

The fn:unparsed-text-lines function reads an external resource (for\n example, a file) and returns its contents as a sequence of strings, one for each line of\n text in the string representation of the resource.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The unparsed-text-lines function reads an external resource (for example, a\n file) and returns its string representation as a sequence of strings, separated at newline\n boundaries.

The result of the single-argument function is the same as the result of the expression\n fn:tokenize(fn:unparsed-text($href), \'\\r\\n|\\r|\\n\')[not(position()=last() and\n .=\'\')]. The result of the two-argument function is the same as the result of\n the expression fn:tokenize(fn:unparsed-text($href, $encoding),\n \'\\r\\n|\\r|\\n\'))[not(position()=last() and .=\'\')].

The result is a thus a sequence of strings containing the text of the resource retrieved\n using the URI, each string representing one line of text. Lines are separated by one of\n the sequences x0A, x0D, or x0Dx0A. The characters representing the newline are not\n included in the returned strings. If there are two adjacent newline sequences, a\n zero-length string will be returned to represent the empty line; but if the external\n resource ends with a newline sequence, no zero-length string will be returned as the\n last item in the result.

Error conditions are the same as for the fn:unparsed-text function.

\n',summary:"

The fn:unparsed-text-lines function reads an external resource (for\n example, a file) and returns its contents as a sequence of strings, one for each line of\n text in the string representation of the resource.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"href",type:"xs:string",occurrence:"?",description:""},{name:"encoding",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"unparsed-text-lines",qname:"fn:unparsed-text-lines",signature:"($href as xs:string?, $encoding as xs:string) as xs:string* external",description:'

The fn:unparsed-text-lines function reads an external resource (for\n example, a file) and returns its contents as a sequence of strings, one for each line of\n text in the string representation of the resource.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The unparsed-text-lines function reads an external resource (for example, a\n file) and returns its string representation as a sequence of strings, separated at newline\n boundaries.

The result of the single-argument function is the same as the result of the expression\n fn:tokenize(fn:unparsed-text($href), \'\\r\\n|\\r|\\n\')[not(position()=last() and\n .=\'\')]. The result of the two-argument function is the same as the result of\n the expression fn:tokenize(fn:unparsed-text($href, $encoding),\n \'\\r\\n|\\r|\\n\'))[not(position()=last() and .=\'\')].

The result is a thus a sequence of strings containing the text of the resource retrieved\n using the URI, each string representing one line of text. Lines are separated by one of\n the sequences x0A, x0D, or x0Dx0A. The characters representing the newline are not\n included in the returned strings. If there are two adjacent newline sequences, a\n zero-length string will be returned to represent the empty line; but if the external\n resource ends with a newline sequence, no zero-length string will be returned as the\n last item in the result.

Error conditions are the same as for the fn:unparsed-text function.

\n',summary:"

The fn:unparsed-text-lines function reads an external resource (for\n example, a file) and returns its contents as a sequence of strings, one for each line of\n text in the string representation of the resource.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"href",type:"xs:string",occurrence:"?",description:""},{name:"encoding",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"unparsed-text",qname:"fn:unparsed-text",signature:"($href as xs:string?) as xs:string? external",description:'

The fn:unparsed-text function reads an external resource (for example, a\n file) and returns a string representation of the resource.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The $href argument must be a string in the form of a URI\n reference, which must contain no fragment identifier, and\n must identify a resource\n for which a string representation is available. If the URI is a\n relative URI reference, then it is resolved relative to the\n Static Base URI property from the static context.

The mapping of URIs to the string representation of a resource is the mapping defined\n in the available text resources\n component of the dynamic context.

If the value of the $href argument is an empty sequence, the function\n returns an empty sequence.

The $encoding argument, if present, is the name of an encoding. The values\n for this attribute follow the same rules as for the encoding attribute in\n an XML declaration. The only values which every implementation is required to recognize are\n utf-8 and utf-16.

The encoding of the external resource is determined as follows:

external encoding information is used if available, otherwise

if the media type of the resource is text/xml or\n application/xml (see ), or if it matches\n the conventions text/*+xml or application/*+xml (see\n and/or its successors), then the encoding is recognized\n as specified in , otherwise

the value of the $encoding argument is used if present, otherwise

the processor may use implementation-defined heuristics to determine the likely encoding,\n otherwise

UTF-8 is assumed.

The result of the function is a string containing the\n string representation of the resource retrieved\n using the URI.

A dynamic error is raised if $href\n contains a fragment identifier, or if it cannot be used to retrieve the\n string representation of a resource.

A dynamic error is raised if the value\n of the $encoding argument is not a valid encoding name, if the processor does not support the specified encoding,\n if the string representation of the retrieved\n resource contains octets that cannot be decoded into Unicode characters using the specified encoding, or if the resulting characters\n are not permitted XML characters.

A dynamic error is raised if\n $encoding is absent and the processor cannot infer the encoding using external information and the\n encoding is not UTF-8.

\n',summary:"

The fn:unparsed-text function reads an external resource (for example, a\n file) and returns a string representation of the resource .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"href",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"unparsed-text",qname:"fn:unparsed-text",signature:"($href as xs:string?) as xs:string? external",description:'

The fn:unparsed-text function reads an external resource (for example, a\n file) and returns a string representation of the resource.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The $href argument must be a string in the form of a URI\n reference, which must contain no fragment identifier, and\n must identify a resource\n for which a string representation is available. If the URI is a\n relative URI reference, then it is resolved relative to the\n Static Base URI property from the static context.

The mapping of URIs to the string representation of a resource is the mapping defined\n in the available text resources\n component of the dynamic context.

If the value of the $href argument is an empty sequence, the function\n returns an empty sequence.

The $encoding argument, if present, is the name of an encoding. The values\n for this attribute follow the same rules as for the encoding attribute in\n an XML declaration. The only values which every implementation is required to recognize are\n utf-8 and utf-16.

The encoding of the external resource is determined as follows:

external encoding information is used if available, otherwise

if the media type of the resource is text/xml or\n application/xml (see ), or if it matches\n the conventions text/*+xml or application/*+xml (see\n and/or its successors), then the encoding is recognized\n as specified in , otherwise

the value of the $encoding argument is used if present, otherwise

the processor may use implementation-defined heuristics to determine the likely encoding,\n otherwise

UTF-8 is assumed.

The result of the function is a string containing the\n string representation of the resource retrieved\n using the URI.

A dynamic error is raised if $href\n contains a fragment identifier, or if it cannot be used to retrieve the\n string representation of a resource.

A dynamic error is raised if the value\n of the $encoding argument is not a valid encoding name, if the processor does not support the specified encoding,\n if the string representation of the retrieved\n resource contains octets that cannot be decoded into Unicode characters using the specified encoding, or if the resulting characters\n are not permitted XML characters.

A dynamic error is raised if\n $encoding is absent and the processor cannot infer the encoding using external information and the\n encoding is not UTF-8.

\n',summary:"

The fn:unparsed-text function reads an external resource (for example, a\n file) and returns a string representation of the resource .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"href",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"unparsed-text",qname:"fn:unparsed-text",signature:"($href as xs:string?, $encoding as xs:string) as xs:string? external",description:'

The fn:unparsed-text function reads an external resource (for example, a\n file) and returns a string representation of the resource.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The $href argument must be a string in the form of a URI\n reference, which must contain no fragment identifier, and\n must identify a resource\n for which a string representation is available. If the URI is a\n relative URI reference, then it is resolved relative to the\n Static Base URI property from the static context.

The mapping of URIs to the string representation of a resource is the mapping defined\n in the available text resources\n component of the dynamic context.

If the value of the $href argument is an empty sequence, the function\n returns an empty sequence.

The $encoding argument, if present, is the name of an encoding. The values\n for this attribute follow the same rules as for the encoding attribute in\n an XML declaration. The only values which every implementation is required to recognize are\n utf-8 and utf-16.

The encoding of the external resource is determined as follows:

external encoding information is used if available, otherwise

if the media type of the resource is text/xml or\n application/xml (see ), or if it matches\n the conventions text/*+xml or application/*+xml (see\n and/or its successors), then the encoding is recognized\n as specified in , otherwise

the value of the $encoding argument is used if present, otherwise

the processor may use implementation-defined heuristics to determine the likely encoding,\n otherwise

UTF-8 is assumed.

The result of the function is a string containing the\n string representation of the resource retrieved\n using the URI.

A dynamic error is raised if $href\n contains a fragment identifier, or if it cannot be used to retrieve the\n string representation of a resource.

A dynamic error is raised if the value\n of the $encoding argument is not a valid encoding name, if the processor does not support the specified encoding,\n if the string representation of the retrieved\n resource contains octets that cannot be decoded into Unicode characters using the specified encoding, or if the resulting characters\n are not permitted XML characters.

A dynamic error is raised if\n $encoding is absent and the processor cannot infer the encoding using external information and the\n encoding is not UTF-8.

\n',summary:"

The fn:unparsed-text function reads an external resource (for example, a\n file) and returns a string representation of the resource .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"href",type:"xs:string",occurrence:"?",description:""},{name:"encoding",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"unparsed-text",qname:"fn:unparsed-text",signature:"($href as xs:string?, $encoding as xs:string) as xs:string? external",description:'

The fn:unparsed-text function reads an external resource (for example, a\n file) and returns a string representation of the resource.

This function is deterministic, context-dependent, and focus-independent. It depends on\n static base uri.\n

The $href argument must be a string in the form of a URI\n reference, which must contain no fragment identifier, and\n must identify a resource\n for which a string representation is available. If the URI is a\n relative URI reference, then it is resolved relative to the\n Static Base URI property from the static context.

The mapping of URIs to the string representation of a resource is the mapping defined\n in the available text resources\n component of the dynamic context.

If the value of the $href argument is an empty sequence, the function\n returns an empty sequence.

The $encoding argument, if present, is the name of an encoding. The values\n for this attribute follow the same rules as for the encoding attribute in\n an XML declaration. The only values which every implementation is required to recognize are\n utf-8 and utf-16.

The encoding of the external resource is determined as follows:

external encoding information is used if available, otherwise

if the media type of the resource is text/xml or\n application/xml (see ), or if it matches\n the conventions text/*+xml or application/*+xml (see\n and/or its successors), then the encoding is recognized\n as specified in , otherwise

the value of the $encoding argument is used if present, otherwise

the processor may use implementation-defined heuristics to determine the likely encoding,\n otherwise

UTF-8 is assumed.

The result of the function is a string containing the\n string representation of the resource retrieved\n using the URI.

A dynamic error is raised if $href\n contains a fragment identifier, or if it cannot be used to retrieve the\n string representation of a resource.

A dynamic error is raised if the value\n of the $encoding argument is not a valid encoding name, if the processor does not support the specified encoding,\n if the string representation of the retrieved\n resource contains octets that cannot be decoded into Unicode characters using the specified encoding, or if the resulting characters\n are not permitted XML characters.

A dynamic error is raised if\n $encoding is absent and the processor cannot infer the encoding using external information and the\n encoding is not UTF-8.

\n',summary:"

The fn:unparsed-text function reads an external resource (for example, a\n file) and returns a string representation of the resource .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"href",type:"xs:string",occurrence:"?",description:""},{name:"encoding",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"upper-case",qname:"fn:upper-case",signature:"($arg as xs:string?) as xs:string external",description:'

Converts a string to upper case.

This function is deterministic, context-independent, and focus-independent.

If the value of $arg is the empty sequence, the zero-length string is\n returned.

Otherwise, the function returns the value of $arg after translating every\n character to its upper-case correspondent as\n defined in the appropriate case mappings section in the Unicode standard . For versions of Unicode beginning with the 2.1.8 update, only\n locale-insensitive case mappings should be applied. Beginning with version 3.2.0 (and\n likely future versions) of Unicode, precise mappings are described in default case\n operations, which are full case mappings in the absence of tailoring for particular\n languages and environments. Every lower-case character that does not have an upper-case\n correspondent, as well as every upper-case character, is included in the returned value\n in its original form.

Case mappings may change the length of a string. In general, the\n fn:upper-case and fn:lower-case functions are not inverses\n of each other: fn:lower-case(fn:upper-case($arg)) is not guaranteed to\n return $arg, nor is fn:upper-case(fn:lower-case($arg)). The\n Latin small letter dotless i (as used in Turkish) is perhaps the most prominent\n lower-case letter which will not round-trip. The Latin capital letter i with dot above\n is the most prominent upper-case letter which will not round trip; there are others,\n such as Latin capital letter Sharp S (#1E9E) which is introduced in Unicode 5.1.

These functions may not always be linguistically appropriate (e.g. Turkish i without\n dot) or appropriate for the application (e.g. titlecase). In cases such as Turkish, a\n simple translation should be used first.

Because the function is not sensitive to locale, results will not always match user\n expectations. In Quebec, for example, the standard uppercase equivalent of "è" is "È",\n while in metropolitan France it is more commonly "E"; only one of these is supported by\n the functions as defined.

Many characters of class Ll lack uppercase equivalents in the Unicode case mapping\n tables; many characters of class Lu lack lowercase equivalents.

\n',summary:"

Converts a string to upper case.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:0,name:"uri-collection",qname:"fn:uri-collection",signature:"() as xs:anyURI* external",description:'

Returns a sequence of xs:anyURI values representing the URIs in a resource collection.

This function is deterministic, context-dependent, and focus-independent. It depends on\n available resource collections, and static base uri.\n

The zero-argument form of the function returns the URIs in the Default resource collection\n described in .

If the value of $arg is a relative xs:anyURI, it is resolved\n against the value of the base-URI property from the static context.

If $arg is the empty sequence, the function behaves as if it had been\n called without an argument. See above.

The single-argument form of the function returns the sequence of URIs corresponding to the\n supplied URI in the Available resource collections described in\n .

A dynamic error is raised if no URI is supplied (that is, if the\n the function is called with no arguments, or with a single argument that evaluates to an empty sequence), and the\n value of the default resource collection is absent.

A dynamic error is raised \n if available resource collections provides no mapping for the absolutized URI.

A dynamic error is raised if $arg is not a\n valid xs:anyURI.

\n',summary:"

Returns a sequence of xs:anyURI values representing the URIs in a resource collection.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:anyURI*",description:""},errors:[]},{isDocumented:!0,arity:0,name:"uri-collection",qname:"fn:uri-collection",signature:"() as xs:anyURI* external",description:'

Returns a sequence of xs:anyURI values representing the URIs in a resource collection.

This function is deterministic, context-dependent, and focus-independent. It depends on\n available resource collections, and static base uri.\n

The zero-argument form of the function returns the URIs in the Default resource collection\n described in .

If the value of $arg is a relative xs:anyURI, it is resolved\n against the value of the base-URI property from the static context.

If $arg is the empty sequence, the function behaves as if it had been\n called without an argument. See above.

The single-argument form of the function returns the sequence of URIs corresponding to the\n supplied URI in the Available resource collections described in\n .

A dynamic error is raised if no URI is supplied (that is, if the\n the function is called with no arguments, or with a single argument that evaluates to an empty sequence), and the\n value of the default resource collection is absent.

A dynamic error is raised \n if available resource collections provides no mapping for the absolutized URI.

A dynamic error is raised if $arg is not a\n valid xs:anyURI.

\n',summary:"

Returns a sequence of xs:anyURI values representing the URIs in a resource collection.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:anyURI*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"uri-collection",qname:"fn:uri-collection",signature:"($arg as xs:string?) as xs:anyURI* external",description:'

Returns a sequence of xs:anyURI values representing the URIs in a resource collection.

This function is deterministic, context-dependent, and focus-independent. It depends on\n available resource collections, and static base uri.\n

The zero-argument form of the function returns the URIs in the Default resource collection\n described in .

If the value of $arg is a relative xs:anyURI, it is resolved\n against the value of the base-URI property from the static context.

If $arg is the empty sequence, the function behaves as if it had been\n called without an argument. See above.

The single-argument form of the function returns the sequence of URIs corresponding to the\n supplied URI in the Available resource collections described in\n .

A dynamic error is raised if no URI is supplied (that is, if the\n the function is called with no arguments, or with a single argument that evaluates to an empty sequence), and the\n value of the default resource collection is absent.

A dynamic error is raised \n if available resource collections provides no mapping for the absolutized URI.

A dynamic error is raised if $arg is not a\n valid xs:anyURI.

\n',summary:"

Returns a sequence of xs:anyURI values representing the URIs in a resource collection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:anyURI*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"uri-collection",qname:"fn:uri-collection",signature:"($arg as xs:string?) as xs:anyURI* external",description:'

Returns a sequence of xs:anyURI values representing the URIs in a resource collection.

This function is deterministic, context-dependent, and focus-independent. It depends on\n available resource collections, and static base uri.\n

The zero-argument form of the function returns the URIs in the Default resource collection\n described in .

If the value of $arg is a relative xs:anyURI, it is resolved\n against the value of the base-URI property from the static context.

If $arg is the empty sequence, the function behaves as if it had been\n called without an argument. See above.

The single-argument form of the function returns the sequence of URIs corresponding to the\n supplied URI in the Available resource collections described in\n .

A dynamic error is raised if no URI is supplied (that is, if the\n the function is called with no arguments, or with a single argument that evaluates to an empty sequence), and the\n value of the default resource collection is absent.

A dynamic error is raised \n if available resource collections provides no mapping for the absolutized URI.

A dynamic error is raised if $arg is not a\n valid xs:anyURI.

\n',summary:"

Returns a sequence of xs:anyURI values representing the URIs in a resource collection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:""}],returns:{type:"xs:anyURI*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"year-from-date",qname:"fn:year-from-date",signature:"($arg as xs:date?) as xs:integer? external",description:'

Returns the year component of an xs:date.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:integer representing the year in the\n local value of $arg. The value may be negative.

The expression fn:year-from-date(xs:date("1999-05-31")) returns 1999.

The expression fn:year-from-date(xs:date("2000-01-01+05:00")) returns 2000.

\n',summary:"

Returns the year component of an xs:date .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:date",occurrence:"?",description:""}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"years-from-duration",qname:"fn:years-from-duration",signature:"($arg as xs:duration?) as xs:integer? external",description:'

Returns the number of years in a duration.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise, the function returns an xs:integer representing the years\n component in the value of $arg. The result is obtained by casting\n $arg to an xs:yearMonthDuration (see ) and then computing the years component as described in\n .

If $arg is a negative duration then the result will be negative..

If $arg is an xs:dayTimeDuration the function returns 0.

The expression fn:years-from-duration(xs:yearMonthDuration("P20Y15M")) returns 21.

The expression fn:years-from-duration(xs:yearMonthDuration("-P15M")) returns -1.

The expression fn:years-from-duration(xs:dayTimeDuration("-P2DT15H")) returns 0.

\n',summary:"

Returns the number of years in a duration.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:duration",occurrence:"?",description:""}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"zero-or-one",qname:"fn:zero-or-one",signature:"($arg as item()*) as item()? external",description:'

Returns $arg if it contains zero or one items. Otherwise, raises\n an error.

This function is deterministic, context-independent, and focus-independent.

Except in error cases, the function returns $arg unchanged.

For detailed type semantics, see [Formal Semantics].

A dynamic error is raised if $arg contains more\n than one item.

\n',summary:"

Returns $arg if it contains zero or one items.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:""}],returns:{type:"item()?",description:""},errors:[]}],variables:[]},"http://zorba.io/modules/csv":{ns:"http://zorba.io/modules/csv",description:" Function library providing converters from CSV/TXT to XML and back.\n The functions are optimized to work with large amounts of data, in a streaming way.\n",sees:[],authors:['Daniel Turcanu'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/csv",prefix:"csv"},{uri:"http://zorba.io/modules/csv-options",prefix:"csv-options"},{uri:"http://zorba.io/modules/schema",prefix:"schemaOptions"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"parse",qname:"csv:parse",signature:"($csv as xs:string, $options as element(csv-options:options)?) as element(*)*",description:' Parse a CSV or fixed size text and convert to XML.
\n By default each line is converted to a <row> element, and each field to a <column> element inside <row>.
\n The format of the param $options is:
\n
\n    <csv-options:options>\n        <csv  [separator="default comma ,"] ?\n          [quote-char="default double quotes &quote;"]?\n          [quote-escape="default double double quotes &quote;&quote;"]? />\n        or\n        <column-widths>\n          <column-width>[column fixed width, unsigned int]<column-width>*\n        </column-widths>\n        or\n        <column-positions>\n          <column-position>[column position on line, unsigned int]<column-position>*\n        </column-positions>\n        <first-row-is-header [line="first_line[-last_line]?"]?/>?\n        <start-from-row line="first_line[-last_line]?"/>?\n        <add-last-void-columns/>?\n        <xml-nodes>\n          [<row-name>\n            [<column-name/>]?\n          </row-name>]?\n        </xml-nodes>?\n    </csv-options:options>\n  
\n All the parameters are optional and can appear in any order.
\n All the parameters are case sensitive. The namespace used is "http://zorba.io/modules/csv-options".
\n All strings must have UTF-8 encoding.
\n Parameters csv, column-widths, column-positions are mutually exclusive. If none is specified,\n the input string is assumed to be csv.
\n Description of parameters:\n
\n
csv
\n
Specifies the parameters for parsing a csv string.
\n
\n
separator
\n
The character or group of characters used to separating fields in a row.\n If it is not specified, it defaults to comma \',\'.\n
\n
quote-char
\n
The character or group of characters used for quoting the fields that may contain special characters,\n like separator, new line or this quote char. The default value is double quote ".
\n
\n
quote-escape
\n
The group of characters used for escaping the quote char inside a field. The whole quote escape group\n is translated to a quote char during parsing. The default value is double double quotes "".
\n
\n
\n
\n
\n
column-widths
\n
Specifies the column widths for fixed size text. It contains multiple column-width child elements\n specifying the fixed width of each column, from left to right.
\n If the line has more fields than specified, they are ignored.\n
\n
column-positions
\n
This is an alternative to column-widths, and specifies instead the starting position of each column.\n Column positions are 1 based, and are specified in order from left to right.\n The last column is read until end of line. The first column position can be greater than 1, if you want\n to parse only a part of the input text.\n
\n
first-row-is-header
\n
The presence of this element indicates that the first row is to be treated as the name of the columns.\n If it is not present, then each field is enclosed in a <column> element,\n or how it is specified in <xml-nodes> parameter.
\n If the first row is the header, then each field is enclosed in an element with the corresponding name from the header.
\n For example, the csv:\n
\n        ID,Name,Occupation\n        1,John,student\n        
\n is parsed into:\n
\n        <row>\n        <ID>1</ID>\n        <Name>John</Name>\n        <Occupation>student</Occupation>\n        </row>\n        
\n If the header names contain characters that cannot be used in a QName, they are replaced with underscore \'_\'.
\n The namespace for the header QNames is taken from the column name specified in xml-nodes parameter, or from\n the row name, or if that doesn\'t exist either then empty namespace is used.
\n If the header is not the first line in the input string, the starting line can be specified in the line attribute.
\n If a column does not have a name, a new name is constructed in the form columnN where N is the position of the column,\n starting from 1.
\n Subheaders
\n If the header consists of more than one line, this can be specified in the line attribute in the form\n "first_line - last_line". Having more lines as the header translates into a hierarchy of elements in the xml.
\n For example, the csv:\n
\n        ID,Name,,Occupation\n        ,First Name,Last Name,\n        1,John,Howard,student\n        
\n is parsed into:\n
\n        <row>\n        <ID>1</ID>\n        <Name>\n          <First_Name>John</First_Name>\n          <Last_Name>Howard</Last_Name>\n        </Name>\n        <Occupation>student</Occupation>\n        </row>\n        
\n This element can have an attribute "accept-all-lines" with values "false" or "true" (default "false").\n When set to true it tells the parser to not report lines that do not have the same number of items as\n the header. If set to false, the parser will raise a csv:WrongInput error for these lines.
\n
\n
start-from-row
\n
If the data does not start from line 1 or immediately after the header,\n you can specify the starting line in the line attribute.
\n Also you can use this attribute in the form "first_line - last_line" to specify also the last line\n if you don\'t want the whole csv to be parsed.\n
\n
add-last-void-columns
\n
In the case when using headers and some data lines are shorter than the header, by default the excess columns are ignored\n for those lines. You can set the add-last-void-columns parameter to make all the columns appear in xml even if they are void.\n
\n
xml-nodes
\n
With this parameter you can specify the names for the row element and for the column element if there is no header.
\n The first element child of this element specifies the desired QName of the row element in the output xml.\n The name of this element will be used as the name of the row element.
\n The element child of this row element is the column element, and its name will be used as the name of the column elements\n that enclose the fields in the output xml if there is no header.
\n If the csv has a header, only the namespace is used from the column element.
\n For example, with parameter:\n
\n        <xml-nodes>\n        <r>\n          <c/>\n        </r>\n        </xml-nodes>\n        
\n the output for each line will look like:\n
\n        <r>\n          <c>field1</c>\n          <c>field2</c>\n          .......\n        </r>\n        
\n
\n
\n',summary:"

Parse a CSV or fixed size text and convert to XML.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"csv",type:"xs:string",occurrence:null,description:'
the string containing the csv or fixed size text.
'},{name:"options",type:"element(csv-options:options)",occurrence:"?",description:'
this parameter is validated against "http://zorba.io/modules/csv-options" schema. If this parameter is not specified, the row name is by default "row" and the column name is by default "column".
'}],returns:{type:"element(*)*",description:"a sequence of row elements, one for each line in csv"},errors:['csv:CSV001 if the input string is streamable string and cannot be rewinded','csv:WrongInput if the input string has lines with variable number of items, and the csv has headers and the options do not specify the ignore-foreign-input attribute','err:XQDY0027 if $options can not be validated against the csv-options schema','err:XQDY0084 if the options parameter doesn\'t have the name "csv-options:options".']},{isDocumented:!0,arity:2,name:"serialize",qname:"csv:serialize",signature:"($xml as element(*)*, $options as element(csv-options:options)?) as xs:string",description:' Convert XML into CSV or fixed size text.\n Note: if you want to serialize out the result, make sure that the serializer method is set to "text".\n For example, in zorba command line, you have to set the param --serialize-text.\n When using the
file:write(...)
function, you have to set the\n method serialization parameter to "text":\n
\n <output:serialization-parameters<\n   <output:method value="text"/<\n </output:serialization-parameters<\n 
\n The
$options
parameter must have the following format:\n
\n    <csv-options:options>
\n <csv [separator="default comma ,"] ?
\n [quote-char="default double quotes &quote;"]?
\n [quote-escape="default double double quotes &quote;&quote;"]? />
\n
\n or
\n <column-widths [align="left|right"]?>
\n <column-width [align="left|right"]?>[column fixed width, unsigned int]<column-width>*
\n </column-widths>
\n
\n or
\n <column-positions [align="left|right"]?>
\n <column-position [align="left|right"]?>[column position on line, unsigned int]<column-position>*
\n </column-positions>
\n
\n <first-row-is-header/>?
\n </csv-options:options>\n
\n All the parameters are optional and can appear in any order.
\n All the parameters are case sensitive. The namespace used is "http://zorba.io/modules/csv-options".
\n All strings must have UTF-8 encoding.
\n Parameters csv, column-widths, column-positions are mutually exclusive.\n If none is specified, the xml is converted to csv.\n Description of parameters:\n
\n
csv
\n
Specifies the parameters for converting to csv.
\n
\n
separator
\n
The character or group of characters used to separating fields in a row.\n If it is not specified, it defaults to comma \',\'.\n
\n
quote-char
\n
The character or group of characters used for quoting the fields that may contain special characters,\n like separator, new line or this quote char. The default value is double quote ".
\n
\n
quote-escape
\n
The group of characters used for escaping the quote char inside a field. The whole quote escape group\n is translated to a quote char during parsing. The default value is double double quotes "".
\n
\n
\n
\n
\n
column-widths
\n
Specifies the column widths for fixed size text. It contains multiple column-width child elements\n specifying the fixed width of each column, from left to right.
\n With the attribute align you can specify how to align fields that are smaller than the column width.\n The default alignment is left.
\n
\n
column-positions
\n
This is an alternative to column-widths, and specifies instead the starting position of each column.\n Column positions are 1 based, and are specified in order from left to right.\n The last column has a variable length.
\n With the attribute align you can specify how to align fields that are smaller than the column width.\n The default alignment is left. The last column does not need alignment.
\n
\n
first-row-is-header
\n
The presence of this element indicates that the first row will contain the header, that is, the names of\n the column elements. Only the column names from the first row element are taken into account.
\n For example, the row xml:
\n <row>
\n <ID>1</ID>
\n <Name>John</Name>
\n <Occupation>student</Occupation>
\n </row>

\n
\n is converted to
\n ID,Name,Occupation
\n 1,John,student

\n
\n The header names are the localnames of the column elements, and the namespace is ignored.
\n Subheaders
\n If the row-column hierarchy is more complex, then subheaders are also generated on subsequent lines.\n The number of subheaders depends on the depth of the column hierarchy.
\n When generating the subheaders, the non-whitespace text nodes are also taken into account,\n and a separate column is generated for them too.
\n For example, the xml row element:
\n <row>
\n <ID>1</ID>
\n <Name>
\n Mr.
\n <First_Name>John</First_Name>
\n <Last_Name>Howard</Last_Name>
\n </Name>
\n <Occupation>student</Occupation>
\n </row>

\n is converted to
\n ID,Name,,Occupation
\n ,,First Name,Last Name,
\n 1,Mr.,John,Howard,student

\n
\n If first-row-is-header is not specified and the columns have a deeper hierarchy,\n only the first layer of columns is processed, and the fields are the string values of each column.
\n This element can have an attribute "ignore-foreign-input" with values "false" or "true" (default "false").\n When set to true it tells the serializer to ignore elements that to not match the header names.\n If set to false, the serializer will raise a csv:ForeignInput error for these elements.
\n
\n
\n',summary:"

Convert XML into CSV or fixed size text.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"xml",type:"element(*)",occurrence:"*",description:'
a sequence of elements, each element representing a row. The name of each row element is ignored. The childs of each row are the column fields.
'},{name:"options",type:"element(csv-options:options)",occurrence:"?",description:'
The options parameter. See the function description for details. This parameter is validated against "http://zorba.io/modules/csv-options" schema.
'}],returns:{type:"xs:string",description:"the csv or fixed size text as string containing all the lines"},errors:['csv:CSV003 if the serialize output is streamable string and cannot be reset','csv:ForeignInput if there are input elements in subsequent rows that do not match the headers, and the options specify first-row-is-header and do not specify the ignore-foreign-input attribute','err:XQDY0027 if $options can not be validated against csv-options schema','err:XQDY0084 if the options parameter doesn\'t have the name "csv-options:options".']}],variables:[]},"http://zorba.io/modules/reference":{ns:"http://zorba.io/modules/reference",description:" The module provides functions to compute an immutable and opaque reference\n for nodes, objects, or arrays and to retrieve such items given their\n identifier, respectively.\n The identifiers are immutable, i.e. a identifier does not change\n during the items lifetime and cannot be reused for another item after the\n original item gets deleted.\n Identifiers are unique, in that, two different items will never have the same\n identifier. A item, at any time during its lifetime, can be retrieved by its\n identifier.\n",sees:[],authors:['Matthias Brantner'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/reference",prefix:"ref"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:1,name:"dereference",qname:"ref:dereference",signature:"($arg as xs:string) as item()? external",description:'

Returns the node, object, or array identified by the given reference.

\n

The function returns the empty sequence if the item\n that is referenced does not exist.

\n',summary:"

Returns the node, object, or array identified by the given reference.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:null,description:'
the URI of the item to retrieve.
'}],returns:{type:"item()?",description:"the item identified by the URI passed as parameter or the empty-sequence if no item with that URI is found."},errors:[]},{isDocumented:!0,arity:1,name:"reference",qname:"ref:reference",signature:"($arg as item()) as xs:string external",description:'

Returns an immutable and opaque reference (with type xs:anyURI) for\n a given node, object, or array.

\n

The generated identifier is immutable, i.e. a identifier does not\n change during the item\'s lifetime and cannot be reused for another node after\n the original item gets deleted.

\n

Identifiers are also unique, in that, two different items will never\n have the same identifier.

\n A item, at any time during its lifetime, can be retrieved by its\n identifier, using the ref:dereference function.\n Please note that a reference can only be retrieved for a JSON object or JSON\n array if the item is a member of a collection.\n',summary:"

Returns an immutable and opaque reference (with type xs:anyURI) for\n a given node, object, or array.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:null,description:'
the node, object, or array for which the URI should be computed
'}],returns:{type:"xs:string",description:"the opaque URI of the item."},errors:['zerr::ZAPI0080 is raised if the object or array passed as argument is not a member of a collection.']}],variables:[]},"http://zorba.io/modules/dctx":{ns:"http://zorba.io/modules/dctx",description:" This module provides functions that gets components of the dynamic context.\n",sees:[],authors:['Federico Cavalieri'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/dctx",prefix:"dctx"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:0,name:"snapshot-id",qname:"dctx:snapshot-id",signature:"() as xs:unsignedLong external",description:'

Retrieves the current snapshot id.

\n

The returned id is opaque and should not be used for reasoning about time.\n The only guarantee is that the value returned by this function increases each\n time a snapshot finishes.

\n',summary:"

Retrieves the current snapshot id.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:unsignedLong",description:"the current snapshot id."},errors:[]}],variables:[]},"http://xbrl.io/modules/bizql/facts":{ns:"http://xbrl.io/modules/bizql/facts",description:'

This module provides functions for retrieving facts.

\n

Facts are the smallest reportable piece of information.

\n

Facts have a certain number of characteristics: the archive in\n which they were reported, a number of XBRL aspects (concept, entity, period,\n unit, further XBRL dimensions), as well as profile-specific information.

\n

With this module, you can retrieve facts by picking the characteristics\n you would like your results to have. You can retrieve a fact with its FID\n (Fact ID). You can extract information about facts (period, entity, etc).\n You can perform a full-text search on fact values, and obtain footnotes.

\n

If you are interested in the structures in which facts can be organized (such\n as hypercubes), look at the components module.

\n

Facts are stored in a MongoDB datasource called xbrl.

\n

Standard $options Parameter

\n

Most functions in the BizQL package allow an additional $options\n parameter. The options parameter is a JSON object allowing the following\n fields:

\n \n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"http://xbrl.io/modules/bizql/archives",prefix:"archives"},{uri:"http://xbrl.io/modules/bizql/concept-maps",prefix:"concept-maps"},{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://xbrl.io/modules/bizql/entities",prefix:"entities"},{uri:"http://xbrl.io/modules/bizql/facts",prefix:"facts"},{uri:"http://xbrl.io/modules/bizql/footnotes",prefix:"footnotes"},{uri:"http://xbrl.io/modules/bizql/hypercubes",prefix:"hypercubes"},{uri:"http://jsoniq.org/function-library",prefix:"j"},{uri:"http://www.28msec.com/modules/mongodb",prefix:"mongo"},{uri:"http://zorba.io/modules/reflection",prefix:"reflection"},{uri:"http://xbrl.io/modules/bizql/rules",prefix:"rules"},{uri:"http://zorba.io/modules/string",prefix:"string"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/modules/zorba-query",prefix:"zq"}],functions:[{isDocumented:!0,arity:1,name:"concept-for-fact",qname:"facts:concept-for-fact",signature:"($fact-or-id as item()) as string",description:'

Retrieves the concept against which a fact is reported.

\n',summary:"

Retrieves the concept against which a fact is reported.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"fact-or-id",type:"item()",occurrence:null,description:'
a fact or its FID.
'}],returns:{type:"string",description:"the concept name."},errors:[]},{isDocumented:!0,arity:1,name:"decimal-value",qname:"facts:decimal-value",signature:"($facts as object()*) as decimal",description:'

Returns the value of the given facts in case that it\n is castable to decimal. If no facts are given or a fact value\n is not castable to decimal 0 is returned instead.

\n',summary:"

Returns the value of the given facts in case that it\n is castable to decimal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"facts",type:"object()",occurrence:"*",description:""}],returns:{type:"decimal",description:"the decimal value of the facts or 0."},errors:[]},{isDocumented:!0,arity:1,name:"duration-for-fact",qname:"facts:duration-for-fact",signature:"($fact-or-id as item()) as object()?",description:'

Retrieves the duration period for which a fact was reported.

\n',summary:"

Retrieves the duration period for which a fact was reported.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"fact-or-id",type:"item()",occurrence:null,description:'
a fact or its FID.
'}],returns:{type:"object()?",description:"the duration period as an object with Start and End, or the empty sequence if it is not instant."},errors:[]},{isDocumented:!0,arity:1,name:"entity-for-fact",qname:"facts:entity-for-fact",signature:"($fact-or-id as item()) as string",description:'

Retrieves the eid of the entity who reported a fact.

\n',summary:"

Retrieves the eid of the entity who reported a fact.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"fact-or-id",type:"item()",occurrence:null,description:'
a fact or its FID.
'}],returns:{type:"string",description:"the eid."},errors:[]},{isDocumented:!0,arity:2,name:"facts-for-archives-and-aspects",qname:"facts:facts-for-archives-and-aspects",signature:"($archives-or-ids as item()*, $aspects as object()) as object()*",description:'

Return all facts reported in a given archive, and associated with a\n given entity, concept, period and/or other aspects.

\n',summary:"

Return all facts reported in a given archive, and associated with a\n given entity, concept, period and/or other aspects.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archives-or-ids",type:"item()",occurrence:"*",description:'
a sequence of archive or archive IDs to filter (or $facts:ALL_OF_THEM to do not filter on archives).
'},{name:"aspects",type:"object()",occurrence:null,description:'
an object containing aspects to filter, among which xbrl:Concept, xbrl:Entity and xbrl:Period (at least one of them is mandatory).
'}],returns:{type:"object()*",description:"all facts satisfying all supplied conditions."},errors:[]},{isDocumented:!0,arity:3,name:"facts-for-archives-and-aspects",qname:"facts:facts-for-archives-and-aspects",signature:"($archives-or-ids as item()*, $aspects as object(), $options as object()?) as object()*",description:'

Return all facts associated with a given entity, concept, period\n and/or other aspects.

\n',summary:"

Return all facts associated with a given entity, concept, period\n and/or other aspects.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archives-or-ids",type:"item()",occurrence:"*",description:'
a sequence of archive or archive IDs to filter (or $facts:ALL_OF_THEM to do not filter on archives).
'},{name:"aspects",type:"object()",occurrence:null,description:'
an object containing aspects to filter, among which xbrl:Concept, xbrl:Entity and xbrl:Period (all optional).
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"object()*",description:"all facts satisfying all supplied conditions."},errors:[]},{isDocumented:!0,arity:2,name:"facts-for-archives-and-concepts",qname:"facts:facts-for-archives-and-concepts",signature:"($archives-or-ids as item()*, $concepts as item()*) as object()*",description:'

Return facts associated with given concepts and archives.

\n',summary:"

Return facts associated with given concepts and archives.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archives-or-ids",type:"item()",occurrence:"*",description:'
a sequence of archive or archive IDs to filter (or $facts:ALL_OF_THEM to do not filter on archives).
'},{name:"concepts",type:"item()",occurrence:"*",description:'
the concepts (or $facts:ALL_OF_THEM to do no filter on concepts).
'}],returns:{type:"object()*",description:"facts associated with these concepts and archives."},errors:[]},{isDocumented:!0,arity:3,name:"facts-for-archives-and-concepts",qname:"facts:facts-for-archives-and-concepts",signature:"($archives-or-ids as item()*, $concepts as item()*, $options as object()?) as object()*",description:'

Return facts associated with given concepts and archives.

\n',summary:"

Return facts associated with given concepts and archives.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archives-or-ids",type:"item()",occurrence:"*",description:""},{name:"concepts",type:"item()",occurrence:"*",description:'
the concepts (or $facts:ALL_OF_THEM to do no filter on concepts).
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"object()*",description:"facts associated with these concepts."},errors:[]},{isDocumented:!0,arity:1,name:"facts-for-archives",qname:"facts:facts-for-archives",signature:"($archives-or-ids as item()*) as object()*",description:'

Return all facts reported within a given archive.

\n',summary:"

Return all facts reported within a given archive.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archives-or-ids",type:"item()",occurrence:"*",description:'
a sequence of archives or AIDs to filter.
'}],returns:{type:"object()*",description:"all facts reported in these archives."},errors:[]},{isDocumented:!0,arity:1,name:"facts-for-aspects",qname:"facts:facts-for-aspects",signature:"($aspects as object()) as object()*",description:'

Return all facts associated with the given aspects.

\n',summary:"

Return all facts associated with the given aspects.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"aspects",type:"object()",occurrence:null,description:'
an object containing aspects to filter, among which xbrl:Concept, xbrl:Entity and xbrl:Period (at least one of them is mandatory).
'}],returns:{type:"object()*",description:"all facts associated with these aspects."},errors:[]},{isDocumented:!0,arity:2,name:"facts-for-aspects",qname:"facts:facts-for-aspects",signature:"($aspects as object(), $options as object()?) as object()*",description:'

Return all facts associated with the given aspects.

\n',summary:"

Return all facts associated with the given aspects.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"aspects",type:"object()",occurrence:null,description:'
an object containing aspects to filter, among which xbrl:Concept, xbrl:Entity and xbrl:Period (at least one of them is mandatory).
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"object()*",description:"all facts associated with these aspects."},errors:[]},{isDocumented:!0,arity:1,name:"facts-for-concepts",qname:"facts:facts-for-concepts",signature:"($concepts as string*) as object()*",description:'

Return facts associated with given concepts.

\n',summary:"

Return facts associated with given concepts.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"concepts",type:"string",occurrence:"*",description:'
the concepts.
'}],returns:{type:"object()*",description:"facts associated with these concepts."},errors:[]},{isDocumented:!0,arity:2,name:"facts-for-concepts",qname:"facts:facts-for-concepts",signature:"($concepts as string*, $options as object()?) as object()*",description:'

Return facts associated with given concepts.

\n',summary:"

Return facts associated with given concepts.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"concepts",type:"string",occurrence:"*",description:'
the concepts.
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"object()*",description:"facts associated with these concepts."},errors:[]},{isDocumented:!0,arity:1,name:"facts-for-entities",qname:"facts:facts-for-entities",signature:"($entities-or-ids as item()*) as object()*",description:'

Return facts reported by the given entities.

\n',summary:"

Return facts reported by the given entities.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entities-or-ids",type:"item()",occurrence:"*",description:'
the entities or EIDs.
'}],returns:{type:"object()*",description:"facts reported by the given entities."},errors:[]},{isDocumented:!0,arity:1,name:"facts-for",qname:"facts:facts-for",signature:"($options as object()?) as object()*",description:'

Return all facts that match a given filter object optionally interpreted\n in the context of an optionally given hypercube.

\n',summary:"

Return all facts that match a given filter object optionally interpreted\n in the context of an optionally given hypercube.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"object()*",description:"all facts satisfying the filter and options."},errors:['facts:FILTER-TOO-GENERIC The filter object must have at least one of the fields Archive, Aspects.xbrl:Concept, Aspects.xbrl:Period, or Aspects.xbrl:Entity.']},{isDocumented:!0,arity:1,name:"facts-search",qname:"facts:facts-search",signature:"($search as string) as object()*",description:'

Return all facts that match the given search term.

\n',summary:"

Return all facts that match the given search term.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"search",type:"string",occurrence:null,description:'
the search query
'}],returns:{type:"object()*",description:"all facts matching the given search query"},errors:[]},{isDocumented:!0,arity:1,name:"facts",qname:"facts:facts",signature:"($fact-or-ids as item()*) as object()*",description:'

Return the fact with the given FIDs.

\n',summary:"

Return the fact with the given FIDs.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"fact-or-ids",type:"item()",occurrence:"*",description:'
the FIDs or the facts themselves.
'}],returns:{type:"object()*",description:"the facts with the given FIDs the empty sequence if no fact was found or if the input is an empty sequence."},errors:[]},{isDocumented:!0,arity:1,name:"fid",qname:"facts:fid",signature:"($facts-or-ids as item()*) as atomic*",description:'

Converts the input to a normalized fact id (FID). The input\n can be either an FID, or a fact object which contains an _id.

\n',summary:"

Converts the input to a normalized fact id (FID).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"facts-or-ids",type:"item()",occurrence:"*",description:'
a sequence of fact objects or FIDs.
'}],returns:{type:"atomic*",description:"the normalized FIDs."},errors:['facts:INVALID-PARAMETER if the FID or fact is not valid.']},{isDocumented:!0,arity:1,name:"instant-for-fact",qname:"facts:instant-for-fact",signature:"($fact-or-id as item()) as atomic?",description:'

Retrieves the instant period for which a fact was reported.

\n',summary:"

Retrieves the instant period for which a fact was reported.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"fact-or-id",type:"item()",occurrence:null,description:'
a fact or its FID.
'}],returns:{type:"atomic?",description:"the instance period, or the empty sequence if it is not instant."},errors:[]},{isDocumented:!0,arity:1,name:"is-fact-forever",qname:"facts:is-fact-forever",signature:"($fact-or-id as item()) as boolean",description:'

Tests whether a fact is reported forever.

\n',summary:"

Tests whether a fact is reported forever.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"fact-or-id",type:"item()",occurrence:null,description:'
a fact or its FID.
'}],returns:{type:"boolean",description:"true if its period is forever, false otherwise."},errors:[]},{isDocumented:!0,arity:3,name:"merge-objects",qname:"facts:merge-objects",signature:"($o1 as object()?, $o2 as object()?, $prioritize-first-object as boolean) as object()?",description:'

Helper function to deep-merge two objects. If the two given objects have\n fields with the same name they are merged, which means:\n 1. if the values of the fields are objects then these are merged\n 2. in any other case the fields are accumulated into an array.

\n

The third parameter can be used to priotitize the first object. If the first\n object is prioritized and both objects contain fields with the same name,\n the fields are either merged (in case of two object values) or the value of\n the first object is taken.

\n',summary:"

Helper function to deep-merge two objects.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"o1",type:"object()",occurrence:"?",description:'
first object
'},{name:"o2",type:"object()",occurrence:"?",description:'
second object
'},{name:"prioritize-first-object",type:"boolean",occurrence:null,description:'
boolean flag to give the first object higher priority in the merge
'}],returns:{type:"object()?",description:"one merge object or an empty-sequence (in case both input objects are empty)."},errors:[]},{isDocumented:!0,arity:1,name:"populate-with-footnotes",qname:"facts:populate-with-footnotes",signature:"($fact-or-ids as item()*) as object()*",description:'

Populates a sequence of facts with their associated footnotes.\n More in detail, in each returned fact object an additional field\n Footnotes is added which contains all connected footnotes in an\n array.

\n',summary:"

Populates a sequence of facts with their associated footnotes.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"fact-or-ids",type:"item()",occurrence:"*",description:'
the FIDs or the facts themselves.
'}],returns:{type:"object()*",description:"a sequence of facts with populated Footnotes field."},errors:[]},{isDocumented:!0,arity:2,name:"populate-with-footnotes",qname:"facts:populate-with-footnotes",signature:"($fact-or-ids as item()*, $options as object()?) as object()*",description:'

Populates a sequence of facts with their associated footnotes.\n More in detail, in each returned fact object an additional field\n Footnotes is added which contains all connected footnotes in an\n array.

\n',summary:"

Populates a sequence of facts with their associated footnotes.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"fact-or-ids",type:"item()",occurrence:"*",description:'
the FIDs or the facts themselves.
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"object()*",description:"a sequence of facts with populated Footnotes field."},errors:[]},{isDocumented:!0,arity:1,name:"prefix-from-fact-concept",qname:"facts:prefix-from-fact-concept",signature:"($fact as object()) as string?",description:'

Helper function to get the prefix of a given fact`s xbrl:Concept aspect.

\n',summary:"

Helper function to get the prefix of a given fact`s xbrl:Concept aspect.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"fact",type:"object()",occurrence:null,description:'
a fact object.
'}],returns:{type:"string?",description:"the prefix of the fact's xbrl:Concept aspect or empty sequence if the concept doesn't have a prefix."},errors:[]}],variables:[{name:"facts:col",type:"string",description:" Name of the collection the facts are stored in.\n"},{name:"facts:ID",type:"string",description:" Name of the field that points to the facts FID.\n"},{name:"facts:ARCHIVE",type:"string",description:" Name of the field that points to the archive.\n"},{name:"facts:ASPECTS",type:"string",description:" Name of the field that stores the aspects.\n"},{name:"facts:CONCEPT",type:"string",description:" Name of the concept aspect.\n"},{name:"facts:PERIOD",type:"string",description:" Name of the period aspect.\n"},{name:"facts:ENTITY",type:"string",description:" Name of the entity aspect.\n"},{name:"facts:UNIT",type:"string",description:" Name of the unit aspect.\n"},{name:"facts:FOOTNOTES",type:"string",description:" Name of the field that stores the Footnotes (if populated).\n"},{name:"facts:ALL_OF_THEM",type:"boolean",description:" Joker for all archives or all concepts.\n"}]},"http://www.w3.org/2005/xqt-errors":{ns:"http://www.w3.org/2005/xqt-errors",description:" This module contains one variable declaration for each diagnostic of the\n http://www.w3.org/2005/xqt-errors namespace.\n The variables serves as documentation for the errors but can also\n be used in the code. For example, one useful scenario is to compare\n an error caught in the catch clause of a try-catch expression with one of\n the variables.\n",sees:[],authors:['Carlos Lopez'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"}],functions:[],variables:[{name:"err:FORG0006",type:"xs:QName",description:" Invalid argument type.\n"},{name:"err:FODF1280",type:"xs:QName",description:" Invalid decimal format name supplied to \\c fn:format-number().\n"},{name:"err:FODF1310",type:"xs:QName",description:" Invalid decimal/integer format picture string.\n"},{name:"err:FODT0001",type:"xs:QName",description:" Overflow/underflow in date/time operation.\n"},{name:"err:FODT0002",type:"xs:QName",description:" Overflow/underflow in duration operation.\n"},{name:"err:FODT0003",type:"xs:QName",description:" Invalid timezone value.\n"},{name:"err:FONS0004",type:"xs:QName",description:" No namespace found for prefix.\n"},{name:"err:FONS0005",type:"xs:QName",description:" Base-URI not defined in static context.\n"},{name:"err:FORG0001",type:"xs:QName",description:" Invalid value for cast/constructor.\n"},{name:"err:FORG0002",type:"xs:QName",description:" Invalid argument to \\c fn:resolve-uri().\n"},{name:"err:FORG0003",type:"xs:QName",description:" \\c fn:zero-or-one() called with a sequence containing more than one\n item.\n"},{name:"err:FORG0004",type:"xs:QName",description:" \\c fn:one-or-more() called with a sequence containing no items.\n"},{name:"err:FORG0005",type:"xs:QName",description:" \\c fn:exactly-one() called with a sequence containing zero or more\n than one item.\n"},{name:"err:FODC0007",type:"xs:QName",description:" Base URI passed to \\c fn:parse() is not a valid absolute URI.\n"},{name:"err:FORG0008",type:"xs:QName",description:" The two arguments to fn:dateTime() have inconsistent timezones.\n"},{name:"err:FORG0009",type:"xs:QName",description:" Error in resolving a relative URI against a base URI in\n \\c fn:resolve-uri().\n"},{name:"err:FORX0001",type:"xs:QName",description:" Invalid regular expression flags.\n"},{name:"err:FORX0002",type:"xs:QName",description:" Invalid regular expression.\n"},{name:"err:FORX0003",type:"xs:QName",description:" Regular expression matches zero-length string.\n"},{name:"err:FORX0004",type:"xs:QName",description:" Invalid replacement string.\n"},{name:"err:FOTY0012",type:"xs:QName",description:" Argument node does not have a typed value.\n"},{name:"err:FOTY0013",type:"xs:QName",description:" An argument to \\c fn:data() contains a node that does not have a typed\n value.\n"},{name:"err:FOTY0014",type:"xs:QName",description:" The argument to \\c fn:string() is a function item.\n"},{name:"err:FOTY0015",type:"xs:QName",description:" An argument to \\c fn:deep-equal() contains a function item.\n"},{name:"err:FOUT1170",type:"xs:QName",description:" Identifier cannot be used to retrive a resource containing text\n"},{name:"err:FOCA0005",type:"xs:QName",description:" NaN supplied as float/double value.\n"},{name:"err:FTDY0016",type:"xs:QName",description:" It is a dynamic error if a weight value is not within the required range\n of values; it is also a dynamic error if an implementation that does not\n support negative weights encounters a negative weight value.\n"},{name:"err:FTDY0017",type:"xs:QName",description:" It is a dynamic error if an implementation encounters a mild not\n selection, one of whose operands evaluates to an AllMatches that\n contains a StringExclude.\n"},{name:"err:FTST0018",type:"xs:QName",description:" It is a static error if, during the static analysis phase, the query is\n found to contain a thesaurus option that refers to a thesaurus that is\n not found in the statically known thesauri.\n"},{name:"err:FTST0019",type:"xs:QName",description:" It is a static error if, within a single FTMatchOptions, there is more\n than one match option of any given match option group.\n"},{name:"err:FTDY0020",type:"xs:QName",description:' It is a dynamic error if, when "wildcards" is in effect, a query string\n violates wildcard syntax.\n'},{name:"err:FOER0000",type:"xs:QName",description:" Unidentified error.\n"},{name:"err:FOAR0001",type:"xs:QName",description:" Division by zero.\n"},{name:"err:FOAR0002",type:"xs:QName",description:" Numeric operation overflow/underflow.\n"},{name:"err:FOCA0001",type:"xs:QName",description:" Input value too large for decimal.\n"},{name:"err:FOCA0002",type:"xs:QName",description:" Invalid lexical value.\n"},{name:"err:FOCA0003",type:"xs:QName",description:" Input value too large for integer.\n"},{name:"err:FOUT1190",type:"xs:QName",description:" Retrieved resource contains octets that cannot be decoded into Unicode\n using the specified encoding, the resulting characters are not\n permitted XML characters or requested encoding not supported\n"},{name:"err:FOCA0006",type:"xs:QName",description:" Raised when casting a string to xs:decimal if the string has more\n digits of precision than the implementation can represent (the\n implementation also has the option of rounding).\n"},{name:"err:FOCH0001",type:"xs:QName",description:" Code point not valid.\n"},{name:"err:FOCH0002",type:"xs:QName",description:" Unsupported collation.\n"},{name:"err:FOCH0003",type:"xs:QName",description:" Unsupported normalization form.\n"},{name:"err:FOCH0004",type:"xs:QName",description:" Collation does not support collation units.\n"},{name:"err:FODC0001",type:"xs:QName",description:" No context document.\n"},{name:"err:FODC0002",type:"xs:QName",description:" Error retrieving resource.\n"},{name:"err:FODC0003",type:"xs:QName",description:" Raised by fn:doc, fn:collection to indicate that it is not possible to\n return a result that is guaranteed deterministic.\n"},{name:"err:FODC0004",type:"xs:QName",description:" Invalid argument to \\c fn:collection().\n"},{name:"err:FODC0005",type:"xs:QName",description:" Invalid argument to \\c fn:doc() or \\c fn:doc-available().\n"},{name:"err:FODC0006",type:"xs:QName",description:" Invalid content passed to \\c fn:parse().\n"},{name:"err:SERE0005",type:"xs:QName",description:" It is an error if the serialized result would contain an NCName Names\n that contains a character that is not permitted by the version of\n Namespaces in XML specified by the version parameter.\n"},{name:"err:XUDY0024",type:"xs:QName",description:" It is a dynamic error if the effect of a set of updating expressions is\n to introduce conflicting namespace bindings into an element node.\n"},{name:"err:XUDY0027",type:"xs:QName",description:" It is a dynamic error if the target expression of an insert, replace, or\n rename expression evaluates to an empty sequence.\n"},{name:"err:XUST0028",type:"xs:QName",description:" It is a static error if a function declaration specifies both \\c updating\n and a return type.\n"},{name:"err:XUDY0029",type:"xs:QName",description:" In an insert expression where \\c before or \\c after is specified, it is\n a dynamic error if the node returned by the target expression does not\n have a parent.\n"},{name:"err:XUDY0030",type:"xs:QName",description:" It is a dynamic error if an insert expression specifies the insertion of\n an attribute node before or after a child of a document node.\n"},{name:"err:XUDY0031",type:"xs:QName",description:" It is a dynamic error if multiple calls to \\c fn:put() in the same\n snapshot specify the same URI (after resolution of relative URIs).\n"},{name:"err:FOUP0001",type:"xs:QName",description:" It is a dynamic error if the first operand of \\c fn:put() is not a node\n of a supported kind.\n"},{name:"err:FOUP0002",type:"xs:QName",description:" It is a dynamic error if the second operand of \\c fn:put() is not a valid\n lexical representation of the \\c xs:anyURI type.\n"},{name:"err:SENR0001",type:"xs:QName",description:" It is an error if an item in S6 in sequence normalization is an attribute\n node or a namespace node.\n"},{name:"err:SERE0003",type:"xs:QName",description:" It is an error if the serializer is unable to satisfy the rules for\n either a well-formed XML document entity or a well-formed XML external\n general parsed entity, or both, except for content modified by the\n character expansion phase of serialization.\n"},{name:"err:SEPM0004",type:"xs:QName",description:" It is an error to specify the doctype-system parameter, or to specify\n the standalone parameter with a value other than omit, if the instance\n of the data model contains text nodes or multiple element nodes as\n children of the root node.\n"},{name:"err:XUDY0023",type:"xs:QName",description:" It is a dynamic error if an insert, replace, or rename expression\n affects an element node by introducing a new namespace binding that\n conflicts with one of its existing namespace bindings.\n"},{name:"err:SERE0006",type:"xs:QName",description:" It is an error if the serialized result would contain a character that is\n not permitted by the version of XML specified by the version parameter.\n"},{name:"err:SESU0007",type:"xs:QName",description:" It is an error if an output encoding other than UTF-8 or UTF-16 is\n requested and the serializer does not support that encoding.\n"},{name:"err:SERE0008",type:"xs:QName",description:" It is an error if a character that cannot be represented in the encoding\n that the serializer is using for output appears in a context where\n character references are not allowed (for example if the character\n occurs in the name of an element).\n"},{name:"err:SEPM0009",type:"xs:QName",description:" It is an error if the omit-xml-declaration parameter has the value yes,\n and the standalone attribute has a value other than omit; or the version\n parameter has a value other than 1.0 and the doctype-system parameter is\n specified.\n"},{name:"err:SEPM0010",type:"xs:QName",description:" It is an error if the output method is xml, the value of the\n undeclare-prefixes parameter is yes, and the value of the version\n parameter is 1.0.\n"},{name:"err:SESU0011",type:"xs:QName",description:" It is an error if the value of the normalization-form parameter\n specifies a normalization form that is not supported by the serializer.\n"},{name:"err:SERE0012",type:"xs:QName",description:" It is an error if the value of the normalization-form parameter is\n fully-normalized and any relevant construct of the result begins with a\n combining character.\n"},{name:"err:SESU0013",type:"xs:QName",description:" It is an error if the serializer does not support the version of XML or\n HTML specified by the version parameter.\n"},{name:"err:SERE0014",type:"xs:QName",description:" It is an error to use the HTML output method when characters which are\n legal in XML but not in HTML, specifically the control characters\n #x7F-#x9F, appear in the instance of the data model.\n"},{name:"err:SERE0015",type:"xs:QName",description:" It is an error to use the HTML output method when \\c > appears within a\n processing instruction in the data model instance being serialized.\n"},{name:"err:SEPM0016",type:"xs:QName",description:" It is a an error if a parameter value is invalid for the defined domain.\n"},{name:"err:XUTY0010",type:"xs:QName",description:" In a replace expression where value of is not specified and\n the target is an element, text, comment, or processing instruction node,\n it is a type error if the replacement sequence does not consist of zero\n or more element, text, comment, or processing instruction nodes.\n"},{name:"err:FOFL0001",type:"xs:QName",description:" This error is raised if the fn:function-lookup returns a context-dependent function and the context-dependent function is then called.\n"},{name:"err:FOCZ0001",type:"xs:QName",description:" Invalid content passed to \\c x:canonicalize().\n"},{name:"err:XUST0001",type:"xs:QName",description:" It is a static error if an updating expression is used in any position\n other than one of the following:\n - The topmost expression in the body of a query.\n - The \\c modify clause of a transform expression.\n - The \\c return clause of a FLWOR expression.\n - The \\c return clauses of a typeswitch expression in which every \\c\n return clause contains an updating expression or a vacuous expression.\n - The \\c then and \\c else clauses of a conditional statement in which\n both the \\c then and \\c else clauses contain either an updating\n expression or a vacuous expression.\n - An operand of a comma expression in which each operand is either an\n updating expression or a vacuous expression.\n - The content of a parenthesized expression.\n - The body of a function declaration in which the keyword \\c updating is\n specified.\n"},{name:"err:XUST0002",type:"xs:QName",description:" It is a static error if a simple expression that is not a vacuous\n expression is used in one of the following positions:\n - The \\c modify clause of a transform expression.\n - The top-level expression in the body of a function declaration in\n which the keyword \\c updating is specified.\n"},{name:"err:XUST0003",type:"xs:QName",description:" It is a static error if a Prolog contains more than one revalidation\n declaration.\n"},{name:"err:XUTY0004",type:"xs:QName",description:" It is a type error if the insertion sequence of an insert expression\n contains an attribute node following a node that is not an attribute\n node.\n"},{name:"err:XUTY0005",type:"xs:QName",description:" In an insert expression where into, as first\n into, or as last into is specified, it is a type\n error if the target expression returns a non-empty result that does not\n consist of a single element or document node.\n"},{name:"err:XUTY0006",type:"xs:QName",description:" In an insert expression where \\c before or \\c after is specified, it is\n a type error if the target expression returns a non-empty result that\n does not consist of a single element, text, comment, or processing\n instruction node.\n"},{name:"err:XUTY0007",type:"xs:QName",description:" It is a type error if the target expression of a delete expression does\n not return a sequence of zero or more nodes.\n"},{name:"err:XUTY0008",type:"xs:QName",description:" In a replace expression, it is a type error if the target expression\n returns a non-empty result that does not consist of a single element,\n attribute, text, comment, or processing instruction node.\n"},{name:"err:XUDY0009",type:"xs:QName",description:" In a replace expression where value of is not specified, it\n is a dynamic error if the node returned by the target expression does\n not have a parent.\n"},{name:"err:FTST0009",type:"xs:QName",description:" It may be a static error if, during the static analysis phase, the query\n is found to contain a language identifier in a language option that the\n implementation does not support. The implementation may choose not to\n raise this error and instead provide some other implementation-defined\n behavior.\n"},{name:"err:XUTY0011",type:"xs:QName",description:" In a replace expression where value of is not specified and\n the target is an attribute node, it is a type error if the replacement\n sequence does not consist of zero or more attribute nodes.\n"},{name:"err:XUTY0012",type:"xs:QName",description:" In a rename expression, it is a type error if the target expression\n returns a non-empty result that does not consist of a single element,\n attribute, or processing instruction node.\n"},{name:"err:XUTY0013",type:"xs:QName",description:" In a transform expression, it is a type error if a source expression in\n the \\c copy clause does not return a single node.\n"},{name:"err:XUDY0014",type:"xs:QName",description:" In a transform expression, it is a dynamic error if the \\c modify clause\n modifies any node that was not created by the \\c copy clause.\n"},{name:"err:XUDY0015",type:"xs:QName",description:" It is a dynamic error if any node is the target of more than one \\c\n rename expression within the same query.\n"},{name:"err:XUDY0016",type:"xs:QName",description:" It is a dynamic error if any node is the target of more than one \\c\n replace expression (without value of being specified)\n within the same query.\n"},{name:"err:XUDY0017",type:"xs:QName",description:" It is a dynamic error if any node is the target of more than one\n replace value of expression within the same query.\n"},{name:"err:XUDY0018",type:"xs:QName",description:" It is a dynamic error if a function that was declared to be \\c external\n but not \\c updating returns a non-empty pending update list.\n"},{name:"err:XUDY0019",type:"xs:QName",description:" It is a dynamic error if a function that was declared to be both \\c\n external and \\c updating returns a non-empty data model instance.\n"},{name:"err:XUDY0021",type:"xs:QName",description:" It is a dynamic error if the XDM instance that would result from\n applying all the updates in a query violates any constraint specified in\n [XQuery 1.0 and XPath 2.0 Data Model]. In this case, none of the updates\n in the query are made effective.\n"},{name:"err:XUTY0022",type:"xs:QName",description:" It is a type error if an insert expression specifies the insertion of an\n attribute node into a document node.\n"},{name:"err:XQST0052",type:"xs:QName",description:" The type must be the name of a type defined in the in-scope schema types,\n and the {variety} of the type must be simple.\n"},{name:"err:XQST0033",type:"xs:QName",description:" It is a static error if a module contains multiple bindings for the same\n namespace prefix.\n"},{name:"err:XQST0034",type:"xs:QName",description:" It is a static error if multiple functions declared or imported by a\n module have the same number of arguments and their expanded QNames are\n equal (as defined by the eq operator).\n"},{name:"err:XQST0035",type:"xs:QName",description:" It is a static error to import two schema components that both define the\n same name in the same symbol space and in the same scope.\n"},{name:"err:XQST0036",type:"xs:QName",description:" It is a static error to import a module if the in-scope schema\n definitions of the importing module do not include all of the following:\n -# An in-scope schema type for each type-name that appears:\n - in the type of a variable that is declared in the imported module\n and referenced in the importing module, OR\n - in a parameter-type or result-type of a function that is declared in\n the imported module and referenced in the importing module.\n -# An in-scope element declaration for each element-name \\c EN such that:\n - \\c schema-element(EN) appears in the declared type of a variable in\n the imported module, and that variable is referenced in the\n importing module, OR\n - \\c schema-element(EN) appears in a parameter-type or result-type\n of a function declared in the imported module, and that function is\n referenced in the importing module.\n -# An in-scope attribute declaration for each attribute-name \\c AN such\n that:\n - \\c schema-attribute(AN) appears in the declared type of a variable\n in the imported module, and that variable is referenced in the\n importing module, OR\n - \\c schema-attribute(AN) appears in a parameter-type or result-type\n of a function declared in the imported module, and that function is\n referenced in the importing module.\n"},{name:"err:XQST0038",type:"xs:QName",description:" It is a static error if a Prolog contains more than one default collation\n declaration, or the value specified by a default collation declaration is\n not present in statically known collations.\n"},{name:"err:XQST0039",type:"xs:QName",description:" It is a static error for a function declaration to have more than one\n parameter with the same name.\n"},{name:"err:XQST0040",type:"xs:QName",description:" It is a static error if the attributes specified by a direct element\n constructor do not have distinct expanded QNames.\n"},{name:"err:XQST0045",type:"xs:QName",description:" It is a static error if the function name in a function declaration is in\n one of the following namespaces:\n http://www.w3.org/XML/1998/namespace,\n http://www.w3.org/2001/XMLSchema,\n http://www.w3.org/2001/XMLSchema-instance,\n http://www.w3.org/2005/xpath-functions.\n"},{name:"err:XQST0046",type:"xs:QName",description:" An implementation MAY raise a static error if the value of a URILiteral\n is of nonzero length and is not in the lexical space of \\c xs:anyURI.\n"},{name:"err:XQST0047",type:"xs:QName",description:" It is a static error if multiple module imports in the same Prolog\n specify the same target namespace.\n"},{name:"err:XQST0048",type:"xs:QName",description:" It is a static error if a function or variable declared in a library\n module is not in the target namespace of the library module.\n"},{name:"err:XQST0049",type:"xs:QName",description:" It is a static error if two or more variables declared or imported by a\n module have equal expanded QNames (as defined by the eq operator.)\n"},{name:"err:XQST0032",type:"xs:QName",description:" A static error is raised if a Prolog contains more than one base URI\n declaration.\n"},{name:"err:XQST0054",type:"xs:QName",description:" It is a static error if a variable depends on itself.\n"},{name:"err:XQST0055",type:"xs:QName",description:" It is a static error if a Prolog contains more than one copy-namespaces\n declaration.\n"},{name:"err:XQST0057",type:"xs:QName",description:" It is a static error if a schema import binds a namespace prefix but\n does not specify a target namespace other than a zero-length string.\n"},{name:"err:XQST0058",type:"xs:QName",description:" It is a static error if multiple schema imports specify the same target\n namespace.\n"},{name:"err:XQST0059",type:"xs:QName",description:" It is a static error if an implementation is unable to process a schema\n or module import by finding a schema or module with the specified\n target namespace.\n"},{name:"err:XQST0060",type:"xs:QName",description:" It is a static error if the name of a function in a function declaration\n is not in a namespace (expanded QName has a null namespace URI).\n"},{name:"err:XQST0065",type:"xs:QName",description:" A static error is raised if a Prolog contains more than one ordering mode\n declaration.\n"},{name:"err:XQST0066",type:"xs:QName",description:" A static error is raised if a Prolog contains more than one default\n element/type namespace declaration, or more than one default function\n namespace declaration.\n"},{name:"err:XQST0067",type:"xs:QName",description:" A static error is raised if a Prolog contains more than one construction\n declaration.\n"},{name:"err:XQST0068",type:"xs:QName",description:" A static error is raised if a Prolog contains more than one\n boundary-space declaration.\n"},{name:"err:XQST0069",type:"xs:QName",description:" A static error is raised if a Prolog contains more than one empty order\n declaration.\n"},{name:"err:XPTY0019",type:"xs:QName",description:" It is a type error if the result of a step (other than the last step) in a\n path expression contains an atomic value.\n"},{name:"err:XPST0001",type:"xs:QName",description:" It is a static error if analysis of an expression relies on some\n component of the static context that has not been assigned a value.\n"},{name:"err:XPST0003",type:"xs:QName",description:" It is a static error if an expression is not a valid instance of the\n grammar.\n"},{name:"err:XPST0005",type:"xs:QName",description:" During the analysis phase, it is a static error if the static type\n assigned to an expression other than the expression \\c () or \\c data(())\n is \\c empty-sequence().\n"},{name:"err:XPST0008",type:"xs:QName",description:" It is a static error if an expression refers to an element name,\n attribute name, schema type name, namespace prefix, or variable name\n that is not defined in the static context, except for an ElementName in\n an ElementTest or an AttributeName in an AttributeTest.\n"},{name:"err:XPST0017",type:"xs:QName",description:" It is a static error if the expanded QName and number of arguments in a\n function call do not match the name and arity of a function signature in\n the static context.\n"},{name:"err:XPST0051",type:"xs:QName",description:" It is a static error if a QName that is used as an AtomicType in a\n SequenceType is not defined in the in-scope schema types as an atomic\n type.\n"},{name:"err:XPST0080",type:"xs:QName",description:" It is a static error if the target type of a \\c cast or \\c castable\n expression is \\c xs:NOTATION or \\c xs:anyAtomicType.\n"},{name:"err:XPST0081",type:"xs:QName",description:" It is a static error if a QName used in a query contains a namespace\n prefix that cannot be expanded into a namespace URI by using the\n statically known namespaces.\n"},{name:"err:XPST0083",type:"xs:QName",description:" It is a static error if the target type of a \\c cast expression or\n constructor function is \\c xs:QName or a type derived from \\c xs:QName\n or \\c xs:NOTATION, and the argument of the cast expression or\n constructor function is not a string literal.\n"},{name:"err:XPTY0004",type:"xs:QName",description:" It is a type error if, during the static analysis phase, an expression\n is found to have a static type that is not appropriate for the context\n in which the expression occurs, or during the dynamic evaluation phase,\n the dynamic type of a value does not match a required type as specified\n by the matching rules in 2.5.4 SequenceType Matching.\n"},{name:"err:XPTY0018",type:"xs:QName",description:" It is a type error if the result of the last step in a path expression\n contains both nodes and non-nodes.\n"},{name:"err:XQST0070",type:"xs:QName",description:" A static error is raised if one of the predefined prefixes \\c xml or \\c\n xmlns appears in a namespace declaration, or if any of the following\n conditions is statically detected in any expression or declaration:\n - The prefix \\c xml is bound to some namespace URI other than\n http://www.w3.org/XML/1998/namespace.\n - A prefix other than \\c xml is bound to the namespace URI\n http://www.w3.org/XML/1998/namespace.\n - The prefix \\c xmlns is bound to any namespace URI.\n - A prefix other than \\c xmlns is bound to the namespace URI\n http://www.w3.org/2000/xmlns/.\n"},{name:"err:XPTY0020",type:"xs:QName",description:" It is a type error if, in an axis step, the context item is not a node.\n"},{name:"err:XPTY0117",type:"xs:QName",description:" Attempt to cast to a namespace-sensitive type failed because the namespace\n bindings for the result can not be determined.\n"},{name:"err:XQTY0024",type:"xs:QName",description:" It is a type error if the content sequence in an element constructor\n contains an attribute node following a node that is not an attribute node.\n"},{name:"err:XQTY0030",type:"xs:QName",description:" It is a type error if the argument of a validate expression does not\n evaluate to exactly one document or element node.\n"},{name:"err:XQTY0086",type:"xs:QName",description:" It is a type error if the typed value of a copied element or attribute\n node is namespace-sensitive when construction mode is \\c preserve and\n copy-namespaces mode is \\c no-preserve.\n"},{name:"err:XQTY0105",type:"xs:QName",description:" It is a type error if the content sequence in an element constructor contains a function item.\n"},{name:"err:XQST0009",type:"xs:QName",description:" An implementation that does not support the Schema Import Feature must\n raise a static error if a Prolog contains a schema import.\n"},{name:"err:XQST0012",type:"xs:QName",description:" It is a static error if the set of definitions contained in all schemas\n imported by a Prolog do not satisfy the conditions for schema validity\n specified in Sections 3 and 5 of [XML Schema] Part 1--i.e., each\n definition must be valid, complete, and unique.\n"},{name:"err:XQST0013",type:"xs:QName",description:" It is a static error if an implementation recognizes a pragma but\n determines that its content is invalid.\n"},{name:"err:XQST0022",type:"xs:QName",description:" It is a static error if the value of a namespace declaration attribute is\n not a URILiteral.\n"},{name:"err:XQST0031",type:"xs:QName",description:" It is a static error if the version number specified in a version\n declaration is not supported by the implementation.\n"},{name:"err:XQDY0072",type:"xs:QName",description:" It is a dynamic error if the result of the content expression of a\n computed comment constructor contains two adjacent hyphens or ends with\n a hyphen.\n"},{name:"err:XQST0128",type:"xs:QName",description:" It is a static error if a feature name that an implementation supports appears\n in a prohibit-feature option declaration, and the implementation is unable to\n disable the feature.\n"},{name:"err:XPDY0002",type:"xs:QName",description:" It is a dynamic error if evaluation of an expression relies on some part\n of the dynamic context that has not been assigned a value.\n"},{name:"err:XPDY0050",type:"xs:QName",description:' It is a dynamic error if the dynamic type of the operand of a treat\n expression does not match the sequence type specified by the treat\n expression. This error might also be raised by a path expression\n beginning with "/" or "//" if the context node\n is not in a tree that is rooted at a document node. This is because a\n leading "/" or "//" in a path expression is an\n abbreviation for an initial step that includes the clause \\c treat as \\c\n document-node().\n'},{name:"err:XQDY0025",type:"xs:QName",description:" It is a dynamic error if any attribute of a constructed element does not\n have a name that is distinct from the names of all other attributes of\n the constructed element.\n"},{name:"err:XQDY0026",type:"xs:QName",description:' It is a dynamic error if the result of the content expression of a\n computed processing instruction constructor contains the string "?>".\n'},{name:"err:XQDY0027",type:"xs:QName",description:" In a validate expression, it is a dynamic error if the root element\n information item in the PSVI resulting from validation does not have the\n expected validity property: \\c valid if validation mode is \\c strict, or\n either \\c valid or \\c notKnown if validation mode is \\c lax.\n"},{name:"err:XQDY0041",type:"xs:QName",description:" It is a dynamic error if the value of the name expression in a computed\n processing instruction constructor cannot be cast to the type\n \\c xs:NCName.\n"},{name:"err:XQDY0044",type:"xs:QName",description:" It is a static error the node-name of a node constructed by a computed\n attribute constructor has any of the following properties:\n - Its namespace prefix is \\c xmlns.\n - It has no namespace prefix and its local name is \\c xmlns.\n - Its namespace URI is http://www.w3.org/2000/xmlns/.\n - Its namespace prefix is \\c xml and its namespace URI is not\n http://www.w3.org/XML/1998/namespace.\n - Its namespace prefix is other than \\c xml and its namespace URI is\n http://www.w3.org/XML/1998/namespace.\n"},{name:"err:XQDY0054",type:"xs:QName",description:" It is a dynamic error if a cycle is encountered in the definition of a\n module's dynamic context components, for example because of a cycle in\n variable declarations.\n"},{name:"err:XQDY0061",type:"xs:QName",description:" It is a dynamic error if the operand of a validate expression is a\n document node whose children do not consist of exactly one element node\n and zero or more comment and processing instruction nodes, in any order.\n"},{name:"err:XQDY0064",type:"xs:QName",description:' It is a dynamic error if the value of the name expression in a computed\n processing instruction constructor is equal to "XML" (in any combination\n of upper and lower case).\n'},{name:"err:XQST0127",type:"xs:QName",description:" It is a static error if a given feature is both required and prohibited, directly or indirectly, in a module.\n"},{name:"err:XQDY0074",type:"xs:QName",description:" It is a dynamic error if the value of the name expression in a computed\n element or attribute constructor cannot be converted to an expanded\n QName (for example, because it contains a namespace prefix not found in\n statically known namespaces).\n"},{name:"err:XQDY0084",type:"xs:QName",description:" It is a dynamic error if the element validated by a \\c validate statement\n does not have a top-level element declaration in the in-scope element\n declarations, if validation mode is \\c strict.\n"},{name:"err:XQDY0091",type:"xs:QName",description:" An implementation MAY raise a dynamic error if an \\c xml:id error, as\n defined in [XML ID], is encountered during construction of an attribute\n named \\c xml:id.\n"},{name:"err:XQDY0092",type:"xs:QName",description:" An implementation MAY raise a dynamic error if a constructed attribute\n named \\c xml:space has a value other than \\c preserve or \\c default.\n"},{name:"err:XQDY0096",type:"xs:QName",description:" It is a dynamic error the node-name of a node constructed by a computed\n element constructor has any of the following properties:\n - Its namespace prefix is \\c xmlns.\n - Its namespace URI is http://www.w3.org/2000/xmlns/.\n - Its namespace prefix is \\c xml and its namespace URI is not\n http://www.w3.org/XML/1998/namespace.\n - Its namespace prefix is other than \\c xml and its namespace URI is\n http://www.w3.org/XML/1998/namespace.\n"},{name:"err:XQDY0101",type:"xs:QName",description:" Invalid prefix and/or uri in computed namespace constructor\n"},{name:"err:XQDY0102",type:"xs:QName",description:" In an element constructor, if two or more namespace bindings in the in-scope bindings would have the same prefix, then an error is raised if they have different URIs; if they would have the same prefix and URI, duplicate bindings are ignored.\n"},{name:"err:XTDE1310",type:"xs:QName",description:" It is a non-recoverable dynamic error if the picture string does not\n satisfy the format-number function rules.\n"},{name:"err:FOFD1340",type:"xs:QName",description:" It is a non-recoverable dynamic error if the $picture, $language,\n $calendar, or $place argument for fn:format-date, fn:format-time, or\n fn:format-dateTime is invalid.\n"},{name:"err:FOFD1350",type:"xs:QName",description:" It is a non-recoverable dynamic error if a component specifier within\n the picture refers to components that are not available in the given\n type of $value.\n"},{name:"err:FTST0008",type:"xs:QName",description:" It is a static error if, during the static analysis phase, the query is\n found to contain a stop word option that refers to a stop word list that\n is not found in the statically known stop word lists.\n"},{name:"err:XQST0098",type:"xs:QName",description:" It is a static error if, for any named or unnamed decimal format, the\n properties representing characters used in a picture string do not each\n have distinct values. These properties are decimal-separator-sign,\n grouping-separator, percent-sign, per-mille-sign, zero-digit,\n digit-sign, and pattern-separator-sign.\n"},{name:"err:XQST0071",type:"xs:QName",description:" A static error is raised if the namespace declaration attributes of a\n direct element constructor do not have distinct names.\n"},{name:"err:XQST0076",type:"xs:QName",description:" It is a static error if a \\c collation subclause in an order by clause\n of a FLWOR expression does not identify a collation that is present in\n statically known collations.\n"},{name:"err:XQST0079",type:"xs:QName",description:" It is a static error if an extension expression contains neither a\n pragma that is recognized by the implementation nor an expression\n enclosed in curly braces.\n"},{name:"err:XQST0085",type:"xs:QName",description:" It is a static error if the namespace URI in a namespace declaration\n attribute is a zero-length string, and the implementation does not\n support [XML Names 1.1].\n"},{name:"err:XQST0087",type:"xs:QName",description:" It is a static error if the encoding specified in a Version Declaration\n does not conform to the definition of \\c EncName specified in [XML 1.0]\n"},{name:"err:XQST0088",type:"xs:QName",description:" It is a static error if the literal that specifies the target namespace\n in a module import or a module declaration is of zero length.\n"},{name:"err:XQST0089",type:"xs:QName",description:" It is a static error if a variable bound in a \\c for or \\c window clause\n of a FLWOR expression, and its associated positional variable, do not\n have distinct names (expanded QNames).\n"},{name:"err:XQST0090",type:"xs:QName",description:" It is a static error if a character reference does not identify a valid\n character in the version of XML that is in use.\n"},{name:"err:XQST0093",type:"xs:QName",description:" It is a static error to import a module M1 if there exists a sequence of\n modules M1 ... Mi ... M1 such that each module directly depends on the\n next module in the sequence (informally, if M1 depends on itself through\n some chain of module dependencies.)\n"},{name:"err:XQST0094",type:"xs:QName",description:" In the group by clause of a FLWOR expression, it is a static error if the\n name of a grouping variable is not equal (by the eq operator on expanded\n QNames) to the name of a variable that is bound by a for or let clause\n that precedes the group by clause.\n"},{name:"err:XQST0097",type:"xs:QName",description:" It is a static error for a decimal-format to specify a value that is\n not valid for a given property.\n"},{name:"err:NS",type:"item()*",description:""},{name:"err:XQST0099",type:"xs:QName",description:" If a module contains more than one context item declaration, a static error is raised [err:XQST0099].\n"},{name:"err:XQST0103",type:"xs:QName",description:" All variables in a window clause must have distinct names.\n"},{name:"err:XQST0106",type:"xs:QName",description:" It is a static error if a function's annotations contain more than one\n annotation named \\c private or \\c public. It is a static error if a\n function's annotations contain more than one annotation named \\c\n deterministic or \\c nondeterministic.\n"},{name:"err:XQST0111",type:"xs:QName",description:" It is a static error for a query prolog to contain two decimal formats\n with the same name, or to contain two default decimal formats.\n"},{name:"err:XQST0113",type:"xs:QName",description:" Specifying a VarValue or VarDefaultValue for a context item declaration\n in a library module is a static error.\n"},{name:"err:XQST0114",type:"xs:QName",description:" It is a static error for a decimal format declaration to define the\n same property more than once.\n"},{name:"err:XQST0116",type:"xs:QName",description:" It is a static error if a variable declaration contains both a %private\n and a %public annotation, more than one %private annotation, or more\n than one %public annotation.\n"},{name:"err:XQST0120",type:"xs:QName",description:" It is a static error if a feature required by require-feature is not\n supported by the implementation.\n"},{name:"err:XQST0122",type:"xs:QName",description:" It is a static error if the name of a feature in require-feature or\n prohibit-feature is not in the lexical space of QName.\n"},{name:"err:XQST0123",type:"xs:QName",description:" It is a static error if the name of a feature in require-feature is not\n recognized by the implementation.\n"},{name:"err:XQST0126",type:"xs:QName",description:" It is a static error if all-extensions appears in a require-feature option declaration.\n"}]},"http://zorba.io/modules/excel/math":{ns:"http://zorba.io/modules/excel/math",description:" This is a library module offering a part of the set of functions\n defined by Microsoft Excel 2003.\n",sees:['Excel 2003 Documentation: Math Functions'],authors:['Daniel Turcanu'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/excel/math",prefix:"excel"},{uri:"http://zorba.io/modules/excel/errors",prefix:"excel-err"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"abs",qname:"excel:abs",signature:"($arg as xs:anyAtomicType) as xs:anyAtomicType",description:" Compute the abs of a numeric value.\n The value can also be a string and it will be casted to the appropriate numeric first.\n",summary:"

Compute the abs of a numeric value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
The parameter can be a number, string, boolean value.
'}],returns:{type:"xs:anyAtomicType",description:"The abs value as a numeric type."},errors:['excel-err:Value if arg cannot be casted to numeric type.']},{isDocumented:!0,arity:1,name:"cast-as-numeric",qname:"excel:cast-as-numeric",signature:"($number as xs:anyAtomicType) as xs:anyAtomicType",description:" Cast the xs:anyAtomicType to a numeric type.\n If the value is already of a numeric type then nothing is changed.\n Otherwise the value is casted to the numeric type that is most appropriate.\n",summary:"

Cast the xs:anyAtomicType to a numeric type.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The parameter can be a number, string, boolean value.
'}],returns:{type:"xs:anyAtomicType",description:"The casted value."},errors:['excel-err:Value if the value cannot be casted to numeric type.']},{isDocumented:!0,arity:2,name:"ceiling",qname:"excel:ceiling",signature:"($number as xs:anyAtomicType, $significance as xs:anyAtomicType) as xs:anyAtomicType",description:" Returns number rounded up, away from zero, to the nearest multiple of significance.\n Significance must have the same sign as number.\n Number and significance must be of a numeric type or castable to numeric.\n Significance must not be zero.\n",summary:"

Returns number rounded up, away from zero, to the nearest multiple of significance.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The value you want to round.
'},{name:"significance",type:"xs:anyAtomicType",occurrence:null,description:'
The multiple to which you want to round.
'}],returns:{type:"xs:anyAtomicType",description:"The rounded value."},errors:['excel-err:Value if parameters cannot be casted to numeric type.','excel-err:Num if significance is zero or it doesn\'t have the same sign as number.']},{isDocumented:!0,arity:1,name:"degrees",qname:"excel:degrees",signature:"($radian as xs:double) as xs:integer",description:" Converts radians into degrees.\n",summary:"

Converts radians into degrees.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"radian",type:"xs:double",occurrence:null,description:'
The value in radians.
'}],returns:{type:"xs:integer",description:"The value in degrees 0 .. 360 or 0 .. -360."},errors:[]},{isDocumented:!0,arity:1,name:"even",qname:"excel:even",signature:"($number as xs:anyAtomicType) as xs:anyAtomicType",description:" Returns number rounded up to the nearest even integer.\n Regardless of the sign of number, a value is rounded up when adjusted away from zero.\n",summary:"

Returns number rounded up to the nearest even integer.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The value to round.
'}],returns:{type:"xs:anyAtomicType",description:"The rounded value casted as numeric type."},errors:['excel-err:Value if parameters cannot be casted to numeric type.']},{isDocumented:!0,arity:1,name:"fact",qname:"excel:fact",signature:"($number as xs:anyAtomicType) as xs:integer",description:" Returns the factorial of a number.\n",summary:"

Returns the factorial of a number.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The nonnegative number you want the factorial of. If number is not an integer, it is truncated.
'}],returns:{type:"xs:integer",description:"Returns the factorial of a number. The factorial of a number is equal to 1*2*3*...* number."},errors:['excel-err:Num if the number is smaller than zero']},{isDocumented:!0,arity:1,name:"factdouble",qname:"excel:factdouble",signature:"($number as xs:integer) as xs:integer",description:" Returns the double factorial of a number.\n Computes the double factorial of n as n(n-2)(n-4)...\n",summary:"

Returns the double factorial of a number.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:integer",occurrence:null,description:'
The positive integer value.
'}],returns:{type:"xs:integer",description:"The result as integer."},errors:['excel-err:Num if the number is negative.']},{isDocumented:!0,arity:2,name:"floor",qname:"excel:floor",signature:"($number as xs:anyAtomicType, $significance as xs:anyAtomicType) as xs:anyAtomicType",description:" Rounds number down, toward zero, to the nearest multiple of significance.\n Significance must have the same sign as number.\n",summary:"

Rounds number down, toward zero, to the nearest multiple of significance.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The value you want to round. The value is casted to numeric.
'},{name:"significance",type:"xs:anyAtomicType",occurrence:null,description:'
The multiple to which you want to round.
'}],returns:{type:"xs:anyAtomicType",description:"The rounded value as numeric type."},errors:['excel-err:Value if parameters cannot be casted to numeric type.','excel-err:Num if significance is zero or it doesn\'t have the same sign as number.']},{isDocumented:!0,arity:1,name:"gcd",qname:"excel:gcd",signature:"($numbers as xs:integer+) as xs:integer",description:" Returns the greatest common divisor GCD of a sequence of integers.\n The sequence can have one or more positive integers.\n",summary:"

Returns the greatest common divisor GCD of a sequence of integers.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"numbers",type:"xs:integer",occurrence:"+",description:'
The sequence of positive integers.
'}],returns:{type:"xs:integer",description:"The GCD as integer."},errors:['excel-err:Num if any number is smaller than zero.']},{isDocumented:!0,arity:1,name:"int",qname:"excel:int",signature:"($number as xs:anyAtomicType) as xs:integer",description:" Rounds a number down to the nearest integer.\n Positive numbers are rounded toward zero, negative numbers are rounded away from zero.\n",summary:"

Rounds a number down to the nearest integer.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The value to be rounded.
'}],returns:{type:"xs:integer",description:"The rounded integer."},errors:['excel-err:Value if parameter cannot be casted to numeric type']},{isDocumented:!0,arity:1,name:"is-a-number",qname:"excel:is-a-number",signature:"($value as xs:anyAtomicType) as xs:boolean",description:" Checks if the xs:anyAtomicType argument is actually a numeric type\n or can be converted to numeric.\n",summary:"

Checks if the xs:anyAtomicType argument is actually a numeric type\n or can be converted to numeric.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:null,description:'
Parameter to be checked.
'}],returns:{type:"xs:boolean",description:"true if the value can be casted to numeric."},errors:[]},{isDocumented:!0,arity:1,name:"lcm",qname:"excel:lcm",signature:"($numbers as xs:integer+) as xs:integer",description:' Returns the least common multiple of integers.

\n LCM for two numbers is computed by multiplying them and dividing with GCD.

\n The function is applied recursively replacing the first two numbers in the sequence with their LCM.\n',summary:"

Returns the least common multiple of integers.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"numbers",type:"xs:integer",occurrence:"+",description:'
The sequence of one or more positive integers.
'}],returns:{type:"xs:integer",description:"The LCM as integer."},errors:['excel-err:Num if any number is smaller than zero.']},{isDocumented:!0,arity:2,name:"mod",qname:"excel:mod",signature:"($number as xs:anyAtomicType, $divisor as xs:anyAtomicType) as xs:anyAtomicType",description:" Returns the remainder after number is divided by divisor.\n The result has the same sign as divisor.\n",summary:"

Returns the remainder after number is divided by divisor.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The number for which you want to find the remainder.
'},{name:"divisor",type:"xs:anyAtomicType",occurrence:null,description:'
The number by which you want to divide number. This cannot be zero.
'}],returns:{type:"xs:anyAtomicType",description:"The remainder from division as numeric type."},errors:['excel-err:Value if parameters cannot be casted to numeric type.','excel-err:Div0 if divisor is zero after casting to numeric.']},{isDocumented:!0,arity:2,name:"mround",qname:"excel:mround",signature:"($number as xs:anyAtomicType, $multiple as xs:anyAtomicType) as xs:anyAtomicType",description:" Returns a number rounded to the desired multiple.\n MROUND rounds up, away from zero, if the remainder of dividing number by multiple\n is greater than or equal to half the value of multiple.\n MROUND is computed through floor function.\n",summary:"

Returns a number rounded to the desired multiple.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The value to round, castable to numeric type.
'},{name:"multiple",type:"xs:anyAtomicType",occurrence:null,description:'
The multiple to which you want to round number.
'}],returns:{type:"xs:anyAtomicType",description:"The rounded number up to the desired multiple."},errors:['excel-err:Value if parameters cannot be casted to numeric type.']},{isDocumented:!0,arity:1,name:"odd",qname:"excel:odd",signature:"($number as xs:anyAtomicType) as xs:integer",description:" Returns number rounded up to the nearest odd integer, away from zero.\n",summary:"

Returns number rounded up to the nearest odd integer, away from zero.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The value to round.
'}],returns:{type:"xs:integer",description:"The odd integer."},errors:['excel-err:Value if parameter cannot be casted to numeric type.']},{isDocumented:!0,arity:0,name:"pi",qname:"excel:pi",signature:"() as xs:decimal",description:" Return the value of PI as decimal with 15 digits.\n",summary:"

Return the value of PI as decimal with 15 digits.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:decimal",description:"The value of PI with 15 digits."},errors:[]},{isDocumented:!0,arity:2,name:"power",qname:"excel:power",signature:"($number as xs:anyAtomicType, $power as xs:integer) as xs:anyAtomicType",description:" Returns the result of a number raised to a power.\n The result is computed through successive multiplications.\n",summary:"

Returns the result of a number raised to a power.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The base number.
'},{name:"power",type:"xs:integer",occurrence:null,description:'
The exponent as integer (cannot be floating point like in Excel).
'}],returns:{type:"xs:anyAtomicType",description:"The result as numeric type."},errors:['excel-err:Value if parameter cannot be casted to numeric type.','excel-err:Value if power is smaller than zero.']},{isDocumented:!0,arity:1,name:"product",qname:"excel:product",signature:"($numbers as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies all the numbers given as arguments and returns the product.\n",summary:"

Multiplies all the numbers given as arguments and returns the product.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"numbers",type:"xs:anyAtomicType",occurrence:"*",description:'
The sequence of arguments convertable to numeric types. The sequence can be of any length.
'}],returns:{type:"xs:anyAtomicType",description:"The multiplication result as numeric type."},errors:['excel-err:Value if parameters cannot be casted to numeric type.']},{isDocumented:!0,arity:2,name:"quotient",qname:"excel:quotient",signature:"($numerator as xs:anyAtomicType, $denominator as xs:anyAtomicType) as xs:integer",description:" Returns the integer portion of a division.\n",summary:"

Returns the integer portion of a division.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"numerator",type:"xs:anyAtomicType",occurrence:null,description:'
The divident.
'},{name:"denominator",type:"xs:anyAtomicType",occurrence:null,description:'
The divisor. It cannot be zero.
'}],returns:{type:"xs:integer",description:"The result value as numeric type."},errors:['excel-err:Value if parameters cannot be casted to numeric type.','excel-err:Div0 if denominator casted as numeric type has value zero.']},{isDocumented:!0,arity:1,name:"radians",qname:"excel:radians",signature:"($degree as xs:integer) as xs:decimal",description:" Converts degrees to radians.\n",summary:"

Converts degrees to radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"degree",type:"xs:integer",occurrence:null,description:'
An angle in degrees that you want to convert.
'}],returns:{type:"xs:decimal",description:"The value in radians."},errors:[]},{isDocumented:!0,arity:1,name:"roman",qname:"excel:roman",signature:"($number as xs:integer) as xs:string",description:' Converts an arabic numeral to roman, as text.\n Only the clasic format is supported (out of all formats Excel requires).

\n M is the largest digit, it represents 1000.\n Numbers bigger than 2000 will be represented by a sequence of "M".

\n D = 500, C = 100, L = 50, X = 10, V = 5, I = 1.\n',summary:"

Converts an arabic numeral to roman, as text.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:integer",occurrence:null,description:'
A positive integer.
'}],returns:{type:"xs:string",description:"The roman string representation."},errors:['excel-err:Num if the input integer is negative']},{isDocumented:!0,arity:2,name:"round",qname:"excel:round",signature:"($number as xs:anyAtomicType, $precision as xs:integer) as xs:anyAtomicType",description:" Rounds a number to a specified number of digits.\n If precision is greater than 0 (zero), then number is rounded\n to the specified number of decimal places.\n If num_digits is 0, then number is rounded to the nearest integer.\n If num_digits is less than 0, then number is rounded to the left of the decimal point.\n The 0.5 is rounded away from zero.\n",summary:"

Rounds a number to a specified number of digits.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The number to round, castable to a numeric type.
'},{name:"precision",type:"xs:integer",occurrence:null,description:'
The number of decimal places to keep.
'}],returns:{type:"xs:anyAtomicType",description:"The rounded number as numeric type."},errors:['excel-err:Value if parameters cannot be casted to numeric type.']},{isDocumented:!0,arity:2,name:"rounddown",qname:"excel:rounddown",signature:"($number as xs:anyAtomicType, $precision as xs:integer) as xs:anyAtomicType",description:" Rounds a number down, toward zero.\n If num_digits is greater than 0 (zero), then number is rounded down\n to the specified number of decimal places.\n If num_digits is 0, then number is rounded down to the nearest integer.\n If num_digits is less than 0, then number is rounded down to the left of the decimal point.\n",summary:"

Rounds a number down, toward zero.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The number to round, castable to numeric type.
'},{name:"precision",type:"xs:integer",occurrence:null,description:'
The number of decimal places to keep.
'}],returns:{type:"xs:anyAtomicType",description:"the truncated number toward zero, as numeric type."},errors:['excel-err:Value if parameters cannot be casted to numeric type.']},{isDocumented:!0,arity:2,name:"roundup",qname:"excel:roundup",signature:"($number as xs:anyAtomicType, $precision as xs:integer) as xs:anyAtomicType",description:" Rounds a number up, away from 0 (zero).\n If num_digits is greater than 0 (zero), then number is rounded down\n to the specified number of decimal places.\n If num_digits is 0, then number is rounded down to the nearest integer.\n If num_digits is less than 0, then number is rounded down to the left of the decimal point.\n",summary:"

Rounds a number up, away from 0 (zero).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The number to round, castable to numeric type.
'},{name:"precision",type:"xs:integer",occurrence:null,description:'
The number of decimal places to keep.
'}],returns:{type:"xs:anyAtomicType",description:"The truncated number away from zero, as numeric type."},errors:['excel-err:Value if parameters cannot be casted to numeric type.']},{isDocumented:!0,arity:1,name:"sign",qname:"excel:sign",signature:"($number as xs:anyAtomicType) as xs:integer",description:" Determines the sign of a number.\n Returns 1 if the number is positive, zero (0) if the number is 0,\n and -1 if the number is negative.\n",summary:"

Determines the sign of a number.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The argument castable to numeric type.
'}],returns:{type:"xs:integer",description:"The sign as (-1, 0, 1)."},errors:['excel-err:Value if parameters cannot be casted to numeric type.']},{isDocumented:!0,arity:1,name:"sort-numbers",qname:"excel:sort-numbers",signature:"($numbers as xs:anyAtomicType*) as xs:anyAtomicType*",description:' Helper function.

\n Sorts a sequence of numbers or arguments castable to numeric.\n It first casts all arguments to numeric and then sorts ascending.\n',summary:"

Helper function.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"numbers",type:"xs:anyAtomicType",occurrence:"*",description:'
The sequence of arguments castable to numeric.
'}],returns:{type:"xs:anyAtomicType*",description:"The sorted sequence as numeric types."},errors:['excel-err:Value if parameters cannot be casted to numeric type.']},{isDocumented:!0,arity:1,name:"sum",qname:"excel:sum",signature:"($numbers as xs:anyAtomicType*) as xs:anyAtomicType",description:" Adds all the numbers in the sequence.\n",summary:"

Adds all the numbers in the sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"numbers",type:"xs:anyAtomicType",occurrence:"*",description:'
The sequence of arguments castable to numeric types. The sequence can be of any length.
'}],returns:{type:"xs:anyAtomicType",description:"The sum as numeric type."},errors:['excel-err:Value if parameters cannot be casted to numeric type.']},{isDocumented:!0,arity:1,name:"trunc",qname:"excel:trunc",signature:"($number as xs:anyAtomicType) as xs:integer",description:" Truncates a number to an integer by removing the fractional part of the number.\n",summary:"

Truncates a number to an integer by removing the fractional part of the number.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The argument castable to numeric type.
'}],returns:{type:"xs:integer",description:"The integer value."},errors:['excel-err:Value if parameter cannot be casted to numeric type.']},{isDocumented:!0,arity:2,name:"trunc",qname:"excel:trunc",signature:"($number as xs:anyAtomicType, $precision as xs:integer) as xs:anyAtomicType",description:" Truncates a number down to precision.\n This behaves exactly like rounddown.\n",summary:"

Truncates a number down to precision.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:anyAtomicType",occurrence:null,description:'
The argument castable to numeric type.
'},{name:"precision",type:"xs:integer",occurrence:null,description:'
The number of decimal places to keep .
'}],returns:{type:"xs:anyAtomicType",description:"The integer value."},errors:['excel-err:Value if parameter cannot be casted to numeric type.']}],variables:[]},"http://api.28.io/browserview":{ns:"http://api.28.io/browserview",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"",prefix:"an"},{uri:"http://api.28.io/browserview",prefix:"browserview"},{uri:"http://api.28.io/model",prefix:"model"},{uri:"http://zorba.io/modules/reference",prefix:"ref"}],functions:[{isDocumented:!1,arity:1,name:"node-path",qname:"browserview:node-path",signature:"($node)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"node-reference",qname:"browserview:node-reference",signature:"($node, $short as xs:boolean)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:null,occurrence:null,description:""},{name:"short",type:"xs:boolean",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"serialize",qname:"browserview:serialize",signature:"($json)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"json",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"serializeMulti",qname:"browserview:serializeMulti",signature:"($json)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"json",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"show-namespaces",qname:"browserview:show-namespaces",signature:"($namespaces)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"show-node",qname:"browserview:show-node",signature:"($node, $namespaces, $short as xs:boolean)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"node",type:null,occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""},{name:"short",type:"xs:boolean",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"show-nodes",qname:"browserview:show-nodes",signature:"($nodes)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"nodes",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]}],variables:[]},"http://zorba.io/modules/json-csv":{ns:"http://zorba.io/modules/json-csv",description:' This module provides an API for parsing and serializing CSV (comma-separated\n values) files.\n See RFC 4180,\n "Common Format and MIME Type for Comma-Separated Values (CSV) Files."\n',sees:[],authors:['Paul J. Lucas'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/json-csv",prefix:"csv"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"parse",qname:"csv:parse",signature:"($csv as string) as object()*",description:' Parses a CSV (comma-separated values) string using the default options.\n A newline (U+000A), optionally preceeded by a carriage-return (U+000D),\n terminates lines, aka, "records."\n

\n Quoted values are always considered strings;\n unquoted values are attempted to be cast to other types, e.g., integer\n (unless the cast-unquoted-values option is false).\n Casting is attempted in the following order:\n integer, decimal, double, and boolean.\n If casting fails, the value is considered a string.\n Header field names are always considered strings even if unquoted.\n

\n In addition to the "normal" values of\n true and false for boolean,\n T and Y are also considered "true"\n and F and N are also considered "false."\n

\n The default options are:\n

\n
cast-unquoted-values
\n
\n Whether to attempt to cast unquoted values to\n integer, decimal, double, or boolean;\n default: true.\n
\n
extra-name
\n
\n The field name for extra values, if any;\n default: none (error csv:EXTRA_VALUE is raised).\n
\n
field-names
\n
\n A JSON array of strings denoting field names;\n default: none.\n The first CSV line is assumed to be a header line\n and the field names are taken from this line.\n
\n
missing-value
\n
\n What should happen when a missing value is detected;\n default: "null".\n A "missing" value is one of:\n
    \n
  • Two consecutive quote-char characters.
  • \n
  • A quote-char character as either the first\n or last character on a line.
  • \n
  • Fewer values than the number of field names.
  • \n
\n When a missing value is detected,\n the value is set to null.\n
\n
quote-char
\n
\n The single ASCII character that may be used to quote values;\n default: " (U+0022).\n
\n
quote-escape
\n
\n The single ASCII character used to escape quote-char;\n default: same as quote-char.\n This means that an escaped quote is doubled as "".\n
\n
separator
\n
\n The single ASCII character used to separate values;\n default: , (U+002C).\n
\n
\n',summary:"

Parses a CSV (comma-separated values) string using the default options.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"csv",type:"string",occurrence:null,description:'
The CSV string to parse.
'}],returns:{type:"object()*",description:"a sequence of zero or more JSON objects where each key is a field name and each value is a parsed value."},errors:['csv:EXTRA_VALUE if an extra value is detected.']},{isDocumented:!0,arity:2,name:"parse",qname:"csv:parse",signature:"($csv as string, $options as object()) as object()* external",description:' Parses a CSV (comma-separated values) string using the given options.\n A newline (U+000A), optionally preceeded by a carriage-return (U+000D),\n terminates lines, aka, "records."\n

\n Quoted values are always considered strings;\n unquoted values are attempted to be cast to other types, e.g., integer\n (unless the cast-unquoted-values option is false).\n Casting is attempted in the following order:\n integer, decimal, double, and boolean.\n If casting fails, the value is considered a string.\n Header field names are always considered strings even if unquoted.\n

\n In addition to the "normal" values of\n true and false for boolean,\n T and Y are also considered "true"\n and F and N are also considered "false."\n',summary:"

Parses a CSV (comma-separated values) string using the given options.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"csv",type:"string",occurrence:null,description:'
The CSV string to parse.
'},{name:"options",type:"object()",occurrence:null,description:'
The options to use:
cast-unquoted-values
Whether to attempt to cast unquoted values to integer, decimal, double, or boolean; default: true.
extra-name
The field name for extra values, if any; default: none (error csv:EXTRA_VALUE is raised). If this option is given and a line contains one or more extra values (that is, values that have no corresponding field names), then the extra values are assigned as the values for fields having extra-name as their names.

If extra-name contains a # (U+0023), then the # is substituted with the field number (where field numbers start at 1). If extra-name does not contains a #, then the field number is appended.

field-names
A JSON array of strings denoting field names; default: none. If this option is given, then the first CSV line is assumed not to be a header line; if omitted, then the first CSV line is assumed to be a header line and the field names are taken from this line.
missing-value
What should happen when a missing value is detected; default: "null". A "missing" value is one of:
  • Two consecutive separator characters.
  • A separator character as either the first or last character on a line.
  • Fewer values than the number of field names.
When a missing value is detected, the value of this option determines what happens:
"error"
Error csv:MISSING_VALUE is raised.
"omit"
Both the value and its key are omitted from the result object.
"null"
The value is set to null.
quote-char
The single ASCII character that may be used to quote values; default: " (U+0022).
quote-escape
The single ASCII character used to escape quote-char; default: same as quote-char. If quote-escape equals quote-char, it means that quote-char must be doubled to escape it. If quote-escape does not equal quote-char, it means that quote-escape is used to escape quote-char. For example, a quote-char of " (U+0022) and a quote-escape of \\ (U+005C) means that quotes will be escaped by \\".
separator
The single ASCII character used to separate values; default: , (U+002C).
'}],returns:{type:"object()*",description:"a sequence of zero or more JSON objects where each key is a field name and each value is a parsed value."},errors:['csv:INVALID_OPTION if the quote-char, quote-escape, or separator option is given and it\'s not a single ASCII character.','csv:MISSING_VALUE if a missing value is detected and the missing-value option is "error".','csv:EXTRA_VALUE if an extra value is detected and the extra-name option is not set.']},{isDocumented:!0,arity:1,name:"serialize",qname:"csv:serialize",signature:"($obj as object()*) as string*",description:' Serializes a sequence of JSON objects as CSV (comma-separated values) using\n the default options.\n The default options are:\n
\n
field-names
\n
\n A JSON array of strings denoting field names;\n default: none.\n The field names are taken from the first JSON object\n and the order of the fields is implementation dependent.\n
\n
serialize-boolean-as
\n
\n What strings to serialize true and false as;\n default: true and false.\n
\n
serialize-header
\n
\n Whether a header line is included;\n default: true.\n The first string result is the header line\n comprised of all the objects\' keys\' names.\n
\n
serialize-null-as
\n
\n What string to serialize JSON null values as;\n default: null.\n
\n
quote-char
\n
\n The single ASCII character that may be used to quote values;\n default: " (U+0022).\n
\n
quote-escape
\n
\n The single ASCII character used to escape quote-char;\n default: same as quote-char.\n This means that quote-char is doubled to escape it.\n
\n
separator
\n
\n The single ASCII character used to separate values;\n default: , (U+002C).\n
\n
\n',summary:"

Serializes a sequence of JSON objects as CSV (comma-separated values) using\n the default options.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"obj",type:"object()",occurrence:"*",description:'
The sequence of JSON objects to serialize.
'}],returns:{type:"string*",description:'a sequence of strings where each string corresponds to a JSON object, aka, "record."'},errors:[]},{isDocumented:!0,arity:2,name:"serialize",qname:"csv:serialize",signature:"($obj as object()*, $options as object()) as string* external",description:" Serializes a sequence of JSON objects as CSV (comma-separated values) using\n the given options.\n",summary:"

Serializes a sequence of JSON objects as CSV (comma-separated values) using\n the given options.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"obj",type:"object()",occurrence:"*",description:'
The sequence of JSON objects to serialize.
'},{name:"options",type:"object()",occurrence:null,description:'
The options to use:
field-names
A JSON array of strings denoting field names; default: none. If this option is not set, the field names are taken from the first JSON object and the order of the fields is implementation dependent. If this option is set, the fields are serielized in the order they are in the array. In either case, every JSON object must have the same keys as the first object.
serialize-boolean-as
What strings to serialize true and false as; default: true and false. This must be a sub-object with the two keys "true" and "false", e.g.: { "true" : "Y", "false" : "N" }.
serialize-header
Whether a header line is included; default: true. If true, the first string result is the header line comprised of all the objects\' keys\' names; if false, the heder line is not returned.
serialize-null-as
What string to serialize JSON null values as; default: null.
quote-char
The single ASCII character that may be used to quote values; default: " (U+0022).
quote-escape
The single ASCII character used to escape quote-char; default: same as quote-char. If quote-escape equals quote-char, it means that quote-char must be doubled to escape it. If quote-escape does not equal quote-char, it means that quote-escape is used to escape quote-char. For example, a quote-char of " (U+0022) and a quote-escape of \\ (U+005C) means that quotes will be escaped by \\".
separator
The single ASCII character used to separate values; default: , (U+002C).
'}],returns:{type:"string*",description:'a sequence of strings where each string corresponds to a JSON object, aka, "record."'},errors:[]}],variables:[]},"http://www.zorba-xquery.com/modules/email/imap":{ns:"http://www.zorba-xquery.com/modules/email/imap",description:' This module provides functions for accessing and manipulating emails on mail\n servers through the IMAP protocol.\n All functions in this module receive as the first argument the IMAP host and user\n information. This is an element with the type hostInfoType as defined\n in the email schema: http://www.zorba-xquery.com/modules/email.\n For example:\n
\n <email:hostInfo>\n   <email:hostName>imap.example.com</email:hostName>\n   <email:userName>myuser</email:userName>\n   <email:password>mypassword</email:password>\n </email:hostInfo>\n 
\n The hostInfoType only needs to be in the email schema namespace\n (http://www.zorba-xquery.com/modules/email). It does not need\n to be validated since it\'s validated by the module.\n',sees:['c-client library part of UW IMAP toolkit'],authors:['Daniel Thomas, Gabriel Petrovay'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.zorba-xquery.com/modules/email",prefix:"email"},{uri:"http://www.zorba-xquery.com/modules/email/imap",prefix:"imap"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:5,name:"copy",qname:"imap:copy",signature:"($host-info as element(email:hostInfo), $mailbox-from as xs:string, $mailbox-to as xs:string, $messages as xs:long+, $uid as xs:boolean?) as empty-sequence()",description:' Copies messages between mailboxes.\n Depending on the value of $uid, the messages are either specified\n through their sequence number or through their unique id. Both mailboxes must exist.\n',summary:"

Copies messages between mailboxes.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox-from",type:"xs:string",occurrence:null,description:'
The mailbox in which the messages reside.
'},{name:"mailbox-to",type:"xs:string",occurrence:null,description:'
The mailbox in to which the messages are copied.
'},{name:"messages",type:"xs:long",occurrence:"+",description:'
The messages to be copied, specified either by their sequence number or their unique id.
'},{name:"uid",type:"xs:boolean",occurrence:"?",description:'
If true, $messages are treated as sequence numbers. Else as unique identifiers.
'}],returns:{type:"empty-sequence()",description:"The function is declared as sequential and has side-effects. It returns the empty sequence."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','imap:IMAP0003 If no message is found with the provided sequence number/unique identifier.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:2,name:"create",qname:"imap:create",signature:"($host-info as element(email:hostInfo), $mailbox-name as xs:string) as empty-sequence()",description:" Creates a new mailbox for the given user.\n",summary:"

Creates a new mailbox for the given user.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox-name",type:"xs:string",occurrence:null,description:'
The name for the new mailbox.
'}],returns:{type:"empty-sequence()",description:"The function is declared as sequential and has side-effects. It returns the empty sequence."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:2,name:"delete",qname:"imap:delete",signature:"($host-info as element(email:hostInfo), $mailbox-name as xs:string) as empty-sequence()",description:" Deletes a mailbox for the given user.\n",summary:"

Deletes a mailbox for the given user.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox-name",type:"xs:string",occurrence:null,description:'
The name of the mailbox to delete.
'}],returns:{type:"empty-sequence()",description:"The function is declared as sequential and has side-effects. It returns the empty sequence."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:2,name:"expunge",qname:"imap:expunge",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string) as empty-sequence()",description:' Permanently deletes all messages of the given mailbox that have the "deleted" flag set.\n',summary:'

Permanently deletes all messages of the given mailbox that have the "deleted" flag set.

',annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox for which all messages that have the \\Deleted flag set should be permanently deleted.
'}],returns:{type:"empty-sequence()",description:"The function is declared as sequential and has side-effects. It returns the empty sequence."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:4,name:"fetch-envelope",qname:"imap:fetch-envelope",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string, $message-number as xs:long, $uid as xs:boolean?) as element(email:envelope)",description:" Fetches the envelope of a message.\n",summary:"

Fetches the envelope of a message.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox in which to search for the message.
'},{name:"message-number",type:"xs:long",occurrence:null,description:'
The message for which to fetch the envelope (depending on $uid either as message sequence number or unique identifier).
'},{name:"uid",type:"xs:boolean",occurrence:"?",description:'
If true, $message-number is treated as sequence number. Else as unique identifier.
'}],returns:{type:"element(email:envelope)",description:'The envelope of the requested message. The result is validated against the schema: http://www.zorba-xquery.com/modules/email.'},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','imap:IMAP0003 If no message is found with the provided sequence number/unique identifier.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:4,name:"fetch-flags",qname:"imap:fetch-flags",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string, $message-number as xs:long, $uid as xs:boolean?) as element(email:flags)",description:" Fetches the flags of a message.\n",summary:"

Fetches the flags of a message.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox containing the specified message.
'},{name:"message-number",type:"xs:long",occurrence:null,description:'
Either the message sequence number or the unique identifier of the message.
'},{name:"uid",type:"xs:boolean",occurrence:"?",description:'
If true, $message-number is treated as sequence number. Else as unique identifier.
'}],returns:{type:"element(email:flags)",description:'The flags of the specified message. The result is validated against the schema: http://www.zorba-xquery.com/modules/email.'},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','imap:IMAP0003 If no message is found with the provided sequence number/unique identifier.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:3,name:"fetch-from",qname:"imap:fetch-from",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string, $message-number as xs:long) as xs:string",description:" Fetches the 'from' string of a message.\n Please note that this function only words with message sequence numbers,\n not with unique identifiers. Only the first 255 characters of a 'from'\n string are fetched.\n",summary:"

Fetches the 'from' string of a message.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:"
The mailbox for which we want to get the 'from' string of a message.
"},{name:"message-number",type:"xs:long",occurrence:null,description:"
Denotes the message for which we want the 'from' string.
"}],returns:{type:"xs:string",description:"The 'from' string of the specified message."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','imap:IMAP0003 If no message is found with the provided sequence number/unique identifier.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:3,name:"fetch-message-sequence-number",qname:"imap:fetch-message-sequence-number",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string, $message-number as xs:long) as xs:long",description:" Fetches the message sequence number for a given unique identifier.\n",summary:"

Fetches the message sequence number for a given unique identifier.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox for which we want to get the message sequence number of an unique identifier.
'},{name:"message-number",type:"xs:long",occurrence:null,description:'
The unique identifier for which we want the message sequence number.
'}],returns:{type:"xs:long",description:"The message sequence number of the of the given unique identifier."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','imap:IMAP0003 If no message is found with the provided sequence number/unique identifier.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:4,name:"fetch-message",qname:"imap:fetch-message",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string, $message-number as xs:long, $uid as xs:boolean) as element(email:message)",description:" Fetches a whole message.\n",summary:"

Fetches a whole message.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox in which to search for the message.
'},{name:"message-number",type:"xs:long",occurrence:null,description:'
The message to fetch, denoted either by its sequence number or unique identifier.
'},{name:"uid",type:"xs:boolean",occurrence:null,description:'
If true, $message-number is treated as sequence number. Else as unique identifier.
'}],returns:{type:"element(email:message)",description:'the message with the given $message-number. The result is validated against the schema: http://www.zorba-xquery.com/modules/email.'},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','imap:IMAP0003 If no message is found with the provided sequence number/unique identifier.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:3,name:"fetch-subject",qname:"imap:fetch-subject",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string, $message-number as xs:long) as xs:string",description:" Fetches the subject for a message.\n Please note that this function only works with message sequence numbers,\n not with unique identifiers. Only the first 255 characters of a subject\n are fetched.\n",summary:"

Fetches the subject for a message.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox for which we want to get the subject of a message.
'},{name:"message-number",type:"xs:long",occurrence:null,description:'
Denotes the message for which we want the subject.
'}],returns:{type:"xs:string",description:"The subject of the specified message."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','imap:IMAP0003 If no message is found with the provided sequence number/unique identifier.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:3,name:"fetch-uid",qname:"imap:fetch-uid",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string, $message-number as xs:long) as xs:long",description:" Fetches the unique identifier for a given message sequence number.\n",summary:"

Fetches the unique identifier for a given message sequence number.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox for which we want to get the unique identifier of a message sequence number.
'},{name:"message-number",type:"xs:long",occurrence:null,description:'
The message sequence number for which we want the unique identifier.
'}],returns:{type:"xs:long",description:"The unique identifier of the given message sequence number."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','imap:IMAP0003 If no message is found with the provided sequence number/unique identifier.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:4,name:"list",qname:"imap:list",signature:"($host-info as element(email:hostInfo), $mailbox-ref as xs:string, $pattern as xs:string, $only-subscribed as xs:boolean) as element(email:mailbox)*",description:" Lists IMAP folders for the specified user on the host that match the pattern.\n",summary:"

Lists IMAP folders for the specified user on the host that match the pattern.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox-ref",type:"xs:string",occurrence:null,description:'
is applied to pattern in an implementation dependent fashion to search for matching mailbox names.
'},{name:"pattern",type:"xs:string",occurrence:null,description:"
The pattern for mailboxes to look for (can include wildcards '*' and '%').
"},{name:"only-subscribed",type:"xs:boolean",occurrence:null,description:'
If set true, only mailboxes are listed to which the user is subscribed.
'}],returns:{type:"element(email:mailbox)*",description:'A sequence of mailbox elements. The result elements are validated against the schema: http://www.zorba-xquery.com/modules/email.'},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:5,name:"move",qname:"imap:move",signature:"($host-info as element(email:hostInfo), $mailbox-from as xs:string, $mailbox-to as xs:string, $messages as xs:long+, $uid as xs:boolean?) as empty-sequence()",description:' Moves messages between mailboxes.\n Depending on the value of $uid, the messages are either specified through\n their sequence number or through their unique id. Both mailboxes must exist.\n',summary:"

Moves messages between mailboxes.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox-from",type:"xs:string",occurrence:null,description:'
The mailbox in which the messages reside.
'},{name:"mailbox-to",type:"xs:string",occurrence:null,description:'
The mailbox in to which the messages should be moved.
'},{name:"messages",type:"xs:long",occurrence:"+",description:'
The messages to be copied, specified either by their sequence number or their unique id.
'},{name:"uid",type:"xs:boolean",occurrence:"?",description:'
If true, $messages are treated as sequence numbers. Else as unique identifiers.
'}],returns:{type:"empty-sequence()",description:"The function is declared as sequential and has side-effects. It returns the empty sequence."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','imap:IMAP0003 If no message is found with the provided sequence number/unique identifier.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:3,name:"rename",qname:"imap:rename",signature:"($host-info as element(email:hostInfo), $mailbox-old as xs:string, $mailbox-new as xs:string) as empty-sequence()",description:" Renames a mailbox.\n",summary:"

Renames a mailbox.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox-old",type:"xs:string",occurrence:null,description:'
The name of the mailbox we want to rename.
'},{name:"mailbox-new",type:"xs:string",occurrence:null,description:'
The new name for the mailbox.
'}],returns:{type:"empty-sequence()",description:"The function is declared as sequential and has side-effects. It returns the empty sequence."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:4,name:"search",qname:"imap:search",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string, $criteria as xs:string, $uid as xs:boolean?) as xs:long*",description:" Searches a mailbox for messages that match the given criteria.\n The criteria should be a string as defined in the RFC3501 (IMAP4rev1).\n A valid example would be: 'FROM zorba@gmail.com OR NOT SUBJECT Bug'.\n Depending on the value of $uid, the function will either\n return matching sequence numbers or unique identifiers.\n",summary:"

Searches a mailbox for messages that match the given criteria.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox to search.
'},{name:"criteria",type:"xs:string",occurrence:null,description:'
The searching criteria.
'},{name:"uid",type:"xs:boolean",occurrence:"?",description:'
If true, the function returns the sequence of unique identifiers corresponding to the matching mails, else the corresponding sequence numbers are returned.
'}],returns:{type:"xs:long*",description:"Either the sequence of matching sequence numbers or the sequence of matching unique identifiers."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:5,name:"set-flags",qname:"imap:set-flags",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string, $message-number as xs:long, $flags as element(email:flags), $uid as xs:boolean?) as empty-sequence()",description:' Sets the flags for a given message.\n The flags are set and unset according to the passed $flags.\n',summary:"

Sets the flags for a given message.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox containing the specified message.
'},{name:"message-number",type:"xs:long",occurrence:null,description:'
Either the message sequence number or the unique identifier of the message (depending on the value of $uid).
'},{name:"flags",type:"element(email:flags)",occurrence:null,description:'
Defines which flags should be set for this message. The possibilities are "seen", "deleted", "flagged", "answered", and "draft". Setting all flags at once is done by passing the element: <email:flags> <email:seen/> <email:deleted/> <email:flagged/> <email:answered/> <email:draft/> </email:flags> . Setting "flagged" only and unsetting all other at once can be done by passing: <email:flags> <email:flagged/> </email:flags> .
'},{name:"uid",type:"xs:boolean",occurrence:"?",description:'
If true, $message-number is treated as sequence number. Else as unique identifier.
'}],returns:{type:"empty-sequence()",description:"The function is declared as sequential and has side-effects. It returns the empty sequence."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','imap:IMAP0003 If no message is found with the provided sequence number/unique identifier.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:2,name:"status",qname:"imap:status",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string) as element(email:status)",description:' Returns the status of the given mailbox.\n The status of a mailbox contains:\n \n',summary:"

Returns the status of the given mailbox.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox for which we want to have the status.
'}],returns:{type:"element(email:status)",description:'The status of the specified $mailbox. The result is validated against the schema: http://www.zorba-xquery.com/modules/email.'},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:2,name:"subscribe",qname:"imap:subscribe",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string) as empty-sequence()",description:" Subscribes the user to the specified mailbox.\n",summary:"

Subscribes the user to the specified mailbox.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox the user wants to subscribe to.
'}],returns:{type:"empty-sequence()",description:"The function is declared as sequential and has side-effects. It returns the empty sequence."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']},{isDocumented:!0,arity:2,name:"unsubscribe",qname:"imap:unsubscribe",signature:"($host-info as element(email:hostInfo), $mailbox as xs:string) as empty-sequence()",description:" Unsubscribes the user from the specified mailbox.\n",summary:"

Unsubscribes the user from the specified mailbox.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The IMAP host, user name, and password.
'},{name:"mailbox",type:"xs:string",occurrence:null,description:'
The mailbox the user wants to unsubscribe from.
'}],returns:{type:"empty-sequence()",description:"The function is declared as sequential and has side-effects. It returns the empty sequence."},errors:['imap:IMAP0001 If the IMAP operation failed.','imap:IMAP0002 If the connection to the IMAP server is refused.','err:XQDY0027 If the value of $host-info is not valid according to the email schema: http://www.zorba-xquery.com/modules/email']}],variables:[]},"http://zorba.io/errors":{ns:"http://zorba.io/errors",description:" This module contains one variable declaration for each diagnostic of the\n http://zorba.io/errors namespace.\n The variables serves as documentation for the errors but can also\n be used in the code. For example, one useful scenario is to compare\n an error caught in the catch clause of a try-catch expression with one of\n the variables.\n",sees:[],authors:['Carlos Lopez'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[],variables:[{name:"zerr:ZDST0032",type:"item()*",description:""},{name:"zerr:ZDST0004",type:"item()*",description:""},{name:"zerr:ZDST0006",type:"item()*",description:""},{name:"zerr:ZDST0007",type:"item()*",description:""},{name:"zerr:ZDST0021",type:"item()*",description:""},{name:"zerr:ZDST0022",type:"item()*",description:""},{name:"zerr:ZDST0023",type:"item()*",description:""},{name:"zerr:ZDST0024",type:"item()*",description:""},{name:"zerr:ZDST0025",type:"item()*",description:""},{name:"zerr:ZDST0026",type:"item()*",description:""},{name:"zerr:ZDST0027",type:"item()*",description:""},{name:"zerr:ZDST0028",type:"item()*",description:""},{name:"zerr:ZDST0029",type:"item()*",description:""},{name:"zerr:ZDST0030",type:"item()*",description:""},{name:"zerr:ZDST0031",type:"item()*",description:""},{name:"zerr:ZDST0003",type:"item()*",description:""},{name:"zerr:ZDST0033",type:"item()*",description:""},{name:"zerr:ZDST0034",type:"item()*",description:""},{name:"zerr:ZDST0035",type:"item()*",description:""},{name:"zerr:ZDST0036",type:"item()*",description:""},{name:"zerr:ZDST0041",type:"item()*",description:""},{name:"zerr:ZDST0044",type:"item()*",description:""},{name:"zerr:ZDST0048",type:"item()*",description:""},{name:"zerr:ZDST0060",type:"item()*",description:""},{name:"zerr:ZDTY0001",type:"item()*",description:""},{name:"zerr:ZDTY0010",type:"item()*",description:""},{name:"zerr:ZDTY0011",type:"item()*",description:""},{name:"zerr:ZDTY0012",type:"item()*",description:""},{name:"zerr:ZGDB0001",type:"item()*",description:""},{name:"zerr:ZOSE0001",type:"item()*",description:""},{name:"zerr:ZDDY0038",type:"item()*",description:""},{name:"zerr:ZDDY0024",type:"item()*",description:""},{name:"zerr:ZDDY0025",type:"item()*",description:""},{name:"zerr:ZDDY0026",type:"item()*",description:""},{name:"zerr:ZDDY0027",type:"item()*",description:""},{name:"zerr:ZDDY0028",type:"item()*",description:""},{name:"zerr:ZDDY0029",type:"item()*",description:""},{name:"zerr:ZDDY0030",type:"item()*",description:""},{name:"zerr:ZDDY0031",type:"item()*",description:""},{name:"zerr:ZDDY0032",type:"item()*",description:""},{name:"zerr:ZDDY0033",type:"item()*",description:""},{name:"zerr:ZDDY0034",type:"item()*",description:""},{name:"zerr:ZDDY0035",type:"item()*",description:""},{name:"zerr:ZDDY0036",type:"item()*",description:""},{name:"zerr:ZDDY0037",type:"item()*",description:""},{name:"zerr:ZOSE0002",type:"item()*",description:""},{name:"zerr:ZDDY0039",type:"item()*",description:""},{name:"zerr:ZDDY0040",type:"item()*",description:""},{name:"zerr:ZDDY0041",type:"item()*",description:""},{name:"zerr:ZDDY0042",type:"item()*",description:""},{name:"zerr:ZDDY0043",type:"item()*",description:""},{name:"zerr:ZDDY1000",type:"item()*",description:""},{name:"zerr:ZDDY1001",type:"item()*",description:""},{name:"zerr:ZDDY1003",type:"item()*",description:""},{name:"zerr:ZDDY1004",type:"item()*",description:""},{name:"zerr:ZDDY1005",type:"item()*",description:""},{name:"zerr:ZDDY1006",type:"item()*",description:""},{name:"zerr:ZDST0001",type:"item()*",description:""},{name:"zerr:ZDST0002",type:"item()*",description:""},{name:"zerr:ZJPE0005",type:"item()*",description:""},{name:"zerr:XSST0001",type:"item()*",description:""},{name:"zerr:XSST0002",type:"item()*",description:""},{name:"zerr:XSST0003",type:"item()*",description:""},{name:"zerr:XSST0004",type:"item()*",description:""},{name:"zerr:XSST0005",type:"item()*",description:""},{name:"zerr:XSST0006",type:"item()*",description:""},{name:"zerr:XSST0007",type:"item()*",description:""},{name:"zerr:XSST0008",type:"item()*",description:""},{name:"zerr:XSST0009",type:"item()*",description:""},{name:"zerr:XSST0010",type:"item()*",description:""},{name:"zerr:ZJPE0001",type:"item()*",description:""},{name:"zerr:ZJPE0002",type:"item()*",description:""},{name:"zerr:ZJPE0003",type:"item()*",description:""},{name:"zerr:ZJPE0004",type:"item()*",description:""},{name:"zerr:ZSTR0066",type:"item()*",description:""},{name:"zerr:ZJPE0006",type:"item()*",description:""},{name:"zerr:ZJPE0007",type:"item()*",description:""},{name:"zerr:ZJPE0008",type:"item()*",description:""},{name:"zerr:ZJPE0009",type:"item()*",description:""},{name:"zerr:ZJPE0010",type:"item()*",description:""},{name:"zerr:ZJSE0001",type:"item()*",description:""},{name:"zerr:ZJSE0002",type:"item()*",description:""},{name:"zerr:ZJSE0003",type:"item()*",description:""},{name:"zerr:ZJSE0004",type:"item()*",description:""},{name:"zerr:ZJSE0007",type:"item()*",description:""},{name:"zerr:ZJSE0008",type:"item()*",description:""},{name:"zerr:ZJSE0009",type:"item()*",description:""},{name:"zerr:ZJ2X0001",type:"item()*",description:""},{name:"zerr:ZSTR0012",type:"item()*",description:""},{name:"zerr:ZOSE0003",type:"item()*",description:""},{name:"zerr:ZOSE0004",type:"item()*",description:""},{name:"zerr:ZOSE0005",type:"item()*",description:""},{name:"zerr:ZOSE0006",type:"item()*",description:""},{name:"zerr:ZOSE0007",type:"item()*",description:""},{name:"zerr:ZSTR0001",type:"item()*",description:""},{name:"zerr:ZSTR0002",type:"item()*",description:""},{name:"zerr:ZSTR0003",type:"item()*",description:""},{name:"zerr:ZSTR0004",type:"item()*",description:""},{name:"zerr:ZSTR0007",type:"item()*",description:""},{name:"zerr:ZSTR0008",type:"item()*",description:""},{name:"zerr:ZSTR0009",type:"item()*",description:""},{name:"zerr:ZSTR0010",type:"item()*",description:""},{name:"zerr:ZSTR0011",type:"item()*",description:""},{name:"zerr:ZDDY0023",type:"item()*",description:""},{name:"zerr:ZSTR0013",type:"item()*",description:""},{name:"zerr:ZSTR0015",type:"item()*",description:""},{name:"zerr:ZSTR0016",type:"item()*",description:""},{name:"zerr:ZSTR0020",type:"item()*",description:""},{name:"zerr:ZSTR0021",type:"item()*",description:""},{name:"zerr:ZSTR0030",type:"item()*",description:""},{name:"zerr:ZSTR0040",type:"item()*",description:""},{name:"zerr:ZSTR0041",type:"item()*",description:""},{name:"zerr:ZSTR0045",type:"item()*",description:""},{name:"zerr:ZSTR0050",type:"item()*",description:""},{name:"zerr:ZSTR0055",type:"item()*",description:""},{name:"zerr:ZSTR0060",type:"item()*",description:""},{name:"zerr:ZSTR0065",type:"item()*",description:""},{name:"zerr:ZXQD0004",type:"item()*",description:""},{name:"zerr:ZXQP0036",type:"item()*",description:""},{name:"zerr:ZXQP0037",type:"item()*",description:""},{name:"zerr:ZXQP0038",type:"item()*",description:""},{name:"zerr:ZXQP0039",type:"item()*",description:""},{name:"zerr:ZXQP0040",type:"item()*",description:""},{name:"zerr:ZXQP0050",type:"item()*",description:""},{name:"zerr:ZXQP0060",type:"item()*",description:""},{name:"zerr:ZXQP0061",type:"item()*",description:""},{name:"zerr:ZXQP8401",type:"xs:QName",description:" The version of the thesaurus is not the expected version.\n"},{name:"zerr:ZXQP8402",type:"xs:QName",description:" The thesaurus data file's endianness does not match that of the CPU.\n"},{name:"zerr:ZXQP8403",type:"xs:QName",description:" The thesaurus data contains an unexpected value.\n"},{name:"zerr:ZXQD0001",type:"item()*",description:""},{name:"zerr:ZXQD0002",type:"item()*",description:""},{name:"zerr:ZXQD0003",type:"item()*",description:""},{name:"zerr:ZXQP0035",type:"item()*",description:""},{name:"zerr:ZXQD0005",type:"item()*",description:""},{name:"zerr:ZXQD0006",type:"item()*",description:""},{name:"zerr:ZAPI0002",type:"item()*",description:""},{name:"zerr:ZAPI0003",type:"item()*",description:""},{name:"zerr:ZAPI0004",type:"item()*",description:""},{name:"zerr:ZAPI0005",type:"item()*",description:""},{name:"zerr:ZAPI0006",type:"item()*",description:""},{name:"zerr:ZAPI0007",type:"item()*",description:""},{name:"zerr:ZAPI0008",type:"item()*",description:""},{name:"zerr:ZAPI0009",type:"item()*",description:""},{name:"zerr:ZAPI0011",type:"item()*",description:""},{name:"zerr:ZAPI0014",type:"item()*",description:""},{name:"zerr:ZAPI0015",type:"item()*",description:""},{name:"zerr:ZAPI0019",type:"item()*",description:""},{name:"zerr:ZXQP0014",type:"item()*",description:""},{name:"zerr:ZXQP0000",type:"xs:QName",description:' An "error" constant for "no error."\n'},{name:"zerr:ZXQP0001",type:"item()*",description:""},{name:"zerr:ZXQP0002",type:"xs:QName",description:" A Zorba programming assertion failed. If this error occurs, it is a bug\n and should be reported.\n"},{name:"zerr:ZXQP0003",type:"xs:QName",description:" Something unexpected occurred in Zorba. If this error occurs, it is a\n bug and should be reported.\n"},{name:"zerr:ZXQP0004",type:"xs:QName",description:" A particular XQuery feature has not been implemented by Zorba.\n"},{name:"zerr:ZXQP0005",type:"xs:QName",description:" A particular XQuery feature has been implemented by Zorba, but the\n feature has not been enabled in the current build.\n"},{name:"zerr:ZXQP0006",type:"item()*",description:""},{name:"zerr:ZXQP0007",type:"item()*",description:""},{name:"zerr:ZXQP0008",type:"item()*",description:""},{name:"zerr:ZXQP0009",type:"item()*",description:""},{name:"zerr:ZXQP0010",type:"item()*",description:""},{name:"zerr:ZXQP0011",type:"item()*",description:""},{name:"zerr:ZXQP0012",type:"item()*",description:""},{name:"zerr:ZXQP0013",type:"item()*",description:""},{name:"zerr:ZAPI0020",type:"item()*",description:""},{name:"zerr:ZXQP0016",type:"item()*",description:""},{name:"zerr:ZXQP0017",type:"item()*",description:""},{name:"zerr:ZXQP0020",type:"item()*",description:""},{name:"zerr:ZXQP0021",type:"item()*",description:""},{name:"zerr:ZXQP0024",type:"item()*",description:""},{name:"zerr:ZXQP0025",type:"item()*",description:""},{name:"zerr:ZXQP0026",type:"item()*",description:""},{name:"zerr:ZXQP0028",type:"item()*",description:""},{name:"zerr:ZXQP0029",type:"item()*",description:""},{name:"zerr:ZXQP0030",type:"item()*",description:""},{name:"zerr:ZXQP0031",type:"item()*",description:""},{name:"zerr:ZXQP0032",type:"item()*",description:""},{name:"zerr:ZXQP0033",type:"item()*",description:""},{name:"zerr:ZDDY0009",type:"item()*",description:""},{name:"zerr:ZCSE0012",type:"item()*",description:""},{name:"zerr:ZCSE0013",type:"item()*",description:""},{name:"zerr:ZCSE0014",type:"item()*",description:""},{name:"zerr:ZCSE0015",type:"item()*",description:""},{name:"zerr:ZCSE0016",type:"item()*",description:""},{name:"zerr:ZCSE0017",type:"item()*",description:""},{name:"zerr:ZDDY0001",type:"item()*",description:""},{name:"zerr:ZDDY0002",type:"item()*",description:""},{name:"zerr:ZDDY0003",type:"item()*",description:""},{name:"zerr:ZDDY0004",type:"item()*",description:""},{name:"zerr:ZDDY0005",type:"item()*",description:""},{name:"zerr:ZDDY0006",type:"item()*",description:""},{name:"zerr:ZDDY0007",type:"item()*",description:""},{name:"zerr:ZDDY0008",type:"item()*",description:""},{name:"zerr:ZCSE0011",type:"item()*",description:""},{name:"zerr:ZDDY0010",type:"item()*",description:""},{name:"zerr:ZDDY0011",type:"item()*",description:""},{name:"zerr:ZDDY0012",type:"item()*",description:""},{name:"zerr:ZDDY0013",type:"item()*",description:""},{name:"zerr:ZDDY0014",type:"item()*",description:""},{name:"zerr:ZDDY0015",type:"item()*",description:""},{name:"zerr:ZDDY0016",type:"item()*",description:""},{name:"zerr:ZDDY0017",type:"item()*",description:""},{name:"zerr:ZDDY0018",type:"item()*",description:""},{name:"zerr:ZDDY0020",type:"item()*",description:""},{name:"zerr:ZDDY0019",type:"item()*",description:""},{name:"zerr:ZDDY0021",type:"item()*",description:""},{name:"zerr:ZDDY0022",type:"item()*",description:""},{name:"zerr:ZAPI0045",type:"item()*",description:""},{name:"zerr:ZAPI0021",type:"item()*",description:""},{name:"zerr:ZAPI0023",type:"item()*",description:""},{name:"zerr:ZAPI0024",type:"item()*",description:""},{name:"zerr:ZAPI0025",type:"item()*",description:""},{name:"zerr:ZAPI0026",type:"item()*",description:""},{name:"zerr:ZAPI0027",type:"item()*",description:""},{name:"zerr:ZAPI0028",type:"item()*",description:""},{name:"zerr:ZAPI0029",type:"item()*",description:""},{name:"zerr:ZAPI0030",type:"item()*",description:""},{name:"zerr:ZAPI0039",type:"item()*",description:""},{name:"zerr:ZAPI0040",type:"item()*",description:""},{name:"zerr:ZAPI0041",type:"item()*",description:""},{name:"zerr:ZAPI0042",type:"item()*",description:""},{name:"zerr:ZAPI0043",type:"item()*",description:""},{name:"zerr:NS",type:"item()*",description:""},{name:"zerr:ZAPI0070",type:"item()*",description:""},{name:"zerr:ZAPI0080",type:"item()*",description:""},{name:"zerr:ZAPI0090",type:"item()*",description:""},{name:"zerr:ZCSE0001",type:"item()*",description:""},{name:"zerr:ZCSE0002",type:"item()*",description:""},{name:"zerr:ZCSE0003",type:"item()*",description:""},{name:"zerr:ZCSE0004",type:"item()*",description:""},{name:"zerr:ZCSE0005",type:"item()*",description:""},{name:"zerr:ZCSE0006",type:"item()*",description:""},{name:"zerr:ZCSE0007",type:"item()*",description:""},{name:"zerr:ZCSE0008",type:"item()*",description:""},{name:"zerr:ZCSE0009",type:"item()*",description:""},{name:"zerr:ZCSE0010",type:"item()*",description:""}]},"http://zorba.io/modules/sequence":{ns:"http://zorba.io/modules/sequence",description:" This module provides an XQuery API to perform set operations on sequences.\n",sees:[],authors:['Paul J. Lucas'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/sequence",prefix:"seq"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"value-except",qname:"seq:value-except",signature:"($seq1 as xs:anyAtomicType*, $seq2 as xs:anyAtomicType*) as xs:anyAtomicType* external",description:" Filters the first sequence of atomic items such that they are not in the\n second sequence based on their values.\n",summary:"

Filters the first sequence of atomic items such that they are not in the\n second sequence based on their values.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq1",type:"xs:anyAtomicType",occurrence:"*",description:'
The first sequence.
'},{name:"seq2",type:"xs:anyAtomicType",occurrence:"*",description:'
The second sequence.
'}],returns:{type:"xs:anyAtomicType*",description:'a sequence only containing items from $seq1 that are not in $seq2.'},errors:[]},{isDocumented:!0,arity:2,name:"value-intersect",qname:"seq:value-intersect",signature:"($seq1 as xs:anyAtomicType*, $seq2 as xs:anyAtomicType*) as xs:anyAtomicType* external",description:" Performs a set intersection of two sequences of atomic items based on their\n values.\n",summary:"

Performs a set intersection of two sequences of atomic items based on their\n values.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq1",type:"xs:anyAtomicType",occurrence:"*",description:'
The first sequence.
'},{name:"seq2",type:"xs:anyAtomicType",occurrence:"*",description:'
The second sequence.
'}],returns:{type:"xs:anyAtomicType*",description:'a sequence containing only items from $seq1 that are also in $seq2.'},errors:[]},{isDocumented:!0,arity:2,name:"value-union",qname:"seq:value-union",signature:"($seq1 as xs:anyAtomicType*, $seq2 as xs:anyAtomicType*) as xs:anyAtomicType* external",description:" Performs a set union of two sequences of atomic items based on their values.\n",summary:"

Performs a set union of two sequences of atomic items based on their values.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq1",type:"xs:anyAtomicType",occurrence:"*",description:'
The first sequence.
'},{name:"seq2",type:"xs:anyAtomicType",occurrence:"*",description:'
The second sequence.
'}],returns:{type:"xs:anyAtomicType*",description:'a sequence containing all items from $seq1 and seq2$ but without duplicates.'},errors:[]}],variables:[]},"http://api.28.io/functions":{ns:"http://api.28.io/functions",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"",prefix:"an"},{uri:"http://api.28.io/functions",prefix:"functions"},{uri:"http://api.28.io/model",prefix:"model"},{uri:"http://www.zorba-xquery.com/schemas/pul",prefix:"pul"},{uri:"http://zorba.io/modules/reference",prefix:"ref"},{uri:"http://www.28msec.com/modules/http/request",prefix:"req"},{uri:"http://www.28msec.com/modules/http/response",prefix:"response"},{uri:"http://api.28.io/sandbox",prefix:"sandbox"},{uri:"http://www.zorba-xquery.com/schemas/xdm",prefix:"xdm"}],functions:[{isDocumented:!1,arity:1,name:"apply-pul",qname:"functions:apply-pul",signature:"($pul)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"pul",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:0,name:"collections",qname:"functions:collections",signature:"()",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"decodeURI",qname:"functions:decodeURI",signature:"($str as xs:string) as xs:anyURI",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"str",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:anyURI",description:""},errors:[]},{isDocumented:!1,arity:1,name:"encode-for-js",qname:"functions:encode-for-js",signature:"($str as xs:string) as xs:string",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"str",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!1,arity:5,name:"entries",qname:"functions:entries",signature:"($collection as xs:string?, $node as xs:anyURI?, $index as xs:string?, $value as xs:string?, $format as xs:string)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"collection",type:"xs:string",occurrence:"?",description:""},{name:"node",type:"xs:anyURI",occurrence:"?",description:""},{name:"index",type:"xs:string",occurrence:"?",description:""},{name:"value",type:"xs:string",occurrence:"?",description:""},{name:"format",type:"xs:string",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:0,name:"indexes",qname:"functions:indexes",signature:"()",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"key",qname:"functions:key",signature:"($collection as xs:string, $condition as xs:string, $namespaces)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"collection",type:"xs:string",occurrence:null,description:""},{name:"condition",type:"xs:string",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"namesearch",qname:"functions:namesearch",signature:"($collection as xs:string, $path as xs:string, $namespaces)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"collection",type:"xs:string",occurrence:null,description:""},{name:"path",type:"xs:string",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"node-to-js",qname:"functions:node-to-js",signature:"($node) as xs:string*",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:null,occurrence:null,description:""}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!1,arity:1,name:"parse-namespaces",qname:"functions:parse-namespaces",signature:"($namespaces as xs:string)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"namespaces",type:"xs:string",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"pksearch",qname:"functions:pksearch",signature:"($collection as xs:string)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"collection",type:"xs:string",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:0,name:"startpage",qname:"functions:startpage",signature:"()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"strip-whitespaces",qname:"functions:strip-whitespaces",signature:"($xml)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"xml",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"tuple",qname:"functions:tuple",signature:"($collection as xs:string, $condition as xs:string, $namespaces)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"collection",type:"xs:string",occurrence:null,description:""},{name:"condition",type:"xs:string",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"valuesearch",qname:"functions:valuesearch",signature:"($collection as xs:string, $path as xs:string, $namespaces)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"collection",type:"xs:string",occurrence:null,description:""},{name:"path",type:"xs:string",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!0,arity:1,name:"xmltojs",qname:"functions:xmltojs",signature:"($content)",description:" Internal function. Converts the XML contents of a POST BODY to JavaScript calls that rebuild the given XML for the collection browser frontend\n",summary:"

Internal function.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"content",type:null,occurrence:null,description:""}],returns:{type:null,description:"JavaScript calls for collection browser frontend"},errors:[]}],variables:[]},"http://xbrl.io/modules/bizql/profiles/sec/companies":{ns:"http://xbrl.io/modules/bizql/profiles/sec/companies",description:'

This module provides functionality for querying companies (XBRL entities)\n submitting to the SEC.

\n

SEC Companies are nothing else than XBRL entities. For XBRL-generic requests on\n entities, use the generic entities module.

\n

With this module, you can retrieve a company with its CIK (without converting\n it to an EID). You can also retrieve companies by sector, by SIC code, by types,\n by tags, by tickers.

\n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"http://xbrl.io/modules/bizql/archives",prefix:"archives"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/companies",prefix:"companies"},{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://xbrl.io/modules/bizql/entities",prefix:"entities"},{uri:"http://www.28msec.com/modules/mongodb",prefix:"mongo"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/core",prefix:"sec"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"companies-by-types",qname:"companies:companies-by-types",signature:"($company-types as string*) as object()*",description:'

Retrieves all companies whose company type matches the passed string(s).

\n',summary:"

Retrieves all companies whose company type matches the passed string(s).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"company-types",type:"string",occurrence:"*",description:""}],returns:{type:"object()*",description:"all companies with matching company type."},errors:[]},{isDocumented:!0,arity:1,name:"companies-for-SIC",qname:"companies:companies-for-SIC",signature:"($sic-codes as string*) as object()*",description:'

Retrieves all companies whose type of business\n matches the SIC (Standard Industrial Classification) code.

\n',summary:"

Retrieves all companies whose type of business\n matches the SIC (Standard Industrial Classification) code.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sic-codes",type:"string",occurrence:"*",description:'
a sequence of SIC codes.
'}],returns:{type:"object()*",description:"all companies with one of these SIC codes."},errors:[]},{isDocumented:!0,arity:1,name:"companies-for-sector",qname:"companies:companies-for-sector",signature:"($sectors as string*) as object()*",description:'

Retrieves all companies in the given sectors.

\n',summary:"

Retrieves all companies in the given sectors.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sectors",type:"string",occurrence:"*",description:'
a sequence of sectors as strings.
'}],returns:{type:"object()*",description:"all companies in these sectors."},errors:[]},{isDocumented:!0,arity:1,name:"companies-for-tags",qname:"companies:companies-for-tags",signature:"($tags as string*) as object()*",description:'

Return all companies with any of the given tags.

\n',summary:"

Return all companies with any of the given tags.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"tags",type:"string",occurrence:"*",description:'
the tags to filter.
'}],returns:{type:"object()*",description:"all companies with the given tags."},errors:[]},{isDocumented:!0,arity:1,name:"companies-for-tickers",qname:"companies:companies-for-tickers",signature:"($tickers as string*) as object()*",description:'

Return all companies with any of the given ticker symbols.

\n

Tickers are case insensitive

\n',summary:"

Return all companies with any of the given ticker symbols.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"tickers",type:"string",occurrence:"*",description:'
the tickers to filter.
'}],returns:{type:"object()*",description:"all companies with the given tickers."},errors:[]},{isDocumented:!0,arity:0,name:"companies",qname:"companies:companies",signature:"() as object()*",description:'

Return all companies

\n',summary:"

Return all companies \n

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()*",description:"all companies."},errors:[]},{isDocumented:!0,arity:1,name:"companies",qname:"companies:companies",signature:"($companies-or-ids as item()*) as object()*",description:'

Return the companies with the given identifiers.

\n',summary:"

Return the companies with the given identifiers.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"companies-or-ids",type:"item()",occurrence:"*",description:'
the ids of the companies or the companies themselves.
'}],returns:{type:"object()*",description:"the companies with the given identifiers the empty sequence if no company was found or if the input is an empty sequence."},errors:[]},{isDocumented:!0,arity:1,name:"company-type",qname:"companies:company-type",signature:"($company-name as string) as string",description:'

Return company type for a given company name. Company type can be one of:

\n

\n

\n

\n',summary:"

Return company type for a given company name.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"company-name",type:"string",occurrence:null,description:'
the name of a company
'}],returns:{type:"string",description:'the company type string or "unknown" if the type can not be inferred'},errors:[]},{isDocumented:!0,arity:1,name:"eid",qname:"companies:eid",signature:"($companies-or-eids-or-ciks as item()*) as string*",description:'

Converts the input to a normalized CIK. The input\n can be either a pure CIK without scheme, or an already\n normalized CIK, or an entity object which contains a CIK\n in its id field.

\n',summary:"

Converts the input to a normalized CIK.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"companies-or-eids-or-ciks",type:"item()",occurrence:"*",description:""}],returns:{type:"string*",description:"the normalized CIK."},errors:['sec:INVALID_PARAMETER if the CIK or entity is not valid']},{isDocumented:!0,arity:1,name:"types",qname:"companies:types",signature:"($companies-or-ciks as item()*) as string*",description:'

Retrieves the type of a company.

\n',summary:"

Retrieves the type of a company.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"companies-or-ciks",type:"item()",occurrence:"*",description:'
a sequence of companies or their identifiers (CIKs).
'}],returns:{type:"string*",description:"all company types."},errors:[]}],variables:[]},"http://api.28.io/collections":{ns:"http://api.28.io/collections",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"",prefix:"an"},{uri:"http://api.28.io/collections",prefix:"cm"},{uri:"http://www.28msec.com/modules/http/request",prefix:"req"},{uri:"http://www.28msec.com/modules/http/response",prefix:"resp"},{uri:"http://api.28.io/util",prefix:"util"},{uri:"http://api.28.io/validation",prefix:"validate"}],functions:[{isDocumented:!1,arity:1,name:"definition-for-dynamic-collection",qname:"cm:definition-for-dynamic-collection",signature:"($name as xs:string) as object()",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:""}],returns:{type:"object()",description:""},errors:[]},{isDocumented:!1,arity:2,name:"delete-collection-property",qname:"cm:delete-collection-property",signature:"($name as xs:string, $property as xs:string) as empty-sequence()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:""},{name:"property",type:"xs:string",occurrence:null,description:""}],returns:{type:"empty-sequence()",description:""},errors:[]},{isDocumented:!1,arity:1,name:"delete-collection",qname:"cm:delete-collection",signature:"($name) as empty-sequence()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:null,occurrence:null,description:""}],returns:{type:"empty-sequence()",description:""},errors:[]},{isDocumented:!1,arity:0,name:"dispatch",qname:"cm:dispatch",signature:"()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"get-collection-property",qname:"cm:get-collection-property",signature:"($name as xs:string, $property as xs:string)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:""},{name:"property",type:"xs:string",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"get-collection",qname:"cm:get-collection",signature:"($name as xs:string) as object()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:""}],returns:{type:"object()",description:""},errors:[]},{isDocumented:!1,arity:1,name:"get-or-create-collection-dynamic",qname:"cm:get-or-create-collection-dynamic",signature:"($name as xs:string) as object()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:""}],returns:{type:"object()",description:""},errors:[]},{isDocumented:!1,arity:0,name:"list-collections",qname:"cm:list-collections",signature:"() as array()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:"array()",description:""},errors:[]},{isDocumented:!1,arity:0,name:"metadata",qname:"cm:metadata",signature:"()",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"put-collection-property",qname:"cm:put-collection-property",signature:"($name as xs:string, $property as xs:string, $value) as empty-sequence()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:""},{name:"property",type:"xs:string",occurrence:null,description:""},{name:"value",type:null,occurrence:null,description:""}],returns:{type:"empty-sequence()",description:""},errors:[]},{isDocumented:!1,arity:2,name:"put-collection",qname:"cm:put-collection",signature:"($name as xs:string, $collection as object()) as empty-sequence()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:""},{name:"collection",type:"object()",occurrence:null,description:""}],returns:{type:"empty-sequence()",description:""},errors:[]},{isDocumented:!1,arity:1,name:"validate-collection",qname:"cm:validate-collection",signature:"($collection as object()) as empty-sequence()",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"collection",type:"object()",occurrence:null,description:""}],returns:{type:"empty-sequence()",description:""},errors:[]}],variables:[]},"http://zorba.io/modules/excel/math-sumproduct":{ns:"http://zorba.io/modules/excel/math-sumproduct",description:" Module implementing the sumproduct functions from Excel 2003 math library.\n There are 30 functions defined, implementing the same function\n but with 1 to 30 parameters.\n Each parameter can be a sequence of infinite length.\n",sees:['Excel 2003 Documentation: Math-sumproduct Functions'],authors:['Daniel Turcanu'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/excel/math-sumproduct",prefix:"excel"},{uri:"http://zorba.io/modules/excel/errors",prefix:"excel-err"},{uri:"http://zorba.io/modules/excel/math",prefix:"excel-math"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Sums the values in the sequence.\n The sequence can be of any length.\n",summary:"

Sums the values in the sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequence of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:10,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:11,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:12,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:13,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:14,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:15,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:16,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:17,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:18,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:19,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:2,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:20,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*, $array20 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array20",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:21,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*, $array20 as xs:anyAtomicType*, $array21 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array20",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array21",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:22,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*, $array20 as xs:anyAtomicType*, $array21 as xs:anyAtomicType*, $array22 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array20",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array21",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array22",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:23,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*, $array20 as xs:anyAtomicType*, $array21 as xs:anyAtomicType*, $array22 as xs:anyAtomicType*, $array23 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array20",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array21",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array22",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array23",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:24,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*, $array20 as xs:anyAtomicType*, $array21 as xs:anyAtomicType*, $array22 as xs:anyAtomicType*, $array23 as xs:anyAtomicType*, $array24 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array20",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array21",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array22",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array23",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array24",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:25,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*, $array20 as xs:anyAtomicType*, $array21 as xs:anyAtomicType*, $array22 as xs:anyAtomicType*, $array23 as xs:anyAtomicType*, $array24 as xs:anyAtomicType*, $array25 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array20",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array21",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array22",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array23",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array24",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array25",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:26,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*, $array20 as xs:anyAtomicType*, $array21 as xs:anyAtomicType*, $array22 as xs:anyAtomicType*, $array23 as xs:anyAtomicType*, $array24 as xs:anyAtomicType*, $array25 as xs:anyAtomicType*, $array26 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array20",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array21",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array22",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array23",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array24",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array25",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array26",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:27,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*, $array20 as xs:anyAtomicType*, $array21 as xs:anyAtomicType*, $array22 as xs:anyAtomicType*, $array23 as xs:anyAtomicType*, $array24 as xs:anyAtomicType*, $array25 as xs:anyAtomicType*, $array26 as xs:anyAtomicType*, $array27 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array20",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array21",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array22",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array23",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array24",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array25",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array26",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array27",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:28,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*, $array20 as xs:anyAtomicType*, $array21 as xs:anyAtomicType*, $array22 as xs:anyAtomicType*, $array23 as xs:anyAtomicType*, $array24 as xs:anyAtomicType*, $array25 as xs:anyAtomicType*, $array26 as xs:anyAtomicType*, $array27 as xs:anyAtomicType*, $array28 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array20",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array21",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array22",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array23",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array24",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array25",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array26",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array27",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array28",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:29,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*, $array20 as xs:anyAtomicType*, $array21 as xs:anyAtomicType*, $array22 as xs:anyAtomicType*, $array23 as xs:anyAtomicType*, $array24 as xs:anyAtomicType*, $array25 as xs:anyAtomicType*, $array26 as xs:anyAtomicType*, $array27 as xs:anyAtomicType*, $array28 as xs:anyAtomicType*, $array29 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array20",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array21",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array22",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array23",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array24",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array25",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array26",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array27",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array28",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array29",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:3,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:30,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*, $array10 as xs:anyAtomicType*, $array11 as xs:anyAtomicType*, $array12 as xs:anyAtomicType*, $array13 as xs:anyAtomicType*, $array14 as xs:anyAtomicType*, $array15 as xs:anyAtomicType*, $array16 as xs:anyAtomicType*, $array17 as xs:anyAtomicType*, $array18 as xs:anyAtomicType*, $array19 as xs:anyAtomicType*, $array20 as xs:anyAtomicType*, $array21 as xs:anyAtomicType*, $array22 as xs:anyAtomicType*, $array23 as xs:anyAtomicType*, $array24 as xs:anyAtomicType*, $array25 as xs:anyAtomicType*, $array26 as xs:anyAtomicType*, $array27 as xs:anyAtomicType*, $array28 as xs:anyAtomicType*, $array29 as xs:anyAtomicType*, $array30 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array10",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array11",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array12",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array13",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array14",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array15",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array16",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array17",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array18",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array19",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array20",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array21",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array22",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array23",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array24",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array25",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array26",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array27",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array28",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array29",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array30",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:4,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:5,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:6,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:7,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:8,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:9,name:"sumproduct",qname:"excel:sumproduct",signature:"($array1 as xs:anyAtomicType*, $array2 as xs:anyAtomicType*, $array3 as xs:anyAtomicType*, $array4 as xs:anyAtomicType*, $array5 as xs:anyAtomicType*, $array6 as xs:anyAtomicType*, $array7 as xs:anyAtomicType*, $array8 as xs:anyAtomicType*, $array9 as xs:anyAtomicType*) as xs:anyAtomicType",description:" Multiplies the elements on the same position in each sequence\n and sums up the results.\n",summary:"

Multiplies the elements on the same position in each sequence\n and sums up the results.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"array1",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array2",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array3",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array4",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array5",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array6",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array7",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array8",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'},{name:"array9",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequences of numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of products"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:1,name:"sumsq",qname:"excel:sumsq",signature:"($numbers as xs:anyAtomicType+) as xs:anyAtomicType",description:" Returns the sum of the squares of the arguments.\n It used the sumproduct function.\n",summary:"

Returns the sum of the squares of the arguments.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"numbers",type:"xs:anyAtomicType",occurrence:"+",description:'
the sequence of one or more numbers or arguments castable to numeric
'}],returns:{type:"xs:anyAtomicType",description:"the sum of squared values, as numeric type"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']}],variables:[]},"http://zorba.io/modules/item":{ns:"http://zorba.io/modules/item",description:" This module provides utility functions on items. For example,\n it provides a function that allows estimating the size in bytes\n that a given item allocates in memory.\n",sees:[],authors:['Matthias Brantner'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/item",prefix:"item"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"size",qname:"item:size",signature:"($item as item()) as xs:integer external",description:' Computes the size in bytes of the given item in main memory.

\n',summary:"

Computes the size in bytes of the given item in main memory.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"item",type:"item()",occurrence:null,description:'
the item whose size to compute.
'}],returns:{type:"xs:integer",description:"the size allocated by the item in bytes."},errors:[]}],variables:[]},"http://www.zorba-xquery.com/modules/xqdoc/menu":{ns:"http://www.zorba-xquery.com/modules/xqdoc/menu",description:" Generate navigation for XQDoc batches.\n",sees:[],authors:['William Candillon'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.zorba-xquery.com/modules/xqdoc/menu",prefix:"menu"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!1,arity:2,name:"categories-as-js",qname:"menu:categories-as-js",signature:"($url-prefix as xs:string, $cats as element(*)) as xs:string",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"url-prefix",type:"xs:string",occurrence:null,description:""},{name:"cats",type:"element(*)",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!1,arity:1,name:"categories",qname:"menu:categories",signature:"($top as element(*)) as xs:string*",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"top",type:"element(*)",occurrence:null,description:""}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!1,arity:2,name:"closed-tabs",qname:"menu:closed-tabs",signature:"($item as element(section), $url-prefix as xs:string) as element(li)*",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"item",type:"element(section)",occurrence:null,description:""},{name:"url-prefix",type:"xs:string",occurrence:null,description:""}],returns:{type:"element(li)*",description:""},errors:[]},{isDocumented:!1,arity:3,name:"closed-tabs",qname:"menu:closed-tabs",signature:"($item as element(*)?, $result as element(*)*, $url-prefix as xs:string) as element(li)*",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"item",type:"element(*)",occurrence:"?",description:""},{name:"result",type:"element(*)",occurrence:"*",description:""},{name:"url-prefix",type:"xs:string",occurrence:null,description:""}],returns:{type:"element(li)*",description:""},errors:[]},{isDocumented:!1,arity:1,name:"item-uri",qname:"menu:item-uri",signature:"($item as element(*)) as xs:string",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"item",type:"element(*)",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!1,arity:2,name:"item-uri",qname:"menu:item-uri",signature:"($item as element(*)?, $result as xs:string*) as xs:string+",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"item",type:"element(*)",occurrence:"?",description:""},{name:"result",type:"xs:string",occurrence:"*",description:""}],returns:{type:"xs:string+",description:""},errors:[]},{isDocumented:!1,arity:2,name:"item",qname:"menu:item",signature:"($ctx as element(*)?, $path as xs:string*) as element(*)?",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"ctx",type:"element(*)",occurrence:"?",description:""},{name:"path",type:"xs:string",occurrence:"*",description:""}],returns:{type:"element(*)?",description:""},errors:[]},{isDocumented:!1,arity:2,name:"menu",qname:"menu:menu",signature:"($item as element(*), $url-prefix as xs:string)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"item",type:"element(*)",occurrence:null,description:""},{name:"url-prefix",type:"xs:string",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]}],variables:[{name:"menu:not-found",type:"item()*",description:""}]},"http://zorba.io/modules/dbgp-message-handler":{ns:"http://zorba.io/modules/dbgp-message-handler",description:" Zorba debugger module.\n",sees:[],authors:['Gabriel Petrovay'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/base64",prefix:"base64"},{uri:"http://zorba.io/modules/dbgp-message-handler",prefix:"dmh"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"process",qname:"dmh:process",signature:"($message as element(*)) as xs:anyAtomicType*",description:" Process one message received from the Zorba debugger server.\n",summary:"

Process one message received from the Zorba debugger server.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"message",type:"element(*)",occurrence:null,description:'
the message.
'}],returns:{type:"xs:anyAtomicType*",description:"()."},errors:[]}],variables:[{name:"dmh:debug",type:"xs:boolean",description:" Set this variale to true if you want to have mode debug information when\n an error occurs.\n"}]},"http://www.28msec.com/modules/ws/mailchimp":{ns:"http://www.28msec.com/modules/ws/mailchimp",description:" Mailchimp Client Module.\n",sees:['http://apidocs.mailchimp.com'],authors:['William Candillon {william.candillon@28msec.com}'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://expath.org/ns/http-client",prefix:"http-client"},{uri:"http://www.28msec.com/modules/ws/mailchimp",prefix:"mailchimp"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://www.28msec.com/modules/xmlrpc",prefix:"xmlrpc"}],functions:[{isDocumented:!0,arity:3,name:"apikey-add",qname:"mailchimp:apikey-add",signature:"($username as xs:string, $password as xs:string, $apikey as xs:string) as item()*",description:' Convenience function for apikey-add#4.\n',summary:"

Convenience function for apikey-add#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"username",type:"xs:string",occurrence:null,description:""},{name:"password",type:"xs:string",occurrence:null,description:'
Your MailChimp password
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
Any valid API Key
'}],returns:{type:"item()*",description:"A new API Key that can be immediately used."},errors:[]},{isDocumented:!0,arity:4,name:"apikey-add",qname:"mailchimp:apikey-add",signature:"($endpoint-url as xs:string, $username as xs:string, $password as xs:string, $apikey as xs:string) as item()*",description:" Add an API Key to your account. We will generate a new key for you and return it.\n",summary:"

Add an API Key to your account.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"username",type:"xs:string",occurrence:null,description:'
Your MailChimp user name
'},{name:"password",type:"xs:string",occurrence:null,description:'
Your MailChimp password
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
Any valid API Key
'}],returns:{type:"item()*",description:"A new API Key that can be immediately used."},errors:[]},{isDocumented:!0,arity:3,name:"apikey-expire",qname:"mailchimp:apikey-expire",signature:"($username as xs:string, $password as xs:string, $apikey as xs:string) as item()*",description:' Convenience function for apikey-expire#4.\n',summary:"

Convenience function for apikey-expire#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"username",type:"xs:string",occurrence:null,description:""},{name:"password",type:"xs:string",occurrence:null,description:'
Your MailChimp password
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
Any valid API Key that you wish to expire
'}],returns:{type:"item()*",description:"True if it worked, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:4,name:"apikey-expire",qname:"mailchimp:apikey-expire",signature:"($endpoint-url as xs:string, $username as xs:string, $password as xs:string, $apikey as xs:string) as item()*",description:' Expire a Specific API Key. Note that if you expire all of your keys, just visit your API dashboard to create a new one. If you are trying to shut off access to your account for an old developer, change your MailChimp password, then expire all of the keys they had access to. Note that this takes effect immediately, so make sure you replace the keys in any working application before expiring them! Consider yourself warned...\n',summary:"

Expire a Specific API Key.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"username",type:"xs:string",occurrence:null,description:'
Your MailChimp user name
'},{name:"password",type:"xs:string",occurrence:null,description:'
Your MailChimp password
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
Any valid API Key that you wish to expire
'}],returns:{type:"item()*",description:"True if it worked, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:4,name:"apikeys",qname:"mailchimp:apikeys",signature:"($username as xs:string, $password as xs:string, $apikey as xs:string, $expired as xs:boolean) as item()*",description:' Convenience function for apikeys#5.\n',summary:"

Convenience function for apikeys#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"username",type:"xs:string",occurrence:null,description:""},{name:"password",type:"xs:string",occurrence:null,description:'
Your MailChimp password
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
Any valid API Key for your account
'},{name:"expired",type:"xs:boolean",occurrence:null,description:'
optional - whether or not to include expired keys, defaults to false
'}],returns:{type:"item()*",description:"An array of API keys."},errors:[]},{isDocumented:!0,arity:5,name:"apikeys",qname:"mailchimp:apikeys",signature:"($endpoint-url as xs:string, $username as xs:string, $password as xs:string, $apikey as xs:string, $expired as xs:boolean) as item()*",description:" Retrieve a list of all MailChimp API Keys for this User.\n",summary:"

Retrieve a list of all MailChimp API Keys for this User.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"username",type:"xs:string",occurrence:null,description:'
Your MailChimp user name
'},{name:"password",type:"xs:string",occurrence:null,description:'
Your MailChimp password
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
Any valid API Key for your account
'},{name:"expired",type:"xs:boolean",occurrence:null,description:'
optional - whether or not to include expired keys, defaults to false
'}],returns:{type:"item()*",description:"An array of API keys."},errors:[]},{isDocumented:!0,arity:5,name:"campaign-abuse-reports",qname:"mailchimp:campaign-abuse-reports",signature:"($apikey as xs:string, $cid as xs:string, $since as xs:integer, $start as xs:integer, $limit as xs:string) as item()*",description:' Convenience function for campaign-abuse-reports#6.\n',summary:"

Convenience function for campaign-abuse-reports#6 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull abuse reports for (can be gathered using campaigns())
'},{name:"since",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 500, upper limit set at 1000
'},{name:"limit",type:"xs:string",occurrence:null,description:'
optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT
'}],returns:{type:"item()*",description:"Reports the abuse reports for this campaign"},errors:[]},{isDocumented:!0,arity:6,name:"campaign-abuse-reports",qname:"mailchimp:campaign-abuse-reports",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $since as xs:integer, $start as xs:integer, $limit as xs:string) as item()*",description:" Get all email addresses that complained about a given campaign.\n",summary:"

Get all email addresses that complained about a given campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull abuse reports for (can be gathered using campaigns())
'},{name:"since",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 500, upper limit set at 1000
'},{name:"limit",type:"xs:string",occurrence:null,description:'
optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT
'}],returns:{type:"item()*",description:"Reports the abuse reports for this campaign"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-advice",qname:"mailchimp:campaign-advice",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-advice#3.\n',summary:"

Convenience function for campaign-advice#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull advice text for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Advice on the campaign's performance"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-advice",qname:"mailchimp:campaign-advice",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:" Retrieve the text presented in our app for how a campaign performed and any advice we may have for you - best suited for display in customized reports pages.\n Note: some messages will contain HTML - clean tags as necessary.\n",summary:"

Retrieve the text presented in our app for how a campaign performed and any advice we may have for you - best suited for display in customized reports pages.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull advice text for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Advice on the campaign's performance"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-analytics",qname:"mailchimp:campaign-analytics",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-analytics#3.\n',summary:"

Convenience function for campaign-analytics#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Analytics we've collected for the passed campaign."},errors:[]},{isDocumented:!0,arity:3,name:"campaign-analytics",qname:"mailchimp:campaign-analytics",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:" Retrieve the Google Analytics data we've collected for this campaign. Note, requires Google Analytics Add-on to be installed and configured.\n",summary:"

Retrieve the Google Analytics data we've collected for this campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Analytics we've collected for the passed campaign."},errors:[]},{isDocumented:!0,arity:3,name:"campaign-bounce-message",qname:"mailchimp:campaign-bounce-message",signature:"($apikey as xs:string, $cid as xs:string, $email as xs:string) as item()*",description:' Convenience function for campaign-bounce-message#4.\n',summary:"

Convenience function for campaign-bounce-message#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"email",type:"xs:string",occurrence:null,description:'
the email address or unique id of the member to pull a bounce message for.
'}],returns:{type:"item()*",description:"The full bounce message for this email+campaign along with some extra data."},errors:[]},{isDocumented:!0,arity:4,name:"campaign-bounce-message",qname:"mailchimp:campaign-bounce-message",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $email as xs:string) as item()*",description:" Retrieve the most recent full bounce message for a specific email address on the given campaign. Messages over 30 days old are subject to being removed.\n",summary:"

Retrieve the most recent full bounce message for a specific email address on the given campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"email",type:"xs:string",occurrence:null,description:'
the email address or unique id of the member to pull a bounce message for.
'}],returns:{type:"item()*",description:"The full bounce message for this email+campaign along with some extra data."},errors:[]},{isDocumented:!0,arity:5,name:"campaign-bounce-messages",qname:"mailchimp:campaign-bounce-messages",signature:"($apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer, $since as xs:string) as item()*",description:' Convenience function for campaign-bounce-messages#6.\n',summary:"

Convenience function for campaign-bounce-messages#6 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 25, upper limit set at 50
'},{name:"since",type:"xs:string",occurrence:null,description:'
optional pull only messages since this time - use YYYY-MM-DD format in GMT (we only store the date, not the time)
'}],returns:{type:"item()*",description:"Bounces the full bounce messages for this campaign"},errors:[]},{isDocumented:!0,arity:6,name:"campaign-bounce-messages",qname:"mailchimp:campaign-bounce-messages",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer, $since as xs:string) as item()*",description:" Retrieve the full bounce messages for the given campaign. Note that this can return very large amounts of data depending on how large the campaign was and how much cruft the bounce provider returned.\n",summary:"

Retrieve the full bounce messages for the given campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 25, upper limit set at 50
'},{name:"since",type:"xs:string",occurrence:null,description:'
optional pull only messages since this time - use YYYY-MM-DD format in GMT (we only store the date, not the time)
'}],returns:{type:"item()*",description:"Bounces the full bounce messages for this campaign"},errors:[]},{isDocumented:!0,arity:5,name:"campaign-click-detail-AIM",qname:"mailchimp:campaign-click-detail-AIM",signature:"($apikey as xs:string, $cid as xs:string, $url as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:' Convenience function for campaign-click-detail-AIM#6.\n',summary:"

Convenience function for campaign-click-detail-AIM#6 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get click stats for (can be gathered using campaigns())
'},{name:"url",type:"xs:string",occurrence:null,description:'
the URL of the link that was clicked on
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"Array containing the total records matched and the specific records for this page"},errors:[]},{isDocumented:!0,arity:6,name:"campaign-click-detail-AIM",qname:"mailchimp:campaign-click-detail-AIM",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $url as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:" Return the list of email addresses that clicked on a given url, and how many times they clicked.\n",summary:"

Return the list of email addresses that clicked on a given url, and how many times they clicked.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get click stats for (can be gathered using campaigns())
'},{name:"url",type:"xs:string",occurrence:null,description:'
the URL of the link that was clicked on
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"Array containing the total records matched and the specific records for this page"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-click-stats",qname:"mailchimp:campaign-click-stats",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-click-stats#3.\n',summary:"

Convenience function for campaign-click-stats#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull stats for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"URLs will be keys and contain their associated statistics: clicks (number of times a specific link was clicked) and unique (number of unique people who clicked on the specific link)."},errors:[]},{isDocumented:!0,arity:3,name:"campaign-click-stats",qname:"mailchimp:campaign-click-stats",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:" Get an array of the urls being tracked, and their click counts for a given campaign.\n",summary:"

Get an array of the urls being tracked, and their click counts for a given campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull stats for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"URLs will be keys and contain their associated statistics: clicks (number of times a specific link was clicked) and unique (number of unique people who clicked on the specific link)."},errors:[]},{isDocumented:!0,arity:3,name:"campaign-content",qname:"mailchimp:campaign-content",signature:"($apikey as xs:string, $cid as xs:string, $for_archive as xs:boolean) as item()*",description:' Convenience function for campaign-content#4.\n',summary:"

Convenience function for campaign-content#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get content for (can be gathered using campaigns())
'},{name:"for_archive",type:"xs:boolean",occurrence:null,description:'
optional controls whether we return the Archive version (true) or the Raw version (false), defaults to true
'}],returns:{type:"item()*",description:"Struct containing all content for the campaign"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-content",qname:"mailchimp:campaign-content",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $for_archive as xs:boolean) as item()*",description:" Get the content (both html and text) for a campaign either as it would appear in the campaign archive or as the raw, original content.\n",summary:"

Get the content (both html and text) for a campaign either as it would appear in the campaign archive or as the raw, original content.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get content for (can be gathered using campaigns())
'},{name:"for_archive",type:"xs:boolean",occurrence:null,description:'
optional controls whether we return the Archive version (true) or the Raw version (false), defaults to true
'}],returns:{type:"item()*",description:"Struct containing all content for the campaign"},errors:[]},{isDocumented:!0,arity:6,name:"campaign-create",qname:"mailchimp:campaign-create",signature:"($apikey as xs:string, $type as xs:string, $options as element(array), $content as element(array), $segment_opts as element(array), $type_opts as element(array)) as item()*",description:' Convenience function for campaign-create#7.\n',summary:"

Convenience function for campaign-create#7 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"type",type:"xs:string",occurrence:null,description:'
the Campaign Type to create - one of "regular", "plaintext", "absplit", "rss", "trans", "auto"
'},{name:"options",type:"element(array)",occurrence:null,description:'
a hash of the standard options for this campaign. See Mailchimp API documentation for more information about the parameter structure.
'},{name:"content",type:"element(array)",occurrence:null,description:'
the content for this campaign - use a struct with the following keys. See Mailchimp API documentation for more information about the parameter structure.
'},{name:"segment_opts",type:"element(array)",occurrence:null,description:'
optional - if you wish to do Segmentation with this campaign this array should contain: see campaign-segment-test(). It\'s suggested that you test your options against campaign-segment-test(). Also, "trans" campaigns do not support segmentation.
'},{name:"type_opts",type:"element(array)",occurrence:null,description:'
optional -
'}],returns:{type:"item()*",description:"The ID for the created campaign"},errors:[]},{isDocumented:!0,arity:7,name:"campaign-create",qname:"mailchimp:campaign-create",signature:"($endpoint-url as xs:string, $apikey as xs:string, $type as xs:string, $options as element(array), $content as element(array), $segment_opts as element(array), $type_opts as element(array)) as item()*",description:" Create a new draft campaign to send. You can not have more than 32,000 campaigns in your account.\n",summary:"

Create a new draft campaign to send.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"type",type:"xs:string",occurrence:null,description:'
the Campaign Type to create - one of "regular", "plaintext", "absplit", "rss", "trans", "auto"
'},{name:"options",type:"element(array)",occurrence:null,description:'
a hash of the standard options for this campaign. See Mailchimp API documentation for more information about the parameter structure.
'},{name:"content",type:"element(array)",occurrence:null,description:'
the content for this campaign - use a struct with the following keys. See Mailchimp API documentation for more information about the parameter structure.
'},{name:"segment_opts",type:"element(array)",occurrence:null,description:'
optional - if you wish to do Segmentation with this campaign this array should contain: see campaign-segment-test(). It\'s suggested that you test your options against campaign-segment-test(). Also, "trans" campaigns do not support segmentation.
'},{name:"type_opts",type:"element(array)",occurrence:null,description:'
optional
'}],returns:{type:"item()*",description:"The ID for the created campaign"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-delete",qname:"mailchimp:campaign-delete",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-delete#3.\n',summary:"

Convenience function for campaign-delete#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the Campaign Id to delete
'}],returns:{type:"item()*",description:"True if the delete succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-delete",qname:"mailchimp:campaign-delete",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:' Delete a campaign. Seriously, "poof, gone!" - be careful!.\n',summary:"

Delete a campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the Campaign Id to delete
'}],returns:{type:"item()*",description:"True if the delete succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-ecomm-order-add",qname:"mailchimp:campaign-ecomm-order-add",signature:"($apikey as xs:string, $order as element(array)) as item()*",description:' Convenience function for campaign-ecomm-order-add#3.\n',summary:"

Convenience function for campaign-ecomm-order-add#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"order",type:"element(array)",occurrence:null,description:'
an array of information pertaining to the order that has completed. Use the following keys. See Mailchimp API documentation for more information about the parameter structure.
'}],returns:{type:"item()*",description:"True if the data is saved, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:3,name:"campaign-ecomm-order-add",qname:"mailchimp:campaign-ecomm-order-add",signature:"($endpoint-url as xs:string, $apikey as xs:string, $order as element(array)) as item()*",description:" Attach Ecommerce Order Information to a Campaign.\n",summary:"

Attach Ecommerce Order Information to a Campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"order",type:"element(array)",occurrence:null,description:'
an array of information pertaining to the order that has completed. Use the following keys. See Mailchimp API documentation for more information about the parameter structure.
'}],returns:{type:"item()*",description:"True if the data is saved, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:5,name:"campaign-ecomm-orders",qname:"mailchimp:campaign-ecomm-orders",signature:"($apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer, $since as xs:string) as item()*",description:' Convenience function for campaign-ecomm-orders#6.\n',summary:"

Convenience function for campaign-ecomm-orders#6 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 100, upper limit set at 500
'},{name:"since",type:"xs:string",occurrence:null,description:'
optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT
'}],returns:{type:"item()*",description:"The total matching orders and the specific orders for the requested page"},errors:[]},{isDocumented:!0,arity:6,name:"campaign-ecomm-orders",qname:"mailchimp:campaign-ecomm-orders",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer, $since as xs:string) as item()*",description:' Retrieve the Ecommerce Orders tracked by campaign-ecomm-order-add().\n',summary:"

Retrieve the Ecommerce Orders tracked by campaign-ecomm-order-add() .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 100, upper limit set at 500
'},{name:"since",type:"xs:string",occurrence:null,description:'
optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT
'}],returns:{type:"item()*",description:"The total matching orders and the specific orders for the requested page"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-eep-url-stats",qname:"mailchimp:campaign-eep-url-stats",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-eep-url-stats#3.\n',summary:"

Convenience function for campaign-eep-url-stats#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Stats an array containing tweets, retweets, clicks, and referrer related to using the campaign's eepurl"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-eep-url-stats",qname:"mailchimp:campaign-eep-url-stats",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:" Retrieve the tracked eepurl mentions on Twitter.\n",summary:"

Retrieve the tracked eepurl mentions on Twitter.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Stats an array containing tweets, retweets, clicks, and referrer related to using the campaign's eepurl"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-email-domain-performance",qname:"mailchimp:campaign-email-domain-performance",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-email-domain-performance#3.\n',summary:"

Convenience function for campaign-email-domain-performance#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull email domain performance for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Domains email domains and their associated stats"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-email-domain-performance",qname:"mailchimp:campaign-email-domain-performance",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:' Get the top 5 performing email domains for this campaign. Users want more than 5 should use campaign campaign-email-stats-AIM() or campaign-email-stats-AIM-all() and generate any additional stats they require.\n',summary:"

Get the top 5 performing email domains for this campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull email domain performance for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Domains email domains and their associated stats"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-email-stats-AIM-all",qname:"mailchimp:campaign-email-stats-AIM-all",signature:"($apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:' Convenience function for campaign-email-stats-AIM-all#5.\n',summary:"

Convenience function for campaign-email-stats-AIM-all#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get stats for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 100, upper limit set at 1000
'}],returns:{type:"item()*",description:"Array containing a total record count and data including the actions (opens and clicks) for each email, with timestamps"},errors:[]},{isDocumented:!0,arity:5,name:"campaign-email-stats-AIM-all",qname:"mailchimp:campaign-email-stats-AIM-all",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:" Given a campaign and correct paging limits, return the entire click and open history with timestamps, ordered by time, for every user a campaign was delivered to.\n",summary:"

Given a campaign and correct paging limits, return the entire click and open history with timestamps, ordered by time, for every user a campaign was delivered to.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get stats for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 100, upper limit set at 1000
'}],returns:{type:"item()*",description:"Array containing a total record count and data including the actions (opens and clicks) for each email, with timestamps"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-email-stats-AIM",qname:"mailchimp:campaign-email-stats-AIM",signature:"($apikey as xs:string, $cid as xs:string, $email_address as element(array)) as item()*",description:' Convenience function for campaign-email-stats-AIM#4.\n',summary:"

Convenience function for campaign-email-stats-AIM#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get stats for (can be gathered using campaigns())
'},{name:"email_address",type:"element(array)",occurrence:null,description:'
an array of up to 50 email addresses to check OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns. For backwards compatibility, if a string is passed, it will be treated as an array with a single element (will not work with XML-RPC).
'}],returns:{type:"item()*",description:"Array an array with the keys listed in Returned Fields below"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-email-stats-AIM",qname:"mailchimp:campaign-email-stats-AIM",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $email_address as element(array)) as item()*",description:" Given a campaign and email address, return the entire click and open history with timestamps, ordered by time.\n",summary:"

Given a campaign and email address, return the entire click and open history with timestamps, ordered by time.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get stats for (can be gathered using campaigns())
'},{name:"email_address",type:"element(array)",occurrence:null,description:'
an array of up to 50 email addresses to check OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns. For backwards compatibility, if a string is passed, it will be treated as an array with a single element (will not work with XML-RPC).
'}],returns:{type:"item()*",description:"Array an array with the keys listed in Returned Fields below"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-geo-opens-for-country",qname:"mailchimp:campaign-geo-opens-for-country",signature:"($apikey as xs:string, $cid as xs:string, $code as xs:string) as item()*",description:' Convenience function for campaign-geo-opens-for-country#4.\n',summary:"

Convenience function for campaign-geo-opens-for-country#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"code",type:"xs:string",occurrence:null,description:'
An ISO3166 2 digit country code
'}],returns:{type:"item()*",description:"Regions an array of regions within the provided country where opens occurred."},errors:[]},{isDocumented:!0,arity:4,name:"campaign-geo-opens-for-country",qname:"mailchimp:campaign-geo-opens-for-country",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $code as xs:string) as item()*",description:" Retrieve the regions and number of opens tracked for a certain country. Email address are not returned.\n",summary:"

Retrieve the regions and number of opens tracked for a certain country.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"code",type:"xs:string",occurrence:null,description:'
An ISO3166 2 digit country code
'}],returns:{type:"item()*",description:"Regions an array of regions within the provided country where opens occurred."},errors:[]},{isDocumented:!0,arity:2,name:"campaign-geo-opens",qname:"mailchimp:campaign-geo-opens",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-geo-opens#3.\n',summary:"

Convenience function for campaign-geo-opens#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Countries an array of countries where opens occurred"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-geo-opens",qname:"mailchimp:campaign-geo-opens",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:" Retrieve the countries and number of opens tracked for each. Email address are not returned.\n",summary:"

Retrieve the countries and number of opens tracked for each.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Countries an array of countries where opens occurred"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-hard-bounces",qname:"mailchimp:campaign-hard-bounces",signature:"($apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:' Convenience function for campaign-hard-bounces#5.\n',summary:"

Convenience function for campaign-hard-bounces#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"array a total of all hard bounced emails and the specific emails for this page"},errors:[]},{isDocumented:!0,arity:5,name:"campaign-hard-bounces",qname:"mailchimp:campaign-hard-bounces",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:' DEPRECATED Get all email addresses with Hard Bounces for a given campaign the email address that bounced.\n',summary:"

DEPRECATED Get all email addresses with Hard Bounces for a given campaign the email address that bounced.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"array a total of all hard bounced emails and the specific emails for this page"},errors:[]},{isDocumented:!0,arity:5,name:"campaign-members",qname:"mailchimp:campaign-members",signature:"($apikey as xs:string, $cid as xs:string, $status as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:' Convenience function for campaign-members#6.\n',summary:"

Convenience function for campaign-members#6 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull members for (can be gathered using campaigns())
'},{name:"status",type:"xs:string",occurrence:null,description:"
optional the status to pull - one of 'sent', 'hard' (bounce), or 'soft' (bounce). By default, all records are returned
"},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"A total of all matching emails and the specific emails for this page"},errors:[]},{isDocumented:!0,arity:6,name:"campaign-members",qname:"mailchimp:campaign-members",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $status as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:" Get all email addresses the campaign was successfully sent to (ie, no bounces).\n",summary:"

Get all email addresses the campaign was successfully sent to (ie, no bounces).

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull members for (can be gathered using campaigns())
'},{name:"status",type:"xs:string",occurrence:null,description:"
optional the status to pull - one of 'sent', 'hard' (bounce), or 'soft' (bounce). By default, all records are returned
"},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"A total of all matching emails and the specific emails for this page"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-not-opened-AIM",qname:"mailchimp:campaign-not-opened-AIM",signature:"($apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:' Convenience function for campaign-not-opened-AIM#5.\n',summary:"

Convenience function for campaign-not-opened-AIM#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get no opens for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"Array containing the total records matched and the specific records for this page"},errors:[]},{isDocumented:!0,arity:5,name:"campaign-not-opened-AIM",qname:"mailchimp:campaign-not-opened-AIM",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:" Retrieve the list of email addresses that did not open a given campaign string email Email address that opened the campaign.\n",summary:"

Retrieve the list of email addresses that did not open a given campaign string email Email address that opened the campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get no opens for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"array array containing the total records matched and the specific records for this page"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-opened-AIM",qname:"mailchimp:campaign-opened-AIM",signature:"($apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:' Convenience function for campaign-openedAIM#5.\n',summary:"

Convenience function for campaign-openedAIM#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get opens for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"Array containing the total records matched and the specific records for this page"},errors:[]},{isDocumented:!0,arity:5,name:"campaign-opened-AIM",qname:"mailchimp:campaign-opened-AIM",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:" Retrieve the list of email addresses that opened a given campaign with how many times they opened.\n",summary:"

Retrieve the list of email addresses that opened a given campaign with how many times they opened.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get opens for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"Array containing the total records matched and the specific records for this page"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-pause",qname:"mailchimp:campaign-pause",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-pause#3.\n',summary:"

Convenience function for campaign-pause#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to pause
'}],returns:{type:"item()*",description:"True on success"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-pause",qname:"mailchimp:campaign-pause",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:" Pause an AutoResponder or RSS campaign from sending.\n",summary:"

Pause an AutoResponder or RSS campaign from sending.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to pause
'}],returns:{type:"item()*",description:"True on success"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-replicate",qname:"mailchimp:campaign-replicate",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-replicate#3.\n',summary:"

Convenience function for campaign-replicate#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the Campaign Id to replicate
'}],returns:{type:"item()*",description:"The id of the replicated Campaign created, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-replicate",qname:"mailchimp:campaign-replicate",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:" Replicate a campaign.\n",summary:"

Replicate a campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the Campaign Id to replicate
'}],returns:{type:"item()*",description:"The id of the replicated Campaign created, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-resume",qname:"mailchimp:campaign-resume",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-resume#3.\n',summary:"

Convenience function for campaign-resume#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to pause
'}],returns:{type:"item()*",description:"True on success"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-resume",qname:"mailchimp:campaign-resume",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:" Resume sending an AutoResponder or RSS campaign.\n",summary:"

Resume sending an AutoResponder or RSS campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to pause
'}],returns:{type:"item()*",description:"True on success"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-schedule",qname:"mailchimp:campaign-schedule",signature:"($apikey as xs:string, $cid as xs:string, $schedule_time as xs:string, $schedule_time_b as xs:string) as item()*",description:' Convenience function for campaign-schedule#5.\n',summary:"

Convenience function for campaign-schedule#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to schedule
'},{name:"schedule_time",type:"xs:string",occurrence:null,description:'
the time to schedule the campaign. For A/B Split "schedule" campaigns, the time for Group A - in YYYY-MM-DD HH:II:SS format in GMT
'},{name:"schedule_time_b",type:"xs:string",occurrence:null,description:'
optional -the time to schedule Group B of an A/B Split "schedule" campaign - in YYYY-MM-DD HH:II:SS format in GMT
'}],returns:{type:"item()*",description:"boolean True on success"},errors:[]},{isDocumented:!0,arity:5,name:"campaign-schedule",qname:"mailchimp:campaign-schedule",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $schedule_time as xs:string, $schedule_time_b as xs:string) as item()*",description:" Schedule a campaign to be sent in the future.\n",summary:"

Schedule a campaign to be sent in the future.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to schedule
'},{name:"schedule_time",type:"xs:string",occurrence:null,description:'
the time to schedule the campaign. For A/B Split "schedule" campaigns, the time for Group A - in YYYY-MM-DD HH:II:SS format in GMT
'},{name:"schedule_time_b",type:"xs:string",occurrence:null,description:'
optional -the time to schedule Group B of an A/B Split "schedule" campaign - in YYYY-MM-DD HH:II:SS format in GMT
'}],returns:{type:"item()*",description:"boolean True on success"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-segment-test",qname:"mailchimp:campaign-segment-test",signature:"($apikey as xs:string, $list_id as xs:string, $options as element(array)) as item()*",description:' Convenience function for campaign-segment-test#4.\n',summary:"

Convenience function for campaign-segment-test#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"list_id",type:"xs:string",occurrence:null,description:'
the list to test segmentation on - get lists using lists()
'},{name:"options",type:"element(array)",occurrence:null,description:'
with 2 keys. See Mailchimp API documentation for more information about the parameter structure.
'}],returns:{type:"item()*",description:"The total number of subscribers matching your segmentation options"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-segment-test",qname:"mailchimp:campaign-segment-test",signature:"($endpoint-url as xs:string, $apikey as xs:string, $list_id as xs:string, $options as element(array)) as item()*",description:" Allows one to test their segmentation rules before creating a campaign using them.\n",summary:"

Allows one to test their segmentation rules before creating a campaign using them.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"list_id",type:"xs:string",occurrence:null,description:'
the list to test segmentation on - get lists using lists()
'},{name:"options",type:"element(array)",occurrence:null,description:'
with 2 keys. See Mailchimp API documentation for more information about the parameter structure.
'}],returns:{type:"item()*",description:"The total number of subscribers matching your segmentation options"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-send-now",qname:"mailchimp:campaign-send-now",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-send-now#3.\n',summary:"

Convenience function for campaign-send-now#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to send
'}],returns:{type:"item()*",description:"True on success"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-send-now",qname:"mailchimp:campaign-send-now",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:' Send a given campaign immediately. For RSS campaigns, this will "start" them.\n',summary:"

Send a given campaign immediately.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to send
'}],returns:{type:"item()*",description:"True on success"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-send-test",qname:"mailchimp:campaign-send-test",signature:"($apikey as xs:string, $cid as xs:string, $test_emails as element(array), $send_type as xs:string) as item()*",description:' Convenience function for campaign-send-test#5.\n',summary:"

Convenience function for campaign-send-test#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to test
'},{name:"test_emails",type:"element(array)",occurrence:null,description:'
an array of email address to receive the test message
'},{name:"send_type",type:"xs:string",occurrence:null,description:'
optional by default (null) both formats are sent - "html" or "text" send just that format
'}],returns:{type:"item()*",description:"True on success"},errors:[]},{isDocumented:!0,arity:5,name:"campaign-send-test",qname:"mailchimp:campaign-send-test",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $test_emails as element(array), $send_type as xs:string) as item()*",description:" Send a test of this campaign to the provided email address.\n",summary:"

Send a test of this campaign to the provided email address.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to test
'},{name:"test_emails",type:"element(array)",occurrence:null,description:'
an array of email address to receive the test message
'},{name:"send_type",type:"xs:string",occurrence:null,description:'
optional by default (null) both formats are sent - "html" or "text" send just that format
'}],returns:{type:"item()*",description:"True on success"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-share-report",qname:"mailchimp:campaign-share-report",signature:"($apikey as xs:string, $cid as xs:string, $opts as element(array)) as item()*",description:' Convenience function for campaign-share-report#4.\n',summary:"

Convenience function for campaign-share-report#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to share a report for (can be gathered using campaigns())
'},{name:"opts",type:"element(array)",occurrence:null,description:'
s optional various parameters which can be used to configure the shared report
'}],returns:{type:"item()*",description:"Struct containing details for the shared report"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-share-report",qname:"mailchimp:campaign-share-report",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $opts as element(array)) as item()*",description:' Get the URL to a customized VIP Report for the specified campaign and optionally send an email to someone with links to it. Note subsequent calls will overwrite anything already set for the same campign (eg, the password).\n',summary:"

Get the URL to a customized VIP Report for the specified campaign and optionally send an email to someone with links to it.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to share a report for (can be gathered using campaigns())
'},{name:"opts",type:"element(array)",occurrence:null,description:'
s optional various parameters which can be used to configure the shared report
'}],returns:{type:"item()*",description:"Struct containing details for the shared report"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-soft-bounces",qname:"mailchimp:campaign-soft-bounces",signature:"($apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:' Convenience function for campaign-soft-bounces#5.\n',summary:"

Convenience function for campaign-soft-bounces#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"A total of all soft bounced emails and the specific emails for this page"},errors:[]},{isDocumented:!0,arity:5,name:"campaign-soft-bounces",qname:"mailchimp:campaign-soft-bounces",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:' DEPRECATED Get all email addresses with Soft Bounces for a given campaign the email address that bounced.\n',summary:"

DEPRECATED Get all email addresses with Soft Bounces for a given campaign the email address that bounced.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"A total of all soft bounced emails and the specific emails for this page"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-stats",qname:"mailchimp:campaign-stats",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-stats#3.\n',summary:"

Convenience function for campaign-stats#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull stats for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"array struct of the statistics for this campaign"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-stats",qname:"mailchimp:campaign-stats",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:" Given a list and a campaign, get all the relevant campaign statistics (opens, bounces, clicks, etc.)\n",summary:"

Given a list and a campaign, get all the relevant campaign statistics (opens, bounces, clicks, etc.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull stats for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"array struct of the statistics for this campaign"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-template-content",qname:"mailchimp:campaign-template-content",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-template-content#3.\n',summary:"

Convenience function for campaign-template-content#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get content for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Array containing all content section for the campaign -"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-template-content",qname:"mailchimp:campaign-template-content",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:' Get the HTML template content sections for a campaign. Note that this will return very jagged, non-standard results based on the template a campaign is using. You only want to use this if you want to allow editing template sections in your applicaton.\n',summary:"

Get the HTML template content sections for a campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to get content for (can be gathered using campaigns())
'}],returns:{type:"item()*",description:"Array containing all content section for the campaign -"},errors:[]},{isDocumented:!0,arity:2,name:"campaign-unschedule",qname:"mailchimp:campaign-unschedule",signature:"($apikey as xs:string, $cid as xs:string) as item()*",description:' Convenience function for campaign-unschedule#3.\n',summary:"

Convenience function for campaign-unschedule#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to unschedule
'}],returns:{type:"item()*",description:"True on success"},errors:[]},{isDocumented:!0,arity:3,name:"campaign-unschedule",qname:"mailchimp:campaign-unschedule",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string) as item()*",description:" Unschedule a campaign that is scheduled to be sent in the future.\n",summary:"

Unschedule a campaign that is scheduled to be sent in the future.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the id of the campaign to unschedule
'}],returns:{type:"item()*",description:"True on success"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-unsubscribes",qname:"mailchimp:campaign-unsubscribes",signature:"($apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:' Convenience function for campaign-unsubscribes#5.\n',summary:"

Convenience function for campaign-unsubscribes#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"array email addresses that unsubscribed from this campaign along with reasons, if given array a total of all unsubscribed emails and the specific emails for this page"},errors:[]},{isDocumented:!0,arity:5,name:"campaign-unsubscribes",qname:"mailchimp:campaign-unsubscribes",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:" Get all unsubscribed email addresses for a given campaign.\n",summary:"

Get all unsubscribed email addresses for a given campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the campaign id to pull bounces for (can be gathered using campaigns())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
art optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
mit optional for large data sets, the number of results to return - defaults to 1000, upper limit set at 15000
'}],returns:{type:"item()*",description:"array email addresses that unsubscribed from this campaign along with reasons, if given array a total of all unsubscribed emails and the specific emails for this page"},errors:[]},{isDocumented:!0,arity:4,name:"campaign-update",qname:"mailchimp:campaign-update",signature:"($apikey as xs:string, $cid as xs:string, $name as xs:string, $value as item()) as item()*",description:' Convenience function for campaign-update#5.\n',summary:"

Convenience function for campaign-update#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"cid",type:"xs:string",occurrence:null,description:'
the Campaign Id to update
'},{name:"name",type:"xs:string",occurrence:null,description:'
the parameter name (see campaigncreate()). For items in the options array, this will be that parameter\'s name (subject, from_email, etc.). Additional parameters will be that option name (content, segment_opts). "type_opts" will be the name of the type - rss, auto, trans, etc.
'},{name:"value",type:"item()",occurrence:null,description:'
e an appropriate value for the parameter ( see campaigncreate()). For items in the options array, this will be that parameter\'s value. For additional parameters, this is the same value passed to them.
'}],returns:{type:"item()*",description:"boolean true if the update succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:5,name:"campaign-update",qname:"mailchimp:campaign-update",signature:"($endpoint-url as xs:string, $apikey as xs:string, $cid as xs:string, $name as xs:string, $value as item()) as item()*",description:' Update just about any setting for a campaign that has not been sent. See campaigncreate() for details.\n Caveats:
\n .\n',summary:"

Update just about any setting for a campaign that has not been sent.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"cid",type:"xs:string",occurrence:null,description:'
the Campaign Id to update
'},{name:"name",type:"xs:string",occurrence:null,description:'
the parameter name ( see campaigncreate()). For items in the options array, this will be that parameter\'s name (subject, from_email, etc.). Additional parameters will be that option name (content, segment_opts). "type_opts" will be the name of the type - rss, auto, trans, etc.
'},{name:"value",type:"item()",occurrence:null,description:'
An appropriate value for the parameter ( see campaigncreate()). For items in the options array, this will be that parameter\'s value. For additional parameters, this is the same value passed to them.
'}],returns:{type:"item()*",description:"True if the update succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:2,name:"campaigns-for-email",qname:"mailchimp:campaigns-for-email",signature:"($apikey as xs:string, $email_address as xs:string) as item()*",description:' Convenience function for campaigns-for-email#3.\n',summary:"

Convenience function for campaigns-for-email#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"email_address",type:"xs:string",occurrence:null,description:'
the email address to unsubscribe OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns
'}],returns:{type:"item()*",description:"An array of campaign_ids the member received"},errors:[]},{isDocumented:!0,arity:3,name:"campaigns-for-email",qname:"mailchimp:campaigns-for-email",signature:"($endpoint-url as xs:string, $apikey as xs:string, $email_address as xs:string) as item()*",description:" Retrieve all Campaigns Ids a member was sent.\n",summary:"

Retrieve all Campaigns Ids a member was sent.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"email_address",type:"xs:string",occurrence:null,description:'
the email address to unsubscribe OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns
'}],returns:{type:"item()*",description:"An array of campaign_ids the member received"},errors:[]},{isDocumented:!0,arity:4,name:"campaigns",qname:"mailchimp:campaigns",signature:"($apikey as xs:string, $filters as element(array), $start as xs:integer, $limit as xs:integer) as item()*",description:' Convenience function for campaigns#5.\n',summary:"

Convenience function for campaigns#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"filters",type:"element(array)",occurrence:null,description:'
a hash of filters to apply to this query - all are optional. See Mailchimp API documentation for more information about the parameter structure.
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional - control paging of campaigns, start results at this campaign #, defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional - control paging of campaigns, number of campaigns to return with each call, defaults to 25 (max=1000)
'}],returns:{type:"item()*",description:'An array containing a count of all matching campaigns and the specific ones for the current page (see Mailchimp API documentation for more information about the return type)'},errors:[]},{isDocumented:!0,arity:5,name:"campaigns",qname:"mailchimp:campaigns",signature:"($endpoint-url as xs:string, $apikey as xs:string, $filters as element(array), $start as xs:integer, $limit as xs:integer) as item()*",description:" Get the list of campaigns and their details matching the specified filters.\n",summary:"

Get the list of campaigns and their details matching the specified filters.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"filters",type:"element(array)",occurrence:null,description:'
a hash of filters to apply to this query - all are optional. See Mailchimp API documentation for more information about the parameter structure.
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional - control paging of campaigns, start results at this campaign #, defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional - control paging of campaigns, number of campaigns to return with each call, defaults to 25 (max=1000)
'}],returns:{type:"item()*",description:'An array containing a count of all matching campaigns and the specific ones for the current page (see Mailchimp API documentation for more information about the return type)'},errors:[]},{isDocumented:!0,arity:1,name:"chimp-chatter",qname:"mailchimp:chimp-chatter",signature:"($apikey as xs:string) as item()*",description:' Convenience function for chimp-chatter#2.\n',summary:"

Convenience function for chimp-chatter#2 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""}],returns:{type:"item()*",description:"An array of chatter messages and properties"},errors:[]},{isDocumented:!0,arity:2,name:"chimp-chatter",qname:"mailchimp:chimp-chatter",signature:"($endpoint-url as xs:string, $apikey as xs:string) as item()*",description:" Return the current Chimp Chatter messages for an account.\n",summary:"

Return the current Chimp Chatter messages for an account.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'}],returns:{type:"item()*",description:"An array of chatter messages and properties"},errors:[]},{isDocumented:!0,arity:2,name:"ecomm-order-add",qname:"mailchimp:ecomm-order-add",signature:"($apikey as xs:string, $order as element(array)) as item()*",description:' Convenience function for ecomm-order-add#3.\n',summary:"

Convenience function for ecomm-order-add#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"order",type:"element(array)",occurrence:null,description:'
an array of information pertaining to the order that has completed. Use the following keys. See Mailchimp API documentation for more information about the parameter structure.
'}],returns:{type:"item()*",description:"True if the data is saved, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:3,name:"ecomm-order-add",qname:"mailchimp:ecomm-order-add",signature:"($endpoint-url as xs:string, $apikey as xs:string, $order as element(array)) as item()*",description:" Import Ecommerce Order Information to be used for Segmentation.\n",summary:"

Import Ecommerce Order Information to be used for Segmentation.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"order",type:"element(array)",occurrence:null,description:'
an array of information pertaining to the order that has completed. Use the following keys. See Mailchimp API documentation for more information about the parameter structure.
'}],returns:{type:"item()*",description:"True if the data is saved, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:3,name:"ecomm-order-del",qname:"mailchimp:ecomm-order-del",signature:"($apikey as xs:string, $store_id as xs:string, $order_id as xs:string) as item()*",description:' Convenience function for ecomm-order-del#4.\n',summary:"

Convenience function for ecomm-order-del#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"store_id",type:"xs:string",occurrence:null,description:'
the store id the order belongs to
'},{name:"order_id",type:"xs:string",occurrence:null,description:'
the order id (generated by the store) to delete
'}],returns:{type:"item()*",description:"True if an order is deleted, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:4,name:"ecomm-order-del",qname:"mailchimp:ecomm-order-del",signature:"($endpoint-url as xs:string, $apikey as xs:string, $store_id as xs:string, $order_id as xs:string) as item()*",description:' Delete Ecommerce Order Information used for segmentation. This will generally be used by ecommerce package plugins that we provide or by 3rd part system developers.\n',summary:"

Delete Ecommerce Order Information used for segmentation.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"store_id",type:"xs:string",occurrence:null,description:'
the store id the order belongs to
'},{name:"order_id",type:"xs:string",occurrence:null,description:'
the order id (generated by the store) to delete
'}],returns:{type:"item()*",description:"True if an order is deleted, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:4,name:"ecomm-orders",qname:"mailchimp:ecomm-orders",signature:"($apikey as xs:string, $start as xs:integer, $limit as xs:integer, $since as xs:string) as item()*",description:' Convenience function for ecomm-orders#5.\n',summary:"

Convenience function for ecomm-orders#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 100, upper limit set at 500
'},{name:"since",type:"xs:string",occurrence:null,description:'
optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT
'}],returns:{type:"item()*",description:"Array the total matching orders and the specific orders for the requested page"},errors:[]},{isDocumented:!0,arity:5,name:"ecomm-orders",qname:"mailchimp:ecomm-orders",signature:"($endpoint-url as xs:string, $apikey as xs:string, $start as xs:integer, $limit as xs:integer, $since as xs:string) as item()*",description:" Retrieve the Ecommerce Orders for an account.\n",summary:"

Retrieve the Ecommerce Orders for an account.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 100, upper limit set at 500
'},{name:"since",type:"xs:string",occurrence:null,description:'
optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT
'}],returns:{type:"item()*",description:"Array the total matching orders and the specific orders for the requested page"},errors:[]},{isDocumented:!0,arity:3,name:"folder-add",qname:"mailchimp:folder-add",signature:"($apikey as xs:string, $name as xs:string, $type as xs:string) as item()*",description:' Convenience function for folder-add#4.\n',summary:"

Convenience function for folder-add#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"name",type:"xs:string",occurrence:null,description:'
a unique name for a folder (max 100 bytes)
'},{name:"type",type:"xs:string",occurrence:null,description:'
optional the type of folder to create - either "campaign" or "autoresponder". Defaults to "campaign"
'}],returns:{type:"item()*",description:"The folder_id of the newly created folder."},errors:[]},{isDocumented:!0,arity:4,name:"folder-add",qname:"mailchimp:folder-add",signature:"($endpoint-url as xs:string, $apikey as xs:string, $name as xs:string, $type as xs:string) as item()*",description:" Add a new folder to file campaigns or autoresponders in.\n",summary:"

Add a new folder to file campaigns or autoresponders in.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"name",type:"xs:string",occurrence:null,description:'
a unique name for a folder (max 100 bytes)
'},{name:"type",type:"xs:string",occurrence:null,description:'
optional the type of folder to create - either "campaign" or "autoresponder". Defaults to "campaign"
'}],returns:{type:"item()*",description:"The folder_id of the newly created folder."},errors:[]},{isDocumented:!0,arity:3,name:"folder-del",qname:"mailchimp:folder-del",signature:"($apikey as xs:string, $fid as xs:integer, $type as xs:string) as item()*",description:' Convenience function for folder-del#4.\n',summary:"

Convenience function for folder-del#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"fid",type:"xs:integer",occurrence:null,description:'
the folder id to update - retrieve from folders()
'},{name:"type",type:"xs:string",occurrence:null,description:'
optional the type of folder to create - either "campaign" or "autoresponder". Defaults to "campaign"
'}],returns:{type:"item()*",description:"True if the delete worked, otherwise an exception is thrown"},errors:[]},{isDocumented:!0,arity:4,name:"folder-del",qname:"mailchimp:folder-del",signature:"($endpoint-url as xs:string, $apikey as xs:string, $fid as xs:integer, $type as xs:string) as item()*",description:" Delete a campaign or autoresponder folder. Note that this will simply make campaigns in the folder appear unfiled, they are not removed.\n",summary:"

Delete a campaign or autoresponder folder.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"fid",type:"xs:integer",occurrence:null,description:'
the folder id to update - retrieve from folders()
'},{name:"type",type:"xs:string",occurrence:null,description:'
optional the type of folder to create - either "campaign" or "autoresponder". Defaults to "campaign"
'}],returns:{type:"item()*",description:"True if the delete worked, otherwise an exception is thrown"},errors:[]},{isDocumented:!0,arity:4,name:"folder-update",qname:"mailchimp:folder-update",signature:"($apikey as xs:string, $fid as xs:integer, $name as xs:string, $type as xs:string) as item()*",description:' Convenience function for folder-update#5.\n',summary:"

Convenience function for folder-update#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"fid",type:"xs:integer",occurrence:null,description:'
the folder id to update - retrieve from folders()
'},{name:"name",type:"xs:string",occurrence:null,description:'
a new, unique name for the folder (max 100 bytes)
'},{name:"type",type:"xs:string",occurrence:null,description:'
optional the type of folder to create - either "campaign" or "autoresponder". Defaults to "campaign"
'}],returns:{type:"item()*",description:"True if the update worked, otherwise an exception is thrown"},errors:[]},{isDocumented:!0,arity:5,name:"folder-update",qname:"mailchimp:folder-update",signature:"($endpoint-url as xs:string, $apikey as xs:string, $fid as xs:integer, $name as xs:string, $type as xs:string) as item()*",description:" Update the name of a folder for campaigns or autoresponders.\n",summary:"

Update the name of a folder for campaigns or autoresponders.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"fid",type:"xs:integer",occurrence:null,description:'
the folder id to update - retrieve from folders()
'},{name:"name",type:"xs:string",occurrence:null,description:'
a new, unique name for the folder (max 100 bytes)
'},{name:"type",type:"xs:string",occurrence:null,description:'
optional the type of folder to create - either "campaign" or "autoresponder". Defaults to "campaign"
'}],returns:{type:"item()*",description:"True if the update worked, otherwise an exception is thrown"},errors:[]},{isDocumented:!0,arity:2,name:"folders",qname:"mailchimp:folders",signature:"($apikey as xs:string, $type as xs:string) as item()*",description:' Convenience function for folders#3.\n',summary:"

Convenience function for folders#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"type",type:"xs:string",occurrence:null,description:'
optional the type of folders to return - either "campaign" or "autoresponder". Defaults to "campaign"
'}],returns:{type:"item()*",description:"Array of folder structs (see Returned Fields for details)"},errors:[]},{isDocumented:!0,arity:3,name:"folders",qname:"mailchimp:folders",signature:"($endpoint-url as xs:string, $apikey as xs:string, $type as xs:string) as item()*",description:" List all the folders for a user account.\n",summary:"

List all the folders for a user account.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"type",type:"xs:string",occurrence:null,description:'
optional the type of folders to return - either "campaign" or "autoresponder". Defaults to "campaign"
'}],returns:{type:"item()*",description:"Array of folder structs (see Returned Fields for details)"},errors:[]},{isDocumented:!0,arity:3,name:"generate-text",qname:"mailchimp:generate-text",signature:"($apikey as xs:string, $type as xs:string, $content as item()) as item()*",description:' Convenience function for generate-text#4.\n',summary:"

Convenience function for generate-text#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"type",type:"xs:string",occurrence:null,description:'
The type of content to parse. Must be one of: "html", "template", "url", "cid" (Campaign Id), or "tid" (Template Id)
'},{name:"content",type:"item()",occurrence:null,description:'
The content to use. For "html" expects a single string value, "template" expects an array like you send to campaignCreate, "url" expects a valid & public URL to pull from, "cid" expects a valid Campaign Id, and "tid" expects a valid Template Id on your account.
'}],returns:{type:"item()*",description:"The content pass in converted to text."},errors:[]},{isDocumented:!0,arity:4,name:"generate-text",qname:"mailchimp:generate-text",signature:"($endpoint-url as xs:string, $apikey as xs:string, $type as xs:string, $content as item()) as item()*",description:' Have HTML content auto-converted to a text-only format. You can send: plain HTML, an array of Template content, an existing Campaign Id, or an existing Template Id. Note that this will not save anything to or update any of your lists, campaigns, or templates.\n',summary:"

Have HTML content auto-converted to a text-only format.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"type",type:"xs:string",occurrence:null,description:'
The type of content to parse. Must be one of: "html", "template", "url", "cid" (Campaign Id), or "tid" (Template Id)
'},{name:"content",type:"item()",occurrence:null,description:'
The content to use. For "html" expects a single string value, "template" expects an array like you send to campaignCreate, "url" expects a valid & public URL to pull from, "cid" expects a valid Campaign Id, and "tid" expects a valid Template Id on your account.
'}],returns:{type:"item()*",description:"The content pass in converted to text."},errors:[]},{isDocumented:!0,arity:1,name:"get-account-details",qname:"mailchimp:get-account-details",signature:"($apikey as xs:string) as item()*",description:' Convenience function for get-account-details#2.\n',summary:"

Convenience function for get-account-details#2 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""}],returns:{type:"item()*",description:"array containing the details for the account tied to this API Key"},errors:[]},{isDocumented:!0,arity:2,name:"get-account-details",qname:"mailchimp:get-account-details",signature:"($endpoint-url as xs:string, $apikey as xs:string) as item()*",description:" Retrieve lots of account information including payments made, plan info, some account stats, installed modules, contact info, and more.\n",summary:"

Retrieve lots of account information including payments made, plan info, some account stats, installed modules, contact info, and more.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'}],returns:{type:"item()*",description:"Array containing the details for the account tied to this API Key"},errors:[]},{isDocumented:!0,arity:3,name:"inline-css",qname:"mailchimp:inline-css",signature:"($apikey as xs:string, $html as xs:string, $strip_css as xs:boolean) as item()*",description:' Convenience function for inline-css#4.\n',summary:"

Convenience function for inline-css#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"html",type:"xs:string",occurrence:null,description:'
Your HTML content
'},{name:"strip_css",type:"xs:boolean",occurrence:null,description:'
optional Whether you want the CSS &lt;style&gt; tags stripped from the returned document. Defaults to false.
'}],returns:{type:"item()*",description:"Your HTML content with all CSS inlined, just like if we sent it."},errors:[]},{isDocumented:!0,arity:4,name:"inline-css",qname:"mailchimp:inline-css",signature:"($endpoint-url as xs:string, $apikey as xs:string, $html as xs:string, $strip_css as xs:boolean) as item()*",description:" Send your HTML content to have the CSS inlined and optionally remove the original styles.\n",summary:"

Send your HTML content to have the CSS inlined and optionally remove the original styles.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"html",type:"xs:string",occurrence:null,description:'
Your HTML content
'},{name:"strip_css",type:"xs:boolean",occurrence:null,description:'
optional Whether you want the CSS &lt;style&gt; tags stripped from the returned document. Defaults to false.
'}],returns:{type:"item()*",description:"Your HTML content with all CSS inlined, just like if we sent it."},errors:[]},{isDocumented:!0,arity:5,name:"list-abuse-reports",qname:"mailchimp:list-abuse-reports",signature:"($apikey as xs:string, $id as xs:string, $start as xs:integer, $limit as xs:integer, $since as xs:string) as item()*",description:' Convenience function for list-abuse-reports#6.\n',summary:"

Convenience function for list-abuse-reports#6 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to pull abuse reports for (can be gathered using lists())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 500, upper limit set at 1000
'},{name:"since",type:"xs:string",occurrence:null,description:'
optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT
'}],returns:{type:"item()*",description:"The total of all reports and the specific reports reports this page"},errors:[]},{isDocumented:!0,arity:6,name:"list-abuse-reports",qname:"mailchimp:list-abuse-reports",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $start as xs:integer, $limit as xs:integer, $since as xs:string) as item()*",description:" Get all email addresses that complained about a given campaign.\n",summary:"

Get all email addresses that complained about a given campaign.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to pull abuse reports for (can be gathered using lists())
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 500, upper limit set at 1000
'},{name:"since",type:"xs:string",occurrence:null,description:'
optional pull only messages since this time - use YYYY-MM-DD HH:II:SS format in GMT
'}],returns:{type:"item()*",description:"The total of all reports and the specific reports reports this page"},errors:[]},{isDocumented:!0,arity:2,name:"list-activity",qname:"mailchimp:list-activity",signature:"($apikey as xs:string, $id as xs:string) as item()*",description:' Convenience function for list-activity#3.\n',summary:"

Convenience function for list-activity#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"Array of array of daily values."},errors:[]},{isDocumented:!0,arity:3,name:"list-activity",qname:"mailchimp:list-activity",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string) as item()*",description:" Access up to the previous 180 days of daily detailed aggregated activity stats for a given list.\n",summary:"

Access up to the previous 180 days of daily detailed aggregated activity stats for a given list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"array array of array of daily values."},errors:[]},{isDocumented:!0,arity:6,name:"list-batch-subscribe",qname:"mailchimp:list-batch-subscribe",signature:"($apikey as xs:string, $id as xs:string, $batch as element(array), $double_optin as xs:boolean, $update_existing as xs:boolean, $replace_interests as xs:boolean) as item()*",description:' Convenience function for list-batch-subscribe#7.\n',summary:"

Convenience function for list-batch-subscribe#7 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"batch",type:"element(array)",occurrence:null,description:'
an array of structs for each address to import with two special keys: "EMAIL" for the email address, and "EMAIL_TYPE" for the email type option (html, text, or mobile)
'},{name:"double_optin",type:"xs:boolean",occurrence:null,description:'
flag to control whether to send an opt-in confirmation email - defaults to true
'},{name:"update_existing",type:"xs:boolean",occurrence:null,description:'
flag to control whether to update members that are already subscribed to the list or to return an error, defaults to false (return error)
'},{name:"replace_interests",type:"xs:boolean",occurrence:null,description:'
flag to determine whether we replace the interest groups with the updated groups provided, or we add the provided groups to the member\'s interest groups (optional, defaults to true)
'}],returns:{type:"item()*",description:"Array of result counts and any errors that occurred"},errors:[]},{isDocumented:!0,arity:7,name:"list-batch-subscribe",qname:"mailchimp:list-batch-subscribe",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $batch as element(array), $double_optin as xs:boolean, $update_existing as xs:boolean, $replace_interests as xs:boolean) as item()*",description:' Subscribe a batch of email addresses to a list at once. If you are using a serialized version of the API, we strongly suggest that you only run this method as a POST request, and not a GET request. Maximum batch sizes vary based on the amount of data in each record, though you should cap them at 5k - 10k records, depending on your experience. These calls are also long, so be sure you increase your timeout values.\n',summary:"

Subscribe a batch of email addresses to a list at once.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"batch",type:"element(array)",occurrence:null,description:'
an array of structs for each address to import with two special keys: "EMAIL" for the email address, and "EMAIL_TYPE" for the email type option (html, text, or mobile)
'},{name:"double_optin",type:"xs:boolean",occurrence:null,description:'
flag to control whether to send an opt-in confirmation email - defaults to true
'},{name:"update_existing",type:"xs:boolean",occurrence:null,description:'
flag to control whether to update members that are already subscribed to the list or to return an error, defaults to false (return error)
'},{name:"replace_interests",type:"xs:boolean",occurrence:null,description:'
flag to determine whether we replace the interest groups with the updated groups provided, or we add the provided groups to the member\'s interest groups (optional, defaults to true)
'}],returns:{type:"item()*",description:"Array of result counts and any errors that occurred"},errors:[]},{isDocumented:!0,arity:6,name:"list-batch-unsubscribe",qname:"mailchimp:list-batch-unsubscribe",signature:"($apikey as xs:string, $id as xs:string, $emails as element(array), $delete_member as xs:boolean, $send_goodbye as xs:boolean, $send_notify as xs:boolean) as item()*",description:' Convenience function for list-batch-unsubscribe#7.\n',summary:"

Convenience function for list-batch-unsubscribe#7 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"emails",type:"element(array)",occurrence:null,description:'
array of email addresses to unsubscribe
'},{name:"delete_member",type:"xs:boolean",occurrence:null,description:'
flag to completely delete the member from your list instead of just unsubscribing, default to false
'},{name:"send_goodbye",type:"xs:boolean",occurrence:null,description:'
flag to send the goodbye email to the email addresses, defaults to true
'},{name:"send_notify",type:"xs:boolean",occurrence:null,description:'
flag to send the unsubscribe notification email to the address defined in the list email notification settings, defaults to false
'}],returns:{type:"item()*",description:"Array of result counts and any errors that occurred"},errors:[]},{isDocumented:!0,arity:7,name:"list-batch-unsubscribe",qname:"mailchimp:list-batch-unsubscribe",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $emails as element(array), $delete_member as xs:boolean, $send_goodbye as xs:boolean, $send_notify as xs:boolean) as item()*",description:" Unsubscribe a batch of email addresses to a list.\n",summary:"

Unsubscribe a batch of email addresses to a list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"emails",type:"element(array)",occurrence:null,description:'
array of email addresses to unsubscribe
'},{name:"delete_member",type:"xs:boolean",occurrence:null,description:'
flag to completely delete the member from your list instead of just unsubscribing, default to false
'},{name:"send_goodbye",type:"xs:boolean",occurrence:null,description:'
flag to send the goodbye email to the email addresses, defaults to true
'},{name:"send_notify",type:"xs:boolean",occurrence:null,description:'
flag to send the unsubscribe notification email to the address defined in the list email notification settings, defaults to false
'}],returns:{type:"item()*",description:"Array of result counts and any errors that occurred"},errors:[]},{isDocumented:!0,arity:2,name:"list-clients",qname:"mailchimp:list-clients",signature:"($apikey as xs:string, $id as xs:string) as item()*",description:' Convenience function for list-clients#3.\n',summary:"

Convenience function for list-clients#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"array the desktop and mobile user agents in use on the list"},errors:[]},{isDocumented:!0,arity:3,name:"list-clients",qname:"mailchimp:list-clients",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string) as item()*",description:" Retrieve the clients that the list's subscribers have been tagged as being used based on user agents seen. Made possible by user-agent-string.info double penetration the percent of desktop clients in use array clients a record containing the 'client', an 'icon' image url, the 'percent' using the client, and the total 'members' represented double penetration the percent of mobile clients in use array clients a record containing the 'client', an 'icon' image url, the 'percent' using the client, and the total 'members' represented.\n",summary:"

Retrieve the clients that the list's subscribers have been tagged as being used based on user agents seen.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"Array the desktop and mobile user agents in use on the list"},errors:[]},{isDocumented:!0,arity:2,name:"list-growth-history",qname:"mailchimp:list-growth-history",signature:"($apikey as xs:string, $id as xs:string) as item()*",description:' Convenience function for list-growth-history#3.\n',summary:"

Convenience function for list-growth-history#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"Array of months and growth"},errors:[]},{isDocumented:!0,arity:3,name:"list-growth-history",qname:"mailchimp:list-growth-history",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string) as item()*",description:" Access the Growth History by Month for a given list.\n",summary:"

Access the Growth History by Month for a given list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"Array of months and growth"},errors:[]},{isDocumented:!0,arity:4,name:"list-interest-group-add",qname:"mailchimp:list-interest-group-add",signature:"($apikey as xs:string, $id as xs:string, $group_name as xs:string, $grouping_id as xs:integer) as item()*",description:' Convenience function for list-interest-group-add#5.\n',summary:"

Convenience function for list-interest-group-add#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"group_name",type:"xs:string",occurrence:null,description:'
the interest group to add - group names must be unique within a grouping
'},{name:"grouping_id",type:"xs:integer",occurrence:null,description:'
ouping_id The grouping to add the new group to - get using list-interest-groupings(). If not supplied, the first grouping on the list is used.
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:5,name:"list-interest-group-add",qname:"mailchimp:list-interest-group-add",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $group_name as xs:string, $grouping_id as xs:integer) as item()*",description:" Add a single Interest Group - if interest groups for the List are not yet enabled, adding the first group will automatically turn them on.\n",summary:"

Add a single Interest Group - if interest groups for the List are not yet enabled, adding the first group will automatically turn them on.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"group_name",type:"xs:string",occurrence:null,description:'
the interest group to add - group names must be unique within a grouping
'},{name:"grouping_id",type:"xs:integer",occurrence:null,description:'
ouping_id The grouping to add the new group to - get using list-interest-groupings() . If not supplied, the first grouping on the list is used.
'}],returns:{type:"item()*",description:"bool true if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:4,name:"list-interest-group-del",qname:"mailchimp:list-interest-group-del",signature:"($apikey as xs:string, $id as xs:string, $group_name as xs:string, $grouping_id as xs:integer) as item()*",description:' Convenience function for list-interest-group-del#5.\n',summary:"

Convenience function for list-interest-group-del#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"group_name",type:"xs:string",occurrence:null,description:'
the interest group to delete
'},{name:"grouping_id",type:"xs:integer",occurrence:null,description:'
The grouping to delete the group from - get using list-interest-groupings() . If not supplied, the first grouping on the list is used.
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:5,name:"list-interest-group-del",qname:"mailchimp:list-interest-group-del",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $group_name as xs:string, $grouping_id as xs:integer) as item()*",description:" Delete a single Interest Group - if the last group for a list is deleted, this will also turn groups for the list off.\n",summary:"

Delete a single Interest Group - if the last group for a list is deleted, this will also turn groups for the list off.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"group_name",type:"xs:string",occurrence:null,description:'
the interest group to delete
'},{name:"grouping_id",type:"xs:integer",occurrence:null,description:'
The grouping to delete the group from - get using list-interest-groupings() . If not supplied, the first grouping on the list is used.
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:5,name:"list-interest-group-update",qname:"mailchimp:list-interest-group-update",signature:"($apikey as xs:string, $id as xs:string, $old_name as xs:string, $new_name as xs:string, $grouping_id as xs:integer) as item()*",description:' Convenience function for list-interest-group-update#6.\n',summary:"

Convenience function for list-interest-group-update#6 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"old_name",type:"xs:string",occurrence:null,description:'
the interest group name to be changed
'},{name:"new_name",type:"xs:string",occurrence:null,description:'
the new interest group name to be set
'},{name:"grouping_id",type:"xs:integer",occurrence:null,description:'
ouping_id The grouping to delete the group from - get using list-interest-groupings() . If not supplied, the first grouping on the list is used.
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:6,name:"list-interest-group-update",qname:"mailchimp:list-interest-group-update",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $old_name as xs:string, $new_name as xs:string, $grouping_id as xs:integer) as item()*",description:" Change the name of an Interest Group.\n",summary:"

Change the name of an Interest Group.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"old_name",type:"xs:string",occurrence:null,description:'
the interest group name to be changed
'},{name:"new_name",type:"xs:string",occurrence:null,description:'
the new interest group name to be set
'},{name:"grouping_id",type:"xs:integer",occurrence:null,description:'
ouping_id The grouping to delete the group from - get using list-interest-groupings() . If not supplied, the first grouping on the list is used.
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:5,name:"list-interest-grouping-add",qname:"mailchimp:list-interest-grouping-add",signature:"($apikey as xs:string, $id as xs:string, $name as xs:string, $type as xs:string, $groups as element(array)) as item()*",description:' Convenience function for list-interest-grouping-add#6.\n',summary:"

Convenience function for list-interest-grouping-add#6 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"name",type:"xs:string",occurrence:null,description:'
the interest grouping to add - grouping names must be unique
'},{name:"type",type:"xs:string",occurrence:null,description:'
The type of the grouping to add - one of "checkboxes", "hidden", "dropdown", "radio"
'},{name:"groups",type:"element(array)",occurrence:null,description:'
The lists of initial group names to be added - at least 1 is required and the names must be unique within a grouping. If the number takes you over the 60 group limit, an error will be thrown.
'}],returns:{type:"item()*",description:"The new grouping id if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:6,name:"list-interest-grouping-add",qname:"mailchimp:list-interest-grouping-add",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $name as xs:string, $type as xs:string, $groups as element(array)) as item()*",description:" Add a new Interest Grouping - if interest groups for the List are not yet enabled, adding the first grouping will automatically turn them on.\n",summary:"

Add a new Interest Grouping - if interest groups for the List are not yet enabled, adding the first grouping will automatically turn them on.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"name",type:"xs:string",occurrence:null,description:'
the interest grouping to add - grouping names must be unique
'},{name:"type",type:"xs:string",occurrence:null,description:'
The type of the grouping to add - one of "checkboxes", "hidden", "dropdown", "radio"
'},{name:"groups",type:"element(array)",occurrence:null,description:'
The lists of initial group names to be added - at least 1 is required and the names must be unique within a grouping. If the number takes you over the 60 group limit, an error will be thrown.
'}],returns:{type:"item()*",description:"The new grouping id if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:2,name:"list-interest-grouping-del",qname:"mailchimp:list-interest-grouping-del",signature:"($apikey as xs:string, $grouping_id as xs:integer) as item()*",description:' Convenience function for list-interest-grouping-del#3.\n',summary:"

Convenience function for list-interest-grouping-del#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"grouping_id",type:"xs:integer",occurrence:null,description:'
the interest grouping id - get from list-interest-groupings()
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:3,name:"list-interest-grouping-del",qname:"mailchimp:list-interest-grouping-del",signature:"($endpoint-url as xs:string, $apikey as xs:string, $grouping_id as xs:integer) as item()*",description:" Delete an existing Interest Grouping - this will permanently delete all contained interest groups and will remove those selections from all list members.\n",summary:"

Delete an existing Interest Grouping - this will permanently delete all contained interest groups and will remove those selections from all list members.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"grouping_id",type:"xs:integer",occurrence:null,description:'
the interest grouping id - get from list-interest-groupings()
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:4,name:"list-interest-grouping-update",qname:"mailchimp:list-interest-grouping-update",signature:"($apikey as xs:string, $grouping_id as xs:integer, $name as xs:string, $value as xs:string) as item()*",description:' Convenience function for list-interest-grouping-update#5.\n',summary:"

Convenience function for list-interest-grouping-update#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"grouping_id",type:"xs:integer",occurrence:null,description:'
the interest grouping id - get from list-interest-groupings()
'},{name:"name",type:"xs:string",occurrence:null,description:'
The name of the field to update - either "name" or "type". Groups with in the grouping should be manipulated using the standard listInterestGroup* methods
'},{name:"value",type:"xs:string",occurrence:null,description:'
The new value of the field. Grouping names must be unique - only "hidden" and "checkboxes" grouping types can be converted between each other.
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:5,name:"list-interest-grouping-update",qname:"mailchimp:list-interest-grouping-update",signature:"($endpoint-url as xs:string, $apikey as xs:string, $grouping_id as xs:integer, $name as xs:string, $value as xs:string) as item()*",description:" Update an existing Interest Grouping.\n",summary:"

Update an existing Interest Grouping.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"grouping_id",type:"xs:integer",occurrence:null,description:'
the interest grouping id - get from list-interest-groupings()
'},{name:"name",type:"xs:string",occurrence:null,description:'
The name of the field to update - either "name" or "type". Groups with in the grouping should be manipulated using the standard listInterestGroup* methods
'},{name:"value",type:"xs:string",occurrence:null,description:'
The new value of the field. Grouping names must be unique - only "hidden" and "checkboxes" grouping types can be converted between each other.
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:2,name:"list-interest-groupings",qname:"mailchimp:list-interest-groupings",signature:"($apikey as xs:string, $id as xs:string) as item()*",description:' Convenience function for list-interest-groupings#3.\n',summary:"

Convenience function for list-interest-groupings#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"List of interest groups for the list"},errors:[]},{isDocumented:!0,arity:3,name:"list-interest-groupings",qname:"mailchimp:list-interest-groupings",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string) as item()*",description:" Get the list of interest groupings for a given list, including the label, form information, and included groups for each.\n",summary:"

Get the list of interest groupings for a given list, including the label, form information, and included groups for each.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"List of interest groups for the list"},errors:[]},{isDocumented:!0,arity:2,name:"list-locations",qname:"mailchimp:list-locations",signature:"($apikey as xs:string, $id as xs:string) as item()*",description:' Convenience function for list-locations#3.\n',summary:"

Convenience function for list-locations#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"Array of locations"},errors:[]},{isDocumented:!0,arity:3,name:"list-locations",qname:"mailchimp:list-locations",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string) as item()*",description:" Retrieve the locations (countries) that the list's subscribers have been tagged to based on geocoding their IP address.\n",summary:"

Retrieve the locations (countries) that the list's subscribers have been tagged to based on geocoding their IP address.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"Array of locations"},errors:[]},{isDocumented:!0,arity:3,name:"list-member-activity",qname:"mailchimp:list-member-activity",signature:"($apikey as xs:string, $id as xs:string, $email_address as element(array)) as item()*",description:' Convenience function for list-member-activity#4.\n',summary:"

Convenience function for list-member-activity#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"email_address",type:"element(array)",occurrence:null,description:'
an array of up to 50 email addresses to get information for OR the "id"(s) for the member returned from listMembers, Webhooks, and Campaigns.
'}],returns:{type:"item()*",description:"Array of data and success/error counts"},errors:[]},{isDocumented:!0,arity:4,name:"list-member-activity",qname:"mailchimp:list-member-activity",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $email_address as element(array)) as item()*",description:" Get the most recent 100 activities for particular list members (open, click, bounce, unsub, abuse, sent to).\n",summary:"

Get the most recent 100 activities for particular list members (open, click, bounce, unsub, abuse, sent to).

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"email_address",type:"element(array)",occurrence:null,description:'
an array of up to 50 email addresses to get information for OR the "id"(s) for the member returned from listMembers, Webhooks, and Campaigns.
'}],returns:{type:"item()*",description:"Array of data and success/error counts"},errors:[]},{isDocumented:!0,arity:3,name:"list-member-info",qname:"mailchimp:list-member-info",signature:"($apikey as xs:string, $id as xs:string, $email_address as element(array)) as item()*",description:' Convenience function for list-member-info#4.\n',summary:"

Convenience function for list-member-info#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"email_address",type:"element(array)",occurrence:null,description:'
an array of up to 50 email addresses to get information for OR the "id"(s) for the member returned from listMembers, Webhooks, and Campaigns. For backwards compatibility, if a string is passed, it will be treated as an array with a single element (will not work with XML-RPC).
'}],returns:{type:"item()*",description:"Array of list members with their info in an array (see Returned Fields for details)"},errors:[]},{isDocumented:!0,arity:4,name:"list-member-info",qname:"mailchimp:list-member-info",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $email_address as element(array)) as item()*",description:" Get all the information for particular members of a list.\n",summary:"

Get all the information for particular members of a list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"email_address",type:"element(array)",occurrence:null,description:'
an array of up to 50 email addresses to get information for OR the "id"(s) for the member returned from listMembers, Webhooks, and Campaigns. For backwards compatibility, if a string is passed, it will be treated as an array with a single element (will not work with XML-RPC).
'}],returns:{type:"item()*",description:"Array of list members with their info in an array (see Returned Fields for details)"},errors:[]},{isDocumented:!0,arity:6,name:"list-members",qname:"mailchimp:list-members",signature:"($apikey as xs:string, $id as xs:string, $status as xs:string, $since as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:' Convenience function for list-members#7.\n',summary:"

Convenience function for list-members#7 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"status",type:"xs:string",occurrence:null,description:'
the status to get members for - one of(subscribed, unsubscribed, cleaned, updated), defaults to subscribed
'},{name:"since",type:"xs:string",occurrence:null,description:'
optional pull all members whose status (subscribed/unsubscribed/cleaned) has changed or whose profile (updated) has changed since this date/time (in GMT) - format is YYYY-MM-DD HH:mm:ss (24hr)
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 100, upper limit set at 15000
'}],returns:{type:"item()*",description:"Array of a the total records match and matching list member data for this page (see Returned Fields for details)"},errors:[]},{isDocumented:!0,arity:7,name:"list-members",qname:"mailchimp:list-members",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $status as xs:string, $since as xs:string, $start as xs:integer, $limit as xs:integer) as item()*",description:" Get all of the list members for a list that are of a particular status.\n",summary:"

Get all of the list members for a list that are of a particular status.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"status",type:"xs:string",occurrence:null,description:'
the status to get members for - one of(subscribed, unsubscribed, cleaned, updated), defaults to subscribed
'},{name:"since",type:"xs:string",occurrence:null,description:'
optional pull all members whose status (subscribed/unsubscribed/cleaned) has changed or whose profile (updated) has changed since this date/time (in GMT) - format is YYYY-MM-DD HH:mm:ss (24hr)
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the page number to start at - defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional for large data sets, the number of results to return - defaults to 100, upper limit set at 15000
'}],returns:{type:"item()*",description:"Array of a the total records match and matching list member data for this page (see Returned Fields for details)"},errors:[]},{isDocumented:!0,arity:5,name:"list-merge-var-add",qname:"mailchimp:list-merge-var-add",signature:"($apikey as xs:string, $id as xs:string, $tag as xs:string, $name as xs:string, $options as element(array)) as item()*",description:' Convenience function for list-merge-var-add#6.\n',summary:"

Convenience function for list-merge-var-add#6 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"tag",type:"xs:string",occurrence:null,description:'
The merge tag to add, e.g. FNAME
'},{name:"name",type:"xs:string",occurrence:null,description:'
The long description of the tag being added, used for user displays
'},{name:"options",type:"element(array)",occurrence:null,description:'
optional Various options for this merge var. note: for historical purposes this can also take a "boolean"
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:6,name:"list-merge-var-add",qname:"mailchimp:list-merge-var-add",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $tag as xs:string, $name as xs:string, $options as element(array)) as item()*",description:" Add a new merge tag to a given list.\n",summary:"

Add a new merge tag to a given list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"tag",type:"xs:string",occurrence:null,description:'
The merge tag to add, e.g. FNAME
'},{name:"name",type:"xs:string",occurrence:null,description:'
The long description of the tag being added, used for user displays
'},{name:"options",type:"element(array)",occurrence:null,description:'
optional Various options for this merge var. note: for historical purposes this can also take a "boolean"
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:3,name:"list-merge-var-del",qname:"mailchimp:list-merge-var-del",signature:"($apikey as xs:string, $id as xs:string, $tag as xs:string) as item()*",description:' Convenience function for list-merge-var-del#4.\n',summary:"

Convenience function for list-merge-var-del#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"tag",type:"xs:string",occurrence:null,description:'
The merge tag to delete
'}],returns:{type:"item()*",description:"bool true if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:4,name:"list-merge-var-del",qname:"mailchimp:list-merge-var-del",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $tag as xs:string) as item()*",description:" Delete a merge tag from a given list and all its members. Seriously - the data is removed from all members as well! Note that on large lists this method may seem a bit slower than calls you typically make.\n",summary:"

Delete a merge tag from a given list and all its members.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"tag",type:"xs:string",occurrence:null,description:'
The merge tag to delete
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:4,name:"list-merge-var-update",qname:"mailchimp:list-merge-var-update",signature:"($apikey as xs:string, $id as xs:string, $tag as xs:string, $options as element(array)) as item()*",description:' Convenience function for list-merge-var-update#5.\n',summary:"

Convenience function for list-merge-var-update#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"tag",type:"xs:string",occurrence:null,description:'
The merge tag to update
'},{name:"options",type:"element(array)",occurrence:null,description:'
The options to change for a merge var. See list-merge-var-add() for valid options
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:5,name:"list-merge-var-update",qname:"mailchimp:list-merge-var-update",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $tag as xs:string, $options as element(array)) as item()*",description:" Update most parameters for a merge tag on a given list. You cannot currently change the merge type.\n",summary:"

Update most parameters for a merge tag on a given list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"tag",type:"xs:string",occurrence:null,description:'
The merge tag to update
'},{name:"options",type:"element(array)",occurrence:null,description:'
The options to change for a merge var. See list-merge-var-add() for valid options
'}],returns:{type:"item()*",description:"True if the request succeeds, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:2,name:"list-merge-vars",qname:"mailchimp:list-merge-vars",signature:"($apikey as xs:string, $id as xs:string) as item()*",description:' Convenience function for list-merge-vars#3.\n',summary:"

Convenience function for list-merge-vars#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"List of merge tags for the list"},errors:[]},{isDocumented:!0,arity:3,name:"list-merge-vars",qname:"mailchimp:list-merge-vars",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string) as item()*",description:" Get the list of merge tags for a given list, including their name, tag, and required setting.\n",summary:"

Get the list of merge tags for a given list, including their name, tag, and required setting.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"List of merge tags for the list"},errors:[]},{isDocumented:!0,arity:3,name:"list-static-segment-add",qname:"mailchimp:list-static-segment-add",signature:"($apikey as xs:string, $id as xs:string, $name as xs:string) as item()*",description:' Convenience function for list-static-segment-add#4.\n',summary:"

Convenience function for list-static-segment-add#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"name",type:"xs:string",occurrence:null,description:'
a unique name per list for the segment - 50 byte maximum length, anything longer will throw an error
'}],returns:{type:"item()*",description:"The id of the new segment, otherwise an error will be thrown."},errors:[]},{isDocumented:!0,arity:4,name:"list-static-segment-add",qname:"mailchimp:list-static-segment-add",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $name as xs:string) as item()*",description:' Save a segment against a list for later use. There is no limit to the number of segments which can be saved. Static Segments are not tied to any merge data, interest groups, etc. They essentially allow you to configure an unlimited number of custom segments which will have standard performance. When using proper segments, Static Segments are one of the available options for segmentation just as if you used a merge var (and they can be used with other segmentation options), though performance may degrade at that point.\n',summary:"

Save a segment against a list for later use.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"name",type:"xs:string",occurrence:null,description:'
a unique name per list for the segment - 50 byte maximum length, anything longer will throw an error
'}],returns:{type:"item()*",description:"The id of the new segment, otherwise an error will be thrown."},errors:[]},{isDocumented:!0,arity:3,name:"list-static-segment-del",qname:"mailchimp:list-static-segment-del",signature:"($apikey as xs:string, $id as xs:string, $seg_id as xs:integer) as item()*",description:' Convenience function for list-static-segment-del#4.\n',summary:"

Convenience function for list-static-segment-del#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"seg_id",type:"xs:integer",occurrence:null,description:'
the id of the static segment to delete - get from list-static-segments()
'}],returns:{type:"item()*",description:"True if it worked, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:4,name:"list-static-segment-del",qname:"mailchimp:list-static-segment-del",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $seg_id as xs:integer) as item()*",description:" Delete a static segment. Note that this will, of course, remove any member affiliations with the segment.\n",summary:"

Delete a static segment.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"seg_id",type:"xs:integer",occurrence:null,description:'
the id of the static segment to delete - get from list-static-segments()
'}],returns:{type:"item()*",description:"True if it worked, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:4,name:"list-static-segment-members-add",qname:"mailchimp:list-static-segment-members-add",signature:"($apikey as xs:string, $id as xs:string, $seg_id as xs:integer, $batch as element(array)) as item()*",description:' Convenience function for list-static-segment-members-add#5.\n',summary:"

Convenience function for list-static-segment-members-add#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"seg_id",type:"xs:integer",occurrence:null,description:'
the id of the static segment to modify - get from list-static-segments()
'},{name:"batch",type:"element(array)",occurrence:null,description:'
an array of email addresses and/or unique_ids to add to the segment
'}],returns:{type:"item()*",description:"An array with the results of the operation"},errors:[]},{isDocumented:!0,arity:5,name:"list-static-segment-members-add",qname:"mailchimp:list-static-segment-members-add",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $seg_id as xs:integer, $batch as element(array)) as item()*",description:' Add list members to a static segment. It is suggested that you limit batch size to no more than 10,000 addresses per call. Email addresses must exist on the list in order to be included - this will not subscribe them to the list!.\n',summary:"

Add list members to a static segment.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"seg_id",type:"xs:integer",occurrence:null,description:'
the id of the static segment to modify - get from list-static-segments()
'},{name:"batch",type:"element(array)",occurrence:null,description:'
an array of email addresses and/or unique_ids to add to the segment
'}],returns:{type:"item()*",description:"array an array with the results of the operation"},errors:[]},{isDocumented:!0,arity:4,name:"list-static-segment-members-del",qname:"mailchimp:list-static-segment-members-del",signature:"($apikey as xs:string, $id as xs:string, $seg_id as xs:integer, $batch as element(array)) as item()*",description:' Convenience function for list-static-segment-members-del#5.\n',summary:"

Convenience function for list-static-segment-members-del#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"seg_id",type:"xs:integer",occurrence:null,description:'
the id of the static segment to delete - get from list-static-segments()
'},{name:"batch",type:"element(array)",occurrence:null,description:'
an array of email addresses and/or unique_ids to remove from the segment
'}],returns:{type:"item()*",description:"An array with the results of the operation"},errors:[]},{isDocumented:!0,arity:5,name:"list-static-segment-members-del",qname:"mailchimp:list-static-segment-members-del",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $seg_id as xs:integer, $batch as element(array)) as item()*",description:' Remove list members from a static segment. It is suggested that you limit batch size to no more than 10,000 addresses per call. Email addresses must exist on the list in order to be removed - this will not unsubscribe them from the list!.\n',summary:"

Remove list members from a static segment.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"seg_id",type:"xs:integer",occurrence:null,description:'
the id of the static segment to delete - get from list-static-segments()
'},{name:"batch",type:"element(array)",occurrence:null,description:'
an array of email addresses and/or unique_ids to remove from the segment
'}],returns:{type:"item()*",description:"An array with the results of the operation"},errors:[]},{isDocumented:!0,arity:3,name:"list-static-segment-reset",qname:"mailchimp:list-static-segment-reset",signature:"($apikey as xs:string, $id as xs:string, $seg_id as xs:integer) as item()*",description:' Convenience function for list-static-segment-reset#4.\n',summary:"

Convenience function for list-static-segment-reset#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"seg_id",type:"xs:integer",occurrence:null,description:'
the id of the static segment to reset - get from list-static-segments()
'}],returns:{type:"item()*",description:"True if it worked, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:4,name:"list-static-segment-reset",qname:"mailchimp:list-static-segment-reset",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $seg_id as xs:integer) as item()*",description:' Resets a static segment - removes all members from the static segment. Note: does not actually affect list member data.\n',summary:"

Resets a static segment - removes all members from the static segment.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"seg_id",type:"xs:integer",occurrence:null,description:'
the id of the static segment to reset - get from list-static-segments()
'}],returns:{type:"item()*",description:"True if it worked, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:2,name:"list-static-segments",qname:"mailchimp:list-static-segments",signature:"($apikey as xs:string, $id as xs:string) as item()*",description:' Convenience function for list-static-segments#3.\n',summary:"

Convenience function for list-static-segments#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"An array of parameters for each static segment"},errors:[]},{isDocumented:!0,arity:3,name:"list-static-segments",qname:"mailchimp:list-static-segments",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string) as item()*",description:" Retrieve all of the Static Segments for a list.\n",summary:"

Retrieve all of the Static Segments for a list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"An array of parameters for each static segment"},errors:[]},{isDocumented:!0,arity:10,name:"list-subscribe",qname:"mailchimp:list-subscribe",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $email_address as xs:string, $merge_vars as element(array), $email_type as xs:string, $double_optin as xs:boolean, $update_existing as xs:boolean, $replace_interests as xs:boolean, $send_welcome as xs:boolean) as item()*",description:" Subscribe the provided email to a list.\n",summary:"

Subscribe the provided email to a list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"email_address",type:"xs:string",occurrence:null,description:'
the email address to subscribe
'},{name:"merge_vars",type:"element(array)",occurrence:null,description:'
optional merges for the email (FNAME, LNAME, etc.) (see examples below for handling "blank" arrays). Note that a merge field can only hold up to 255 bytes. Also, there are a few "special" keys. See Mailchimp API documentation for more information about the parameter structure.
'},{name:"email_type",type:"xs:string",occurrence:null,description:'
optional email type preference for the email (html, text, or mobile defaults to html)
'},{name:"double_optin",type:"xs:boolean",occurrence:null,description:'
optional flag to control whether a double opt-in confirmation message is sent, defaults to true. Abusing this may cause your account to be suspended.
'},{name:"update_existing",type:"xs:boolean",occurrence:null,description:'
optional flag to control whether a existing subscribers should be updated instead of throwing and error, defaults to false
'},{name:"replace_interests",type:"xs:boolean",occurrence:null,description:'
optional flag to determine whether we replace the interest groups with the groups provided, or we add the provided groups to the member\'s interest groups (optional, defaults to true)
'},{name:"send_welcome",type:"xs:boolean",occurrence:null,description:'
optional if your double_optin is false and this is true, we will send your lists Welcome Email if this subscribe succeeds - this will *not* fire if we end up updating an existing subscriber. If double_optin is true, this has no effect. defaults to false.
'}],returns:{type:"item()*",description:"True on success, false on failure."},errors:[]},{isDocumented:!0,arity:9,name:"list-subscribe",qname:"mailchimp:list-subscribe",signature:"($apikey as xs:string, $id as xs:string, $email_address as xs:string, $merge_vars as element(array), $email_type as xs:string, $double_optin as xs:boolean, $update_existing as xs:boolean, $replace_interests as xs:boolean, $send_welcome as xs:boolean) as item()*",description:' Convenience function for list-subscribe#10.\n',summary:"

Convenience function for list-subscribe#10 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"email_address",type:"xs:string",occurrence:null,description:'
the email address to subscribe
'},{name:"merge_vars",type:"element(array)",occurrence:null,description:'
optional merges for the email (FNAME, LNAME, etc.) (see examples below for handling "blank" arrays). Note that a merge field can only hold up to 255 bytes. Also, there are a few "special" keys. See Mailchimp API documentation for more information about the parameter structure.
'},{name:"email_type",type:"xs:string",occurrence:null,description:'
optional email type preference for the email (html, text, or mobile defaults to html)
'},{name:"double_optin",type:"xs:boolean",occurrence:null,description:'
optional flag to control whether a double opt-in confirmation message is sent, defaults to true. Abusing this may cause your account to be suspended.
'},{name:"update_existing",type:"xs:boolean",occurrence:null,description:'
optional flag to control whether a existing subscribers should be updated instead of throwing and error, defaults to false
'},{name:"replace_interests",type:"xs:boolean",occurrence:null,description:'
optional flag to determine whether we replace the interest groups with the groups provided, or we add the provided groups to the member\'s interest groups (optional, defaults to true)
'},{name:"send_welcome",type:"xs:boolean",occurrence:null,description:'
optional if your double_optin is false and this is true, we will send your lists Welcome Email if this subscribe succeeds - this will *not* fire if we end up updating an existing subscriber. If double_optin is true, this has no effect. defaults to false.
'}],returns:{type:"item()*",description:"True on success, false on failure."},errors:[]},{isDocumented:!0,arity:6,name:"list-unsubscribe",qname:"mailchimp:list-unsubscribe",signature:"($apikey as xs:string, $id as xs:string, $email_address as xs:string, $delete_member as xs:boolean, $send_goodbye as xs:boolean, $send_notify as xs:boolean) as item()*",description:' Convenience function for list-unsubscribe#7.\n',summary:"

Convenience function for list-unsubscribe#7 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"email_address",type:"xs:string",occurrence:null,description:'
the email address to unsubscribe OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns
'},{name:"delete_member",type:"xs:boolean",occurrence:null,description:'
flag to completely delete the member from your list instead of just unsubscribing, default to false
'},{name:"send_goodbye",type:"xs:boolean",occurrence:null,description:'
flag to send the goodbye email to the email address, defaults to true
'},{name:"send_notify",type:"xs:boolean",occurrence:null,description:'
flag to send the unsubscribe notification email to the address defined in the list email notification settings, defaults to true
'}],returns:{type:"item()*",description:"True on success, false on failure."},errors:[]},{isDocumented:!0,arity:7,name:"list-unsubscribe",qname:"mailchimp:list-unsubscribe",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $email_address as xs:string, $delete_member as xs:boolean, $send_goodbye as xs:boolean, $send_notify as xs:boolean) as item()*",description:" Unsubscribe the given email address from the list.\n",summary:"

Unsubscribe the given email address from the list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"email_address",type:"xs:string",occurrence:null,description:'
the email address to unsubscribe OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns
'},{name:"delete_member",type:"xs:boolean",occurrence:null,description:'
flag to completely delete the member from your list instead of just unsubscribing, default to false
'},{name:"send_goodbye",type:"xs:boolean",occurrence:null,description:'
flag to send the goodbye email to the email address, defaults to true
'},{name:"send_notify",type:"xs:boolean",occurrence:null,description:'
flag to send the unsubscribe notification email to the address defined in the list email notification settings, defaults to true
'}],returns:{type:"item()*",description:"True on success, false on failure."},errors:[]},{isDocumented:!0,arity:6,name:"list-update-member",qname:"mailchimp:list-update-member",signature:"($apikey as xs:string, $id as xs:string, $email_address as xs:string, $merge_vars as element(array), $email_type as xs:string, $replace_interests as xs:boolean) as item()*",description:' Convenience function for list-update-member#7.\n',summary:"

Convenience function for list-update-member#7 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"email_address",type:"xs:string",occurrence:null,description:'
the current email address of the member to update OR the "id" for the member returned from listMemberInfo, Webhooks, and Campaigns
'},{name:"merge_vars",type:"element(array)",occurrence:null,description:'
array of new field values to update the member with. See merge_vars in list-subscribe() for details.
'},{name:"email_type",type:"xs:string",occurrence:null,description:'
change the email type preference for the member ("html", "text", or "mobile"). Leave blank to keep the existing preference (optional)
'},{name:"replace_interests",type:"xs:boolean",occurrence:null,description:'
flag to determine whether we replace the interest groups with the updated groups provided, or we add the provided groups to the member\'s interest groups (optional, defaults to true)
'}],returns:{type:"item()*",description:"True on success, false on failure."},errors:[]},{isDocumented:!0,arity:7,name:"list-update-member",qname:"mailchimp:list-update-member",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $email_address as xs:string, $merge_vars as element(array), $email_type as xs:string, $replace_interests as xs:boolean) as item()*",description:' Edit the email address, merge fields, and interest groups for a list member. If you are doing a batch update on lots of users, consider using #list-batch-subscribe() with the update_existing and possible replace_interests parameter.\n',summary:"

Edit the email address, merge fields, and interest groups for a list member.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"email_address",type:"xs:string",occurrence:null,description:'
the current email address of the member to update OR the "id" for the member returned from listMemberInfo, Webhooks, and Campaigns
'},{name:"merge_vars",type:"element(array)",occurrence:null,description:'
array of new field values to update the member with. See merge_vars in list-subscribe() for details.
'},{name:"email_type",type:"xs:string",occurrence:null,description:'
change the email type preference for the member ("html", "text", or "mobile"). Leave blank to keep the existing preference (optional)
'},{name:"replace_interests",type:"xs:boolean",occurrence:null,description:'
flag to determine whether we replace the interest groups with the updated groups provided, or we add the provided groups to the member\'s interest groups (optional, defaults to true)
'}],returns:{type:"item()*",description:"True on success, false on failure."},errors:[]},{isDocumented:!0,arity:5,name:"list-webhook-add",qname:"mailchimp:list-webhook-add",signature:"($apikey as xs:string, $id as xs:string, $url as xs:string, $actions as element(array), $sources as element(array)) as item()*",description:' Convenience function for list-webhook-add#6.\n',summary:"

Convenience function for list-webhook-add#6 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"url",type:"xs:string",occurrence:null,description:'
a valid URL for the Webhook - it will be validated. note that a url may only exist on a list once.
'},{name:"actions",type:"element(array)",occurrence:null,description:'
optional a hash of actions to fire this Webhook for
'},{name:"sources",type:"element(array)",occurrence:null,description:'
optional a hash of sources to fire this Webhook for
'}],returns:{type:"item()*",description:"True if the call succeeds, otherwise an exception will be thrown"},errors:[]},{isDocumented:!0,arity:6,name:"list-webhook-add",qname:"mailchimp:list-webhook-add",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $url as xs:string, $actions as element(array), $sources as element(array)) as item()*",description:" Add a new Webhook URL for the given list.\n",summary:"

Add a new Webhook URL for the given list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"url",type:"xs:string",occurrence:null,description:'
a valid URL for the Webhook - it will be validated. note that a url may only exist on a list once.
'},{name:"actions",type:"element(array)",occurrence:null,description:'
optional a hash of actions to fire this Webhook for
'},{name:"sources",type:"element(array)",occurrence:null,description:'
optional a hash of sources to fire this Webhook for
'}],returns:{type:"item()*",description:"True if the call succeeds, otherwise an exception will be thrown"},errors:[]},{isDocumented:!0,arity:3,name:"list-webhook-del",qname:"mailchimp:list-webhook-del",signature:"($apikey as xs:string, $id as xs:string, $url as xs:string) as item()*",description:' Convenience function for list-webhook-del#4.\n',summary:"

Convenience function for list-webhook-del#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"url",type:"xs:string",occurrence:null,description:'
the URL of a Webhook on this list
'}],returns:{type:"item()*",description:"True if the call succeeds, otherwise an exception will be thrown"},errors:[]},{isDocumented:!0,arity:4,name:"list-webhook-del",qname:"mailchimp:list-webhook-del",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string, $url as xs:string) as item()*",description:" Delete an existing Webhook URL from a given list.\n",summary:"

Delete an existing Webhook URL from a given list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'},{name:"url",type:"xs:string",occurrence:null,description:'
the URL of a Webhook on this list
'}],returns:{type:"item()*",description:"True if the call succeeds, otherwise an exception will be thrown"},errors:[]},{isDocumented:!0,arity:2,name:"list-webhooks",qname:"mailchimp:list-webhooks",signature:"($apikey as xs:string, $id as xs:string) as item()*",description:' Convenience function for list-webhooks#3.\n',summary:"

Convenience function for list-webhooks#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"List of webhooks"},errors:[]},{isDocumented:!0,arity:3,name:"list-webhooks",qname:"mailchimp:list-webhooks",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:string) as item()*",description:" Return the Webhooks configured for the given list.\n",summary:"

Return the Webhooks configured for the given list.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:string",occurrence:null,description:'
the list id to connect to. Get by calling lists()
'}],returns:{type:"item()*",description:"List of webhooks"},errors:[]},{isDocumented:!0,arity:2,name:"lists-for-email",qname:"mailchimp:lists-for-email",signature:"($apikey as xs:string, $email_address as xs:string) as item()*",description:' Convenience function for lists-for-email#3.\n',summary:"

Convenience function for lists-for-email#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"email_address",type:"xs:string",occurrence:null,description:'
the email address to check OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns
'}],returns:{type:"item()*",description:"An array of list_ids the member is subscribed to."},errors:[]},{isDocumented:!0,arity:3,name:"lists-for-email",qname:"mailchimp:lists-for-email",signature:"($endpoint-url as xs:string, $apikey as xs:string, $email_address as xs:string) as item()*",description:" Retrieve all List Ids a member is subscribed to.\n",summary:"

Retrieve all List Ids a member is subscribed to.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"email_address",type:"xs:string",occurrence:null,description:'
the email address to check OR the email "id" returned from listMemberInfo, Webhooks, and Campaigns
'}],returns:{type:"item()*",description:"An array of list_ids the member is subscribed to."},errors:[]},{isDocumented:!0,arity:4,name:"lists",qname:"mailchimp:lists",signature:"($apikey as xs:string, $filters as element(array), $start as xs:integer, $limit as xs:integer) as item()*",description:' Convenience function for lists#5.\n',summary:"

Convenience function for lists#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"filters",type:"element(array)",occurrence:null,description:'
a hash of filters to apply to this query - all are optional. See Mailchimp API documentation for more information about the parameter structure.
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional - control paging of lists, start results at this list #, defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional - control paging of lists, number of lists to return with each call, defaults to 25 (max=100)
'}],returns:{type:"item()*",description:"Array with keys listed in Returned Fields below"},errors:[]},{isDocumented:!0,arity:5,name:"lists",qname:"mailchimp:lists",signature:"($endpoint-url as xs:string, $apikey as xs:string, $filters as element(array), $start as xs:integer, $limit as xs:integer) as item()*",description:" Retrieve all of the lists defined for your user account.\n",summary:"

Retrieve all of the lists defined for your user account.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"filters",type:"element(array)",occurrence:null,description:'
a hash of filters to apply to this query - all are optional. See Mailchimp API documentation for more information about the parameter structure.
'},{name:"start",type:"xs:integer",occurrence:null,description:'
optional - control paging of lists, start results at this list #, defaults to 1st page of data (page 0)
'},{name:"limit",type:"xs:integer",occurrence:null,description:'
optional - control paging of lists, number of lists to return with each call, defaults to 25 (max=100)
'}],returns:{type:"item()*",description:"Array with keys listed in Returned Fields below"},errors:[]},{isDocumented:!0,arity:1,name:"ping",qname:"mailchimp:ping",signature:"($apikey as xs:string) as item()*",description:' Convenience function for ping#2.\n',summary:"

Convenience function for ping#2 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""}],returns:{type:"item()*",description:'Returns "Everything\'s Chimpy!" if everything is chimpy, otherwise returns an error message'},errors:[]},{isDocumented:!0,arity:2,name:"ping",qname:"mailchimp:ping",signature:"($endpoint-url as xs:string, $apikey as xs:string) as item()*",description:' "Ping" the MailChimp API - a simple method you can call that will return a constant value as long as everything is good. Note than unlike most all of our methods, we don\'t throw an Exception if we are having issues. You will simply receive a different string back that will explain our view on what is going on.\n',summary:'

"Ping" the MailChimp API - a simple method you can call that will return a constant value as long as everything is good.

',annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'}],returns:{type:"item()*",description:'Returns "Everything\'s Chimpy!" if everything is chimpy, otherwise returns an error message'},errors:[]},{isDocumented:!0,arity:3,name:"template-add",qname:"mailchimp:template-add",signature:"($apikey as xs:string, $name as xs:string, $html as xs:string) as item()*",description:' Convenience function for template-add#4.\n',summary:"

Convenience function for template-add#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"name",type:"xs:string",occurrence:null,description:'
the name for the template - names must be unique and a max of 50 bytes
'},{name:"html",type:"xs:string",occurrence:null,description:'
a string specifying the entire template to be created. This is NOT campaign content. They are intended to utilize our template language.
'}],returns:{type:"item()*",description:"The new template id, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:4,name:"template-add",qname:"mailchimp:template-add",signature:"($endpoint-url as xs:string, $apikey as xs:string, $name as xs:string, $html as xs:string) as item()*",description:' Create a new user template, NOT campaign content. These templates can then be applied while creating campaigns.\n',summary:"

Create a new user template, NOT campaign content.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"name",type:"xs:string",occurrence:null,description:'
the name for the template - names must be unique and a max of 50 bytes
'},{name:"html",type:"xs:string",occurrence:null,description:'
a string specifying the entire template to be created. This is NOT campaign content. They are intended to utilize our template language.
'}],returns:{type:"item()*",description:"The new template id, otherwise an error is thrown."},errors:[]},{isDocumented:!0,arity:2,name:"template-del",qname:"mailchimp:template-del",signature:"($apikey as xs:string, $id as xs:integer) as item()*",description:' Convenience function for template-del#3.\n',summary:"

Convenience function for template-del#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:integer",occurrence:null,description:'
the id of the user template to delete
'}],returns:{type:"item()*",description:"True if the template was deleted, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:3,name:"template-del",qname:"mailchimp:template-del",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:integer) as item()*",description:" Delete (deactivate) a user template.\n",summary:"

Delete (deactivate) a user template.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:integer",occurrence:null,description:'
the id of the user template to delete
'}],returns:{type:"item()*",description:"True if the template was deleted, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:3,name:"template-info",qname:"mailchimp:template-info",signature:"($apikey as xs:string, $tid as xs:integer, $type as xs:string) as item()*",description:' Convenience function for template-info#4.\n',summary:"

Convenience function for template-info#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"tid",type:"xs:integer",occurrence:null,description:'
the template id - get from templates()
'},{name:"type",type:"xs:string",occurrence:null,description:"
the template type to load - one of 'user', 'gallery', 'base'
"}],returns:{type:"item()*",description:"An array of info to be used when editing"},errors:[]},{isDocumented:!0,arity:4,name:"template-info",qname:"mailchimp:template-info",signature:"($endpoint-url as xs:string, $apikey as xs:string, $tid as xs:integer, $type as xs:string) as item()*",description:" Pull details for a specific template to help support editing.\n",summary:"

Pull details for a specific template to help support editing.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"tid",type:"xs:integer",occurrence:null,description:'
the template id - get from templates()
'},{name:"type",type:"xs:string",occurrence:null,description:"
the template type to load - one of 'user', 'gallery', 'base'
"}],returns:{type:"item()*",description:"An array of info to be used when editing"},errors:[]},{isDocumented:!0,arity:2,name:"template-undel",qname:"mailchimp:template-undel",signature:"($apikey as xs:string, $id as xs:integer) as item()*",description:' Convenience function for template-undel#3.\n',summary:"

Convenience function for template-undel#3 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:integer",occurrence:null,description:'
the id of the user template to reactivate
'}],returns:{type:"item()*",description:"boolean true if the template was deleted, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:3,name:"template-undel",qname:"mailchimp:template-undel",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:integer) as item()*",description:" Undelete (reactivate) a user template.\n",summary:"

Undelete (reactivate) a user template.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:integer",occurrence:null,description:'
the id of the user template to reactivate
'}],returns:{type:"item()*",description:"boolean true if the template was deleted, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:3,name:"template-update",qname:"mailchimp:template-update",signature:"($apikey as xs:string, $id as xs:integer, $values as element(array)) as item()*",description:' Convenience function for template-update#4.\n',summary:"

Convenience function for template-update#4 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"id",type:"xs:integer",occurrence:null,description:'
the id of the user template to update
'},{name:"values",type:"element(array)",occurrence:null,description:'
s the values to updates - while both are optional, at least one should be provided. Both can be updated at the same time.
'}],returns:{type:"item()*",description:"True if the template was updated, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:4,name:"template-update",qname:"mailchimp:template-update",signature:"($endpoint-url as xs:string, $apikey as xs:string, $id as xs:integer, $values as element(array)) as item()*",description:' Replace the content of a user template, NOT campaign content.\n',summary:"

Replace the content of a user template, NOT campaign content.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"id",type:"xs:integer",occurrence:null,description:'
the id of the user template to update
'},{name:"values",type:"element(array)",occurrence:null,description:'
s the values to updates - while both are optional, at least one should be provided. Both can be updated at the same time.
'}],returns:{type:"item()*",description:"True if the template was updated, otherwise an error will be thrown"},errors:[]},{isDocumented:!0,arity:4,name:"templates",qname:"mailchimp:templates",signature:"($apikey as xs:string, $types as element(array), $category as xs:string, $inactives as element(array)) as item()*",description:' Convenience function for templates#5.\n',summary:"

Convenience function for templates#5 .

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"apikey",type:"xs:string",occurrence:null,description:""},{name:"types",type:"element(array)",occurrence:null,description:'
optional the types of templates to return
'},{name:"category",type:"xs:string",occurrence:null,description:'
optional for Gallery templates only, limit to a specific template category
'},{name:"inactives",type:"element(array)",occurrence:null,description:'
optional options to control how inactive templates are returned, if at all
'}],returns:{type:"item()*",description:"An array of structs, one for each template (see Returned Fields for details)"},errors:[]},{isDocumented:!0,arity:5,name:"templates",qname:"mailchimp:templates",signature:"($endpoint-url as xs:string, $apikey as xs:string, $types as element(array), $category as xs:string, $inactives as element(array)) as item()*",description:' Retrieve various templates available in the system, allowing some thing similar to our template gallery to be created. boolean user Customer template for this user account. Defaults to true. boolean gallery Templates from our Gallery. Note that some templates that require extra configuration are withheld. (eg, the Etsy template). Defaults to false. boolean base Our "start from scratch" extremely basic templates boolean include user templates are not deleted, only set inactive. defaults to false. boolean only only include inactive templates. defaults to false.\n',summary:"

Retrieve various templates available in the system, allowing some thing similar to our template gallery to be created.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint-url",type:"xs:string",occurrence:null,description:'
Mailchimp endpoint URL, e.g. http://us1.api.mailchimp.com/1.3/
'},{name:"apikey",type:"xs:string",occurrence:null,description:'
a valid API Key for your user account. Get by visiting your API dashboard
'},{name:"types",type:"element(array)",occurrence:null,description:'
optional the types of templates to return
'},{name:"category",type:"xs:string",occurrence:null,description:'
optional for Gallery templates only, limit to a specific template category
'},{name:"inactives",type:"element(array)",occurrence:null,description:'
optional options to control how inactive templates are returned, if at all
'}],returns:{type:"item()*",description:"An array of structs, one for each template (see Returned Fields for details)"},errors:[]}],variables:[{name:"mailchimp:gateway",type:"item()*",description:" Mailchimp gateway where the client data is stored.\n"},{name:"mailchimp:version",type:"item()*",description:" Mailchimp API version.\n"},{name:"mailchimp:endpoint",type:"item()*",description:" Endpoint URL for the XML-RPC requests.\n"}]},"http://www.zorba-xquery.com/modules/couchbase":{ns:"http://www.zorba-xquery.com/modules/couchbase",description:" This module provides minimal functionality to interact with the\n Couchbase NoSQL database.\n The module is built using the libcouchbase C client library and\n exposes most of its functionality in XQuery with JSONiq extensions.\n Beyond just allowing for basic key-value store operations (e.g.\n put-/get-text or put-/get-binary, this module also allows to work\n with Couchbase views in order to allow for complex JSON query\n operations.\n",sees:[],authors:['Juan Zacarias'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.zorba-xquery.com/modules/couchbase",prefix:"cb"},{uri:"http://jsoniq.org/functions",prefix:"jn"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"connect",qname:"cb:connect",signature:"($options as object()) as xs:anyURI external",description:" Connect to the Couchbase server and return an opaque identifier\n representing the established connection.\n",summary:"

Connect to the Couchbase server and return an opaque identifier\n representing the established connection.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"options",type:"object()",occurrence:null,description:'
a JSONiq object that contains the host, bucket, and user information.
'}],returns:{type:"xs:anyURI",description:'an identifier for the established connection. Example: { "host": "localhost:8091", "username" : null, "password" : null, "bucket" : "default" } '},errors:['cb:LCB0001 if the connection to the given host/bucket could not be established.','cb:CB0001 if mandatory connection information is missing.','cb:CB0007 if a given option is not supported.']},{isDocumented:!0,arity:4,name:"connect",qname:"cb:connect",signature:"($host as xs:string, $username as xs:string?, $password as xs:string?, $bucket as xs:string) as xs:anyURI",description:" Connect to the Couchbase server and return an opaque identifier\n representing the established connection.\n",summary:"

Connect to the Couchbase server and return an opaque identifier\n representing the established connection.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"host",type:"xs:string",occurrence:null,description:'
address of the couchbase server (e.g. "localhost:8091")
'},{name:"username",type:"xs:string",occurrence:"?",description:'
username used for the connection
'},{name:"password",type:"xs:string",occurrence:"?",description:'
password used for the connection
'},{name:"bucket",type:"xs:string",occurrence:null,description:'
name of the bucket to use (e.g. "default")
'}],returns:{type:"xs:anyURI",description:"an identifier for the established connection."},errors:['cb:LCB0001 if the connection to the given host/bucket could not be established.']},{isDocumented:!0,arity:3,name:"create-view",qname:"cb:create-view",signature:"($db as xs:anyURI, $doc-name as xs:string, $view-names as xs:string*) as xs:string* external",description:" Create a document/view.\n If the document already exists, it is replaced. A document can hold several\n views that must be specified in the same call of cb:create-view.\n",summary:"

Create a document/view.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"doc-name",type:"xs:string",occurrence:null,description:'
name of the document to create.
'},{name:"view-names",type:"xs:string",occurrence:"*",description:'
names of the views to create in the document.
'}],returns:{type:"xs:string*",description:"the names of the paths for the views that have been created."},errors:['cb:LCB0002 if any error occurs in the communication with the server.']},{isDocumented:!0,arity:4,name:"create-view",qname:"cb:create-view",signature:"($db as xs:anyURI, $doc-name as xs:string, $view-names as xs:string*, $options as object()*) as xs:string* external",description:" Create a document/view.\n If the document already exists, it is replaced. A document can hold several\n views that must be specified in the same call of cb:create-view.\n",summary:"

Create a document/view.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"doc-name",type:"xs:string",occurrence:null,description:'
name of the document to create.
'},{name:"view-names",type:"xs:string",occurrence:"*",description:'
names of the views to create in the document.
'},{name:"options",type:"object()",occurrence:"*",description:'
options describing how to create the view.
'}],returns:{type:"xs:string*",description:"the names of the paths for the views that have been created."},errors:['cb:LCB0002 if any error occurs in the communication with the server.','cb:CB0005 if the number of options doesn\'t match the number of view-names.','cb:CB0007 if any of the options is not supported.','cb:CB0010 if any of the given options has an invalid type.']},{isDocumented:!0,arity:2,name:"delete-view",qname:"cb:delete-view",signature:"($db as xs:anyURI, $doc as xs:string*) as xs:string* external",description:" Delete a document/view.\n If the document doesn't exists, function does nothing. All the views hold in the\n Document are deleted, this function can't delete single views.\n",summary:"

Delete a document/view.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"doc",type:"xs:string",occurrence:"*",description:'
-name name of the document to create.
'}],returns:{type:"xs:string*",description:"empty sequence."},errors:['cb:LCB0002 if any error occurs in the communication with the server.']},{isDocumented:!0,arity:1,name:"flush",qname:"cb:flush",signature:"($db as xs:anyURI) as empty-sequence() external",description:" Remove all key/value pairs from the cluster\n",summary:"

Remove all key/value pairs from the cluster\n

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'}],returns:{type:"empty-sequence()",description:"a empty sequence."},errors:['cb:LCB0002 if any error occurs in the communication with the server.']},{isDocumented:!0,arity:2,name:"get-binary",qname:"cb:get-binary",signature:"($db as xs:anyURI, $key as xs:string*) as xs:base64Binary* external",description:" Return the values of the given keys (type xs:string) as base64Binary.\n",summary:"

Return the values of the given keys (type xs:string) as base64Binary.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"key",type:"xs:string",occurrence:"*",description:'
the requested keys
'}],returns:{type:"xs:base64Binary*",description:"a sequence of xs:base64Binary items for the given keys."},errors:['cb:LCB0002 if any error occurs in the communication with the server.']},{isDocumented:!0,arity:3,name:"get-binary",qname:"cb:get-binary",signature:"($db as xs:anyURI, $key as xs:string*, $options as object()) as xs:base64Binary* external",description:" Return the values of the given keys (type xs:string) as base64Binary.\n",summary:"

Return the values of the given keys (type xs:string) as base64Binary.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"key",type:"xs:string",occurrence:"*",description:'
the requested keys
'},{name:"options",type:"object()",occurrence:null,description:'
JSONiq object with additional options
'}],returns:{type:"xs:base64Binary*",description:"a sequence of xs:base64Binary items for the given keys."},errors:['cb:LCB0002 if any error occurs in the communication with the server.','cb:CB0007 if any of the options is not supported.','cb:CB0009 if the given expiration time is not an xs:integer.']},{isDocumented:!0,arity:2,name:"get-text",qname:"cb:get-text",signature:"($db as xs:anyURI, $key as xs:string*) as xs:string* external",description:" Return the values of the given keys (type xs:string) as string.\n",summary:"

Return the values of the given keys (type xs:string) as string.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"key",type:"xs:string",occurrence:"*",description:'
the requested keys
'}],returns:{type:"xs:string*",description:"A sequence of string Items corresponding to the key"},errors:['cb:LCB0002 if any error occurs in the communication with the server.']},{isDocumented:!0,arity:3,name:"get-text",qname:"cb:get-text",signature:"($db as xs:anyURI, $key as xs:string*, $options as object()) as xs:string* external",description:" Return the values of the given keys (type xs:string) as string.\n",summary:"

Return the values of the given keys (type xs:string) as string.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"key",type:"xs:string",occurrence:"*",description:'
the requested keys
'},{name:"options",type:"object()",occurrence:null,description:'
JSONiq object with additional options
'}],returns:{type:"xs:string*",description:"a sequence of strings for the given keys."},errors:['cb:LCB0002 if any error occurs in the communication with the server.','cb:CB0006 if the given encoding is not supported.','cb:CB0007 if any of the options is not supported.','cb:CB0009 if the given expiration time is not an xs:integer.']},{isDocumented:!0,arity:3,name:"put-binary",qname:"cb:put-binary",signature:"($db as xs:anyURI, $key as xs:string*, $value as xs:base64Binary*) as empty-sequence()",description:" Store the given key-value bindings.\n",summary:"

Store the given key-value bindings.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"key",type:"xs:string",occurrence:"*",description:'
the keys to store
'},{name:"value",type:"xs:base64Binary",occurrence:"*",description:'
the values (as xs:base64binary) to be stored.
'}],returns:{type:"empty-sequence()",description:"a empty sequence."},errors:['cb:LCB0002 if any error occurs in the communication with the server.','cb:CB0005 if the number of keys doesn\'t match the number of values.']},{isDocumented:!0,arity:4,name:"put-binary",qname:"cb:put-binary",signature:"($db as xs:anyURI, $key as xs:string*, $value as xs:base64Binary*, $options as object()) as empty-sequence() external",description:" Store the given key-value bindings.\n",summary:"

Store the given key-value bindings.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"key",type:"xs:string",occurrence:"*",description:'
the keys to store
'},{name:"value",type:"xs:base64Binary",occurrence:"*",description:'
the values (as xs:base64binary) to be stored.
'},{name:"options",type:"object()",occurrence:null,description:'
JSONiq object with additional options
'}],returns:{type:"empty-sequence()",description:"a empty sequence."},errors:['cb:LCB0002 if any error occurs in the communication with the server.','cb:CB0005 if the number of keys doesn\'t match the number of values.','cb:CB0007 if any of the options is not supported.','cb:CB0009 if the given expiration time is not an xs:integer.','cb:CB0011 if the stored Variable was not stored']},{isDocumented:!0,arity:3,name:"put-text",qname:"cb:put-text",signature:"($db as xs:anyURI, $key as xs:string*, $value as xs:string*) as empty-sequence()",description:" Store the given key-value bindings.\n The values are stored with the UTF-8 encoding and a default\n expiration time of 60 seconds.\n",summary:"

Store the given key-value bindings.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"key",type:"xs:string",occurrence:"*",description:'
the keys to store
'},{name:"value",type:"xs:string",occurrence:"*",description:'
the values (as xs:string) to be stored.
'}],returns:{type:"empty-sequence()",description:"a empty sequence."},errors:['cb:LCB0002 if any error occurs in the communication with the server.','cb:CB0005 if the number of keys doesn\'t match the number of values.']},{isDocumented:!0,arity:4,name:"put-text",qname:"cb:put-text",signature:"($db as xs:anyURI, $key as xs:string*, $value as xs:string*, $options as object()) as empty-sequence() external",description:" Store the given key-value bindings.\n",summary:"

Store the given key-value bindings.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"key",type:"xs:string",occurrence:"*",description:'
the keys to store
'},{name:"value",type:"xs:string",occurrence:"*",description:'
the values (as xs:string) to be stored.
'},{name:"options",type:"object()",occurrence:null,description:'
JSONiq object with additional options
'}],returns:{type:"empty-sequence()",description:"a empty sequence."},errors:['cb:LCB0002 if any error occurs in the communication with the server.','cb:CB0005 if the number of keys doesn\'t match the number of values.','cb:CB0006 if the given encoding is not supported.','cb:CB0007 if any of the options is not supported.','cb:CB0009 if the given expiration time is not an xs:integer.','cb:CB0011 if the stored Variable was not stored']},{isDocumented:!0,arity:2,name:"remove",qname:"cb:remove",signature:"($db as xs:anyURI, $key as xs:string*) as empty-sequence() external",description:" Remove the values matching the given keys (xs:string) from the server.\n",summary:"

Remove the values matching the given keys (xs:string) from the server.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"key",type:"xs:string",occurrence:"*",description:'
the keys of the values that should be removed.
'}],returns:{type:"empty-sequence()",description:"a empty sequence."},errors:['cb:LCB0002 if any error occurs in the communication with the server.']},{isDocumented:!0,arity:3,name:"touch",qname:"cb:touch",signature:"($db as xs:anyURI, $key as xs:string*, $exp-time as xs:integer) as empty-sequence() external",description:" Refresh the expiration time of the given keys.\n",summary:"

Refresh the expiration time of the given keys.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"key",type:"xs:string",occurrence:"*",description:'
the keys to touch
'},{name:"exp-time",type:"xs:integer",occurrence:null,description:'
new expieration time in seconds
'}],returns:{type:"empty-sequence()",description:"a empty sequence."},errors:['cb:LCB0002 if any error occurs in the communication with the server.']},{isDocumented:!0,arity:2,name:"view",qname:"cb:view",signature:"($db as xs:anyURI, $path as xs:string*) as object()*",description:" Retrieve the content of existing views.\n",summary:"

Retrieve the content of existing views.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"path",type:"xs:string",occurrence:"*",description:'
contains the string of a view path (e.g. "_design/test/_view/vies").
'}],returns:{type:"object()*",description:"a sequence of strings (as JSON) containing information of the views."},errors:['cb:LCB0002 if any error occurs in the communication with the server.']},{isDocumented:!0,arity:3,name:"view",qname:"cb:view",signature:"($db as xs:anyURI, $path as xs:string*, $options as object()) as object()*",description:" Retrieve the content of existing views.\n",summary:"

Retrieve the content of existing views.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"db",type:"xs:anyURI",occurrence:null,description:'
connection reference
'},{name:"path",type:"xs:string",occurrence:"*",description:'
contains the string of a view path (e.g. "_design/test/_view/vies").
'},{name:"options",type:"object()",occurrence:null,description:'
JSONiq object with additional options
'}],returns:{type:"object()*",description:"a sequence of strings (as JSON) containing information of the views."},errors:['cb:LCB0002 if any error occurs in the communication with the server.','cb:CB0007 if any of the options is not supported.']}],variables:[]},"http://zorba.io/modules/excel/text":{ns:"http://zorba.io/modules/excel/text",description:" This is a library module offering the same set of functions\n defined by Microsoft Excel, under Text and Data Functions.\n",sees:['Excel Documentation: Text Functions'],authors:['Sorin Nasoi'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/excel/errors",prefix:"excel-err"},{uri:"http://zorba.io/modules/excel/math",prefix:"excel-math"},{uri:"http://zorba.io/modules/excel/text",prefix:"excel-text"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"asc",qname:"excel-text:asc",signature:"($text as xs:string) as xs:string",description:" Returns the given $text unchanged.\n",summary:"

Returns the given $text unchanged.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"text",type:"xs:string",occurrence:null,description:'
the time
'}],returns:{type:"xs:string",description:"The given $text unchanged."},errors:[]},{isDocumented:!0,arity:1,name:"char",qname:"excel-text:char",signature:"($number as xs:integer) as xs:string",description:" Returns the character specified by a certain codepoint.\n",summary:"

Returns the character specified by a certain codepoint.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:integer",occurrence:null,description:'
the codepoint.
'}],returns:{type:"xs:string",description:"the character specified by a certain codepoint."},errors:['excel-err:Value provided $number must be in range [1,255].']},{isDocumented:!0,arity:1,name:"clean",qname:"excel-text:clean",signature:"($arg as xs:string?) as xs:string?",description:" Removes all nonprintable characters from text.\n",summary:"

Removes all nonprintable characters from text.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string.
'}],returns:{type:"xs:string?",description:'Removes all nonprintable characters from text. The CLEAN function was designed. to remove the first 32 nonprinting characters in the 7-bit ASCII code (values 0 through 31) from text.

In the Unicode character set, there are additional nonprinting characters (values 127, 129, 141, 143, 144, and 157).

By itself, the CLEAN function does not remove these additional nonprinting characters.'},errors:[]},{isDocumented:!0,arity:1,name:"code",qname:"excel-text:code",signature:"($arg as xs:string) as xs:integer",description:" Returns a codepoint for the first character in a text string.\n",summary:"

Returns a codepoint for the first character in a text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:null,description:'
the string.
'}],returns:{type:"xs:integer",description:"A codepoint for the first character in a text string."},errors:['excel-err:Value Provided $arg was empty.']},{isDocumented:!0,arity:1,name:"concatenate",qname:"excel-text:concatenate",signature:"($args as xs:anyAtomicType*) as xs:string",description:" Joins several text strings into one text string.\n",summary:"

Joins several text strings into one text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"args",type:"xs:anyAtomicType",occurrence:"*",description:'
a sequence of strings.
'}],returns:{type:"xs:string",description:"Joins several text strings into one text string."},errors:[]},{isDocumented:!0,arity:2,name:"concatenate",qname:"excel-text:concatenate",signature:"($arg1 as xs:anyAtomicType?, $arg2 as xs:anyAtomicType?) as xs:string",description:" Joins two text strings into one text string.\n",summary:"

Joins two text strings into one text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:anyAtomicType",occurrence:"?",description:'
the first string.
'},{name:"arg2",type:"xs:anyAtomicType",occurrence:"?",description:'
the second string.
'}],returns:{type:"xs:string",description:"Joins two text strings into one text string."},errors:[]},{isDocumented:!0,arity:1,name:"dollar",qname:"excel-text:dollar",signature:"($number as xs:decimal) as xs:string",description:" Converts a number to text format and applies a currency symbol. The number of\ndigits to the right of the decimal point is 2.\n",summary:"

Converts a number to text format and applies a currency symbol.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:decimal",occurrence:null,description:'
is the number.
'}],returns:{type:"xs:string",description:"Converts a number to text format and applies a currency symbol. The number of digits to the right of the decimal point is 2."},errors:[]},{isDocumented:!0,arity:2,name:"dollar",qname:"excel-text:dollar",signature:"($number as xs:decimal, $decimals as xs:decimal) as xs:string",description:" Converts a number to text format and applies a currency symbol.\n",summary:"

Converts a number to text format and applies a currency symbol.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:decimal",occurrence:null,description:'
is the number.
'},{name:"decimals",type:"xs:decimal",occurrence:null,description:'
is the number of digits to the right of the decimal point.

If decimals is negative, number is rounded to the left of the decimal point.

'}],returns:{type:"xs:string",description:"Converts a number to text format and applies a currency symbol."},errors:[]},{isDocumented:!0,arity:2,name:"exact",qname:"excel-text:exact",signature:"($arg1 as xs:string, $arg2 as xs:string) as xs:boolean",description:" Compares two text strings and returns TRUE if they are exactly the same,\nFALSE otherwise. EXACT is case-sensitive but ignores formatting differences.\n",summary:"

Compares two text strings and returns TRUE if they are exactly the same,\nFALSE otherwise.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:string",occurrence:null,description:'
the first string.
'},{name:"arg2",type:"xs:string",occurrence:null,description:'
the second string.
'}],returns:{type:"xs:boolean",description:"Compares two text strings and returns TRUE if they are exactly the same, FALSE otherwise. EXACT is case-sensitive but ignores formatting differences."},errors:[]},{isDocumented:!0,arity:2,name:"find",qname:"excel-text:find",signature:"($find_text as xs:string, $within_text as xs:string) as xs:integer?",description:' Locate one text string within a second text string, and return the number of the\n starting position of the first text string from the first character of the second text string.

\n The search is case sensitive.\n',summary:"

Locate one text string within a second text string, and return the number of the\n starting position of the first text string from the first character of the second text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"find_text",type:"xs:string",occurrence:null,description:'
text you want to find.
'},{name:"within_text",type:"xs:string",occurrence:null,description:'
text in which you want to search for $find_text.
'}],returns:{type:"xs:integer?",description:'Locate one text string within a second text string, and return the number of the starting position of the first text string from the first character of the second text string.

The search is case sensitive.'},errors:['excel-err:Value the value is not greater than zero or is greater than the length of within_text.','excel-err:Value value was not found.']},{isDocumented:!0,arity:3,name:"find",qname:"excel-text:find",signature:"($find_text as xs:string, $within_text as xs:string, $start_num as xs:integer) as xs:integer?",description:' Locate one text string within a second text string, and return the number of the\n starting position of the first text string from the first character of the second text string.

\n The search is case sensitive.\n',summary:"

Locate one text string within a second text string, and return the number of the\n starting position of the first text string from the first character of the second text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"find_text",type:"xs:string",occurrence:null,description:'
text you want to find.
'},{name:"within_text",type:"xs:string",occurrence:null,description:'
text in which you want to search for $find_text.
'},{name:"start_num",type:"xs:integer",occurrence:null,description:'
specifies the character at which to start the search.
'}],returns:{type:"xs:integer?",description:'Locate one text string within a second text string, and return the number of the starting position of the first text string from the first character of the second text string.

The search is case sensitive.'},errors:['excel-err:Value the value is not greater than zero or is greater than the length of within_text.','excel-err:Value value was not found.']},{isDocumented:!0,arity:2,name:"fixed",qname:"excel-text:fixed",signature:"($number as xs:decimal, $decimals as xs:decimal) as xs:string",description:" Rounds a number to the specified number of decimals, formats the number in\n decimal format using a period and commas, and returns the result as text.\n",summary:"

Rounds a number to the specified number of decimals, formats the number in\n decimal format using a period and commas, and returns the result as text.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:decimal",occurrence:null,description:'
is the number you want to round and convert to text.
'},{name:"decimals",type:"xs:decimal",occurrence:null,description:'
is the number of digits to the right of the decimal point.
'}],returns:{type:"xs:string",description:"Rounds a number to the specified number of decimals, formats the number in decimal format using a period and commas, and returns the result as text."},errors:[]},{isDocumented:!0,arity:3,name:"fixed",qname:"excel-text:fixed",signature:"($number as xs:decimal, $decimals as xs:decimal, $no_commas as xs:boolean) as xs:string",description:" Rounds a number to the specified number of decimals, formats the number in\ndecimal format using a period and commas, and returns the result as text.\n",summary:"

Rounds a number to the specified number of decimals, formats the number in\ndecimal format using a period and commas, and returns the result as text.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"number",type:"xs:decimal",occurrence:null,description:'
is the number you want to round and convert to text.
'},{name:"decimals",type:"xs:decimal",occurrence:null,description:'
is the number of digits to the right of the decimal point.
'},{name:"no_commas",type:"xs:boolean",occurrence:null,description:'
is a logical value that, if TRUE, prevents FIXED from including commas in the returned text.
'}],returns:{type:"xs:string",description:"Rounds a number to the specified number of decimals, formats the number in decimal format using a period and commas, and returns the result as text."},errors:[]},{isDocumented:!0,arity:1,name:"left",qname:"excel-text:left",signature:"($arg as xs:string) as xs:string",description:" Returns the first character in a text string.\n",summary:"

Returns the first character in a text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:null,description:'
is the text string that contains the characters you want to extract.
'}],returns:{type:"xs:string",description:"The first character in a text string."},errors:[]},{isDocumented:!0,arity:2,name:"left",qname:"excel-text:left",signature:"($text as xs:string, $num_chars as xs:integer) as xs:string",description:" Returns the first character or characters in $text, based on the number of $num_chars you specify.\n",summary:"

Returns the first character or characters in $text, based on the number of $num_chars you specify.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"text",type:"xs:string",occurrence:null,description:'
is the text string that contains the characters you want to extract.
'},{name:"num_chars",type:"xs:integer",occurrence:null,description:'
specifies the number of characters you want to extract.
'}],returns:{type:"xs:string",description:"The first character or characters in $text, based on the number of $num_chars you specify."},errors:[]},{isDocumented:!0,arity:1,name:"len",qname:"excel-text:len",signature:"($arg as xs:string?) as xs:integer",description:" Returns the number of characters in a text string.\n",summary:"

Returns the number of characters in a text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string.
'}],returns:{type:"xs:integer",description:"The number of characters in a text string."},errors:[]},{isDocumented:!0,arity:1,name:"lower",qname:"excel-text:lower",signature:"($arg as xs:string?) as xs:string?",description:" Converts all uppercase letters in a text string to lowercase.\n",summary:"

Converts all uppercase letters in a text string to lowercase.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string.
'}],returns:{type:"xs:string?",description:"Converts all uppercase letters in a text string to lowercase."},errors:[]},{isDocumented:!0,arity:3,name:"mid",qname:"excel-text:mid",signature:"($text as xs:string?, $start_num as xs:integer, $num_chars as xs:integer) as xs:string?",description:" Returns a specific number of characters from a text string, starting at\nthe position you specify, based on the number of characters you specify.\n",summary:"

Returns a specific number of characters from a text string, starting at\nthe position you specify, based on the number of characters you specify.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"text",type:"xs:string",occurrence:"?",description:'
the text string containing the characters you want to extract.
'},{name:"start_num",type:"xs:integer",occurrence:null,description:'
the position of the first character you want to extract in text. The first character in text has start_num 1, and so on.
'},{name:"num_chars",type:"xs:integer",occurrence:null,description:'
the number of characters you want to return from text.
'}],returns:{type:"xs:string?",description:"A specific number of characters from a text string, starting at the position you specify, based on the number of characters you specify."},errors:[]},{isDocumented:!0,arity:3,name:"pad-integer-to-length",qname:"excel-text:pad-integer-to-length",signature:"($toPad as xs:anyAtomicType?, $padChar as xs:string, $length as xs:integer) as xs:string",description:" Returns $toPad appended with enough repetitions of $padChar to make its length $length, the characters are added before the string.\n",summary:"

Returns $toPad appended with enough repetitions of $padChar to make its length $length, the characters are added before the string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"toPad",type:"xs:anyAtomicType",occurrence:"?",description:'
the value to be padded.
'},{name:"padChar",type:"xs:string",occurrence:null,description:'
the character used for padding.
'},{name:"length",type:"xs:integer",occurrence:null,description:'
the desired length.
'}],returns:{type:"xs:string",description:"$toPad appended with enough repetitions of $padChar to make its length $length, the characters are added before the string."},errors:['excel-err:Value if the length of the $toPad is greater than the desired length.']},{isDocumented:!0,arity:4,name:"replace",qname:"excel-text:replace",signature:"($old_text as xs:string?, $start_num as xs:integer, $num_chars as xs:integer, $new_text as xs:string) as xs:string",description:" Replaces part of a text string, based on the number of characters you specify, with a different text string.\n",summary:"

Replaces part of a text string, based on the number of characters you specify, with a different text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"old_text",type:"xs:string",occurrence:"?",description:'
is text in which you want to replace some characters.
'},{name:"start_num",type:"xs:integer",occurrence:null,description:'
the position of the character in old_text that you want to replace with new_text.
'},{name:"num_chars",type:"xs:integer",occurrence:null,description:'
the number of characters in old_text that you want REPLACE to replace with new_text.
'},{name:"new_text",type:"xs:string",occurrence:null,description:'
the text that will replace characters in old_text.
'}],returns:{type:"xs:string",description:"Replaces part of a text string, based on the number of characters you specify, with a different text string."},errors:[]},{isDocumented:!0,arity:1,name:"right",qname:"excel-text:right",signature:"($arg as xs:string) as xs:string",description:" Returns the last character in a text string.\n",summary:"

Returns the last character in a text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:null,description:'
the text string containing the characters you want to extract.
'}],returns:{type:"xs:string",description:"The last character in a text string."},errors:[]},{isDocumented:!0,arity:2,name:"right",qname:"excel-text:right",signature:"($text as xs:string, $num_chars as xs:integer) as xs:string",description:" Returns the last character or characters in a text string, based on the number of characters you specify.\n",summary:"

Returns the last character or characters in a text string, based on the number of characters you specify.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"text",type:"xs:string",occurrence:null,description:'
the text string containing the characters you want to extract.
'},{name:"num_chars",type:"xs:integer",occurrence:null,description:'
specifies the number of characters you want RIGHT to extract.
'}],returns:{type:"xs:string",description:"The last character or characters in a text string, based on the number of characters you specify."},errors:[]},{isDocumented:!0,arity:2,name:"search",qname:"excel-text:search",signature:"($find_text as xs:string, $within_text as xs:string) as xs:integer?",description:' Locate one text string within a second text string, and return the number of\n the starting position of the first text string from the first character of the\n second text string.

The search starts at position 1, and it is not case sensitive.\n',summary:"

Locate one text string within a second text string, and return the number of\n the starting position of the first text string from the first character of the\n second text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"find_text",type:"xs:string",occurrence:null,description:'
text you want to find.
'},{name:"within_text",type:"xs:string",occurrence:null,description:'
text in which you want to search for $find_text.
'}],returns:{type:"xs:integer?",description:'Locate one text string within a second text string, and return the number of the starting position of the first text string from the first character of the second text string.

The search starts at position 1, and it is not case sensitive.'},errors:['excel-err:Value the value is not greater than zero or is greater than the length of within_text.','excel-err:Value value was not found.']},{isDocumented:!0,arity:3,name:"search",qname:"excel-text:search",signature:"($find_text as xs:string, $within_text as xs:string, $start_num as xs:integer) as xs:integer?",description:' Locate one text string within a second text string, and return the number of\n the starting position of the first text string from the first character of the\n second text string.

The search starts at $start_num, and it is not case sensitive.\n',summary:"

Locate one text string within a second text string, and return the number of\n the starting position of the first text string from the first character of the\n second text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"find_text",type:"xs:string",occurrence:null,description:'
text you want to find.
'},{name:"within_text",type:"xs:string",occurrence:null,description:'
text in which you want to search for $find_text.
'},{name:"start_num",type:"xs:integer",occurrence:null,description:'
the character number in within_text at which you want to start searching.
'}],returns:{type:"xs:integer?",description:'Locate one text string within a second text string, and return the number of the starting position of the first text string from the first character of the second text string.

The search starts at $start_num, and it is not case sensitive.'},errors:['excel-err:Value the value is not greater than zero or is greater than the length of within_text.','excel-err:Value value was not found.']},{isDocumented:!0,arity:3,name:"substitute",qname:"excel-text:substitute",signature:"($text as xs:string, $old_text as xs:string, $new_text as xs:string) as xs:string?",description:" Substitutes new_text for old_text in a text string. Every occurrence of old_text in text is changed to new_text.\n",summary:"

Substitutes new_text for old_text in a text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"text",type:"xs:string",occurrence:null,description:'
the text or the reference to a cell containing text for which you want to substitute characters.
'},{name:"old_text",type:"xs:string",occurrence:null,description:'
text you want to replace.
'},{name:"new_text",type:"xs:string",occurrence:null,description:'
text you want to replace old_text with.
'}],returns:{type:"xs:string?",description:"Substitutes new_text for old_text in a text string. Every occurrence of old_text in text is changed to new_text."},errors:[]},{isDocumented:!0,arity:4,name:"substitute",qname:"excel-text:substitute",signature:"($text as xs:string, $old_text as xs:string, $new_text as xs:string, $instance_num as xs:integer?) as xs:string",description:" Substitutes new_text for old_text in a text string.\n",summary:"

Substitutes new_text for old_text in a text string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"text",type:"xs:string",occurrence:null,description:'
the text or the reference to a cell containing text for which you want to substitute characters.
'},{name:"old_text",type:"xs:string",occurrence:null,description:'
text you want to replace.
'},{name:"new_text",type:"xs:string",occurrence:null,description:'
text you want to replace old_text with.
'},{name:"instance_num",type:"xs:integer",occurrence:"?",description:'
specifies which occurrence of old_text you want to replace with new_text.

Only that instance of old_text is replaced.

'}],returns:{type:"xs:string",description:'Substitutes new_text for old_text in a text string.

Use SUBSTITUTE when you want to replace specific text in a text string; use REPLACE when you want to replace any text that occurs in a specific location in a text string.'},errors:[]},{isDocumented:!0,arity:1,name:"t",qname:"excel-text:t",signature:"($value as xs:anyAtomicType?) as xs:string",description:" Converts the $value to string.\n",summary:"

Converts the $value to string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the value
'}],returns:{type:"xs:string",description:"Converts the $value to string."},errors:[]},{isDocumented:!0,arity:1,name:"trim",qname:"excel-text:trim",signature:"($text as xs:string?) as xs:string?",description:" Removes all spaces from text except for single spaces between words.\n",summary:"

Removes all spaces from text except for single spaces between words.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"text",type:"xs:string",occurrence:"?",description:'
from which you want spaces removed.
'}],returns:{type:"xs:string?",description:"Removes all spaces from text except for single spaces between words."},errors:[]},{isDocumented:!0,arity:1,name:"upper",qname:"excel-text:upper",signature:"($text as xs:string?) as xs:string?",description:" Converts text to uppercase.\n",summary:"

Converts text to uppercase.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"text",type:"xs:string",occurrence:"?",description:'
text you want converted to uppercase.
'}],returns:{type:"xs:string?",description:"Converts text to uppercase."},errors:[]},{isDocumented:!0,arity:2,name:"value-except",qname:"excel-text:value-except",signature:"($arg1 as xs:anyAtomicType*, $arg2 as xs:anyAtomicType*) as xs:anyAtomicType*",description:" Returns the values in one sequence that do not appear in the second sequence in an implementation-defined order.\n",summary:"

Returns the values in one sequence that do not appear in the second sequence in an implementation-defined order.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:anyAtomicType",occurrence:"*",description:'
the first sequence.
'},{name:"arg2",type:"xs:anyAtomicType",occurrence:"*",description:'
the second sequence.
'}],returns:{type:"xs:anyAtomicType*",description:"The values in one sequence that do not appear in the second sequence in an implementation-defined order."},errors:[]},{isDocumented:!0,arity:1,name:"value",qname:"excel-text:value",signature:"($arg as xs:anyAtomicType?) as xs:anyAtomicType?",description:" Converts a text string that represents a number to a number.\n",summary:"

Converts a text string that represents a number to a number.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:"?",description:'
the value.
'}],returns:{type:"xs:anyAtomicType?",description:"Converts a text string that represents a number to a number."},errors:['excel-err:Value provided value is not a number.']}],variables:[]},"http://www.28msec.com/modules/http/response":{ns:"http://www.28msec.com/modules/http/response",description:' The Sausalito response module can be used to modify the HTTP response\n that will be send as a result of this request. For example, the\n set-content-type function can be used to set the Content-Type\n header and determine the encoding of data in the response.\n',sees:[],authors:['28msec'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.28msec.com/modules/http/response",prefix:"http"},{uri:"http://www.w3.org/2010/xslt-xquery-serialization",prefix:"output"},{uri:"http://www.28msec.com/modules/http/response",prefix:"resp"},{uri:"http://zorba.io/modules/schema",prefix:"s"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"code-for-status",qname:"resp:code-for-status",signature:"($status as xs:QName) as xs:int",description:" Convert between the HTTP status code as QName and\n the integer value of that status code.\n",summary:"

Convert between the HTTP status code as QName and\n the integer value of that status code.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"status",type:"xs:QName",occurrence:null,description:""}],returns:{type:"xs:int",description:"the integer value of the given QName as xs:int"},errors:['http:invalid-status if the given QName does not represent a valid http status code']},{isDocumented:!0,arity:1,name:"content-type-binary",qname:"resp:content-type-binary",signature:"($type as xs:string) as xs:boolean external",description:'

Test if a given content-type is a binary content-type. A\n content-type is considered to be binary if it\'s not a text\n content-type.

\n',summary:"

Test if a given content-type is a binary content-type.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is a binary content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-html",qname:"resp:content-type-html",signature:"($type as xs:string) as xs:boolean external",description:'

Test if a given content-type is a HTML content-type, i.e.\n the content-type is the string "text/html".

\n',summary:"

Test if a given content-type is a HTML content-type, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is the HTML content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-json",qname:"resp:content-type-json",signature:"($type as xs:string) as xs:boolean external",description:'

Test if a given content-type is a JSON content-type, i.e.\n the content-type is the string "application/json".

\n',summary:"

Test if a given content-type is a JSON content-type, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is the JSON content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-mixed-json-xml",qname:"resp:content-type-mixed-json-xml",signature:"($type as xs:string) as xs:boolean external",description:'

Test if a given content-type is a mixed JSON-XML content-type, i.e.\n the content-type is the string "application/mixed-json-xml".

\n',summary:"

Test if a given content-type is a mixed JSON-XML content-type, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is a mixed JSON-XML content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-text",qname:"resp:content-type-text",signature:"($type as xs:string) as xs:boolean external",description:'

Test if a given content-type is a text content-type.

\n

A text content-type starts with "text/" or contains either of\n the strings "xml" or "json".

\n',summary:"

Test if a given content-type is a text content-type.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is a text content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-xhtml",qname:"resp:content-type-xhtml",signature:"($type as xs:string) as xs:boolean external",description:'

Test if a given content-type is a XHTML content-type, i.e.\n the content-type is the string "application/xhtml+xml".

\n',summary:"

Test if a given content-type is a XHTML content-type, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is the XHTML content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-xml",qname:"resp:content-type-xml",signature:"($type as xs:string) as xs:boolean external",description:'

Test if a given content-type is a XML content-type

\n

A XML content-type is a content-type that is "application/xml"\n or ends : with the string "+xml".

\n',summary:'

Test if a given content-type is a XML content-type \n A XML content-type is a content-type that is "application/xml"\n or ends : with the string "+xml".

',annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is a XML content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:0,name:"decode-binary",qname:"resp:decode-binary",signature:"() as xs:boolean external",description:'

Returns the boolean indiciating whether base64Binaries returned by\n this request will be decoded.

\n

The default if not modified using resp:set-decode-binary is false.

\n',summary:"

Returns the boolean indiciating whether base64Binaries returned by\n this request will be decoded.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:"xs:boolean",description:"the said boolean value"},errors:[]},{isDocumented:!0,arity:1,name:"message-for-status",qname:"resp:message-for-status",signature:"($status as xs:QName) as xs:string",description:" Convert between the HTTP status code as QName and\n the name/message of that status code.\n",summary:"

Convert between the HTTP status code as QName and\n the name/message of that status code.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"status",type:"xs:QName",occurrence:null,description:""}],returns:{type:"xs:string",description:"the message of the given QName as xs:string"},errors:['http:invalid-status if the given QName does not represent a valid http status code']},{isDocumented:!0,arity:0,name:"serialization-parameters",qname:"resp:serialization-parameters",signature:"() as element(output:serialization-parameters)",description:'

Returns the serialization parameters that are currently\n active, i.e. the ones that will be used to serialize the result\n of this request.

\n

This will either be the default, the defaults set when\n calling resp:set-content-type(), or the ones set by\n resp:set-serialization-parameters().

\n',summary:"

Returns the serialization parameters that are currently\n active, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"element(output:serialization-parameters)",description:"the said serialization parameters"},errors:[]},{isDocumented:!0,arity:0,name:"serializer-defaults-html",qname:"resp:serializer-defaults-html",signature:"() as element(*)*",description:'

Returns an element that can be used to specify the\n settings of serialization parameters for the HTML serialization\n method.

\n

The defaults are\n

\n

\n

For example, those defaults are used when setting\n the content-type to some HTML content-type (i.e. text/html).

\n',summary:"

Returns an element that can be used to specify the\n settings of serialization parameters for the HTML serialization\n method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"element(*)*",description:"an element that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:0,name:"serializer-defaults-json-xml-hybrid",qname:"resp:serializer-defaults-json-xml-hybrid",signature:"() as element(output:serialization-parameters)",description:'

Returns an element that can be used to specify the\n settings of serialization parameters for the json-xml-hybrid\n serialization method.

\n

The defaults are\n

\n

\n

For example, those defaults are used when setting\n the content-type to application/mixed-json-xml.

\n',summary:"

Returns an element that can be used to specify the\n settings of serialization parameters for the json-xml-hybrid\n serialization method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"element(output:serialization-parameters)",description:"an element that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:0,name:"serializer-defaults-json",qname:"resp:serializer-defaults-json",signature:"() as element(output:serialization-parameters)",description:'

Returns an element that can be used to specify the\n settings of serialization parameters for the json\n serialization method.

\n

The defaults are\n

\n

\n

For example, those defaults are used when setting\n the content-type to some JSON content-type (e.g. application/json).

\n',summary:"

Returns an element that can be used to specify the\n settings of serialization parameters for the json\n serialization method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"element(output:serialization-parameters)",description:"an element that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:0,name:"serializer-defaults-text",qname:"resp:serializer-defaults-text",signature:"() as element(*)*",description:'

Returns an element that can be used to specify the\n settings of serialization parameters for the text serialization\n method.

\n

The only default used is\n

\n

\n

For example, this default is used when setting\n the content-type to some text content-type (e.g. text/plain).

\n',summary:"

Returns an element that can be used to specify the\n settings of serialization parameters for the text serialization\n method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"element(*)*",description:"an element that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:0,name:"serializer-defaults-xhtml",qname:"resp:serializer-defaults-xhtml",signature:"() as element(*)*",description:'

Returns an element that can be used to specify the\n settings of serialization parameters for the XHTML serialization\n method.

\n

The defaults are\n

\n

\n

For example, those defaults are used when setting\n the content-type to some XHTML content-type (i.e. application/xhtml+xml).

\n',summary:"

Returns an element that can be used to specify the\n settings of serialization parameters for the XHTML serialization\n method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"element(*)*",description:"an element that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:0,name:"serializer-defaults-xml",qname:"resp:serializer-defaults-xml",signature:"() as element(output:serialization-parameters)",description:'

Returns an element that can be used to specify the\n settings of serialization parameters for the XML serialization\n method.

\n

The defaults are\n

\n

\n

For example, those defaults are used when setting\n the content-type to some XML content-type (e.g. application/atom+xml).

\n',summary:"

Returns an element that can be used to specify the\n settings of serialization parameters for the XML serialization\n method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"element(output:serialization-parameters)",description:"an element that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:1,name:"set-content-type",qname:"resp:set-content-type",signature:"($type as xs:string) as empty-sequence()",description:'

Sets the Content-Type header for the response.

\n

\n For example,\n resp:set-content-type("text/plain") will cause the\n header\n Content-Type: text/plain to be added for the response.

\n

In addtion to setting the Content-Type header, the function also\n sets the serialization parameters to the default values for serialization\n method for the given content-type. For example, if the content-type is set to\n text/plain, the default serialization parameters for the text\n serialization method will be used. For application/atom+xml, the default\n serialization parameters for the XML serialization method will be used.

\n

The functions resp:content-type-text/xml/html/xhtml/binary may be used\n to figure out which serialization method will be used for a specific\n content-type.

\n

If the given content-type contains a charset declaration (e.g.\n resp:set-content-type("text/plain;charset=ISO-8859-1")), the\n content of the response will be transcoded to the given encoding.

\n

The default serialization parameters set by this function can\n be overwritten using the resp:set-serialization-parameters() function.

\n',summary:"

Sets the Content-Type header for the response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to be set
'}],returns:{type:"empty-sequence()",description:"the function is sequential and returns the empty sequence"},errors:['http:invalid-encoding if the given encoding is invalid or not supported.']},{isDocumented:!0,arity:2,name:"set-content-type",qname:"resp:set-content-type",signature:"($type as xs:string, $params as element(output:serialization-parameters)) as empty-sequence()",description:'

Sets the Content-Type header for the response.

\n

For example,\n resp:set-content-type("text/plain") will cause the\n header\n Content-Type: text/plain to be added for the response.

\n

In addition to the content-type, the function also allows to\n specify the serialization method and parameters that will be used\n for serializing the result. For details about this parameter, please\n refer to resp:set-serialization-parameters().

\n

If the given content-type contains a charset declaration (e.g.\n resp:set-content-type("text/plain;charset=ISO-8859-1")), the\n content of the response will be transcoded to the given encoding.\n If the serialization parameters also contain a charset declaration,\n the charset contained in the content-type will be used. to transcode\n the result.

\n',summary:"

Sets the Content-Type header for the response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to be set
'},{name:"params",type:"element(output:serialization-parameters)",occurrence:null,description:'
the serialization parameters that will be used for serialization the result.
'}],returns:{type:"empty-sequence()",description:"the function is sequential and returns the empty sequence"},errors:['http:invalid-encoding if the given encoding is invalid or not supported.']},{isDocumented:!0,arity:1,name:"set-decode-binary",qname:"resp:set-decode-binary",signature:"($decode as xs:boolean) as empty-sequence() external",description:'

If this function is invoked with true, the result of the request\n will not be serialized. Instead, the result will be the binary values\n of any item that is of type xs:base64Binary. The values of all other\n items will not be part of the result.

\n

Please note that all serialization parameters which have been set using\n resp:set-serialization-parameters will be ignored. Also, the output encoding\n is ignored for binaries.

\n',summary:"

If this function is invoked with true, the result of the request\n will not be serialized.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"decode",type:"xs:boolean",occurrence:null,description:'
boolean value indicating whether base64Binaries should be decoded.
'}],returns:{type:"empty-sequence()",description:"the function is sequential and returns the empty sequence."},errors:[]},{isDocumented:!0,arity:1,name:"set-encoding",qname:"resp:set-encoding",signature:"($encoding as xs:string) as empty-sequence() external",description:'

The function sets the output encoding that will be\n used for the payload of the response.

\n

For example,\n resp:set-encoding("ISO-8859-1") will cause the\n content in the response to be encoded using ISO-8859-1.

\n

Please note that the encoding only applies to textual data.\n It is not used if the function set-decode-binary()\n was invoked passing true as parameter.

\n',summary:"

The function sets the output encoding that will be\n used for the payload of the response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"encoding",type:"xs:string",occurrence:null,description:'
the encoding to be used for the payload of the response.
'}],returns:{type:"empty-sequence()",description:"the function is sequential and returns the empty sequence"},errors:['http:invalid-encoding if the given encoding is invalid or not supported.']},{isDocumented:!0,arity:2,name:"set-header-impl",qname:"resp:set-header-impl",signature:"($name as xs:string, $value as xs:string) as xs:string? external",description:'

Set an HTTP header in the response.

\n

This function is only used for internal purposes and should\n not be called by the user.

\n',summary:"

Set an HTTP header in the response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name for the header to set
'},{name:"value",type:"xs:string",occurrence:null,description:'
the value for the header to set
'}],returns:{type:"xs:string?",description:"the value of the header previously set or the empty sequence if no header has been set with the same name."},errors:[]},{isDocumented:!0,arity:2,name:"set-header",qname:"resp:set-header",signature:"($name as xs:string, $value as xs:string) as xs:string?",description:'

Set a HTTP header in the response.

\n

If a header with the same name was already set, the\n value is overwritten and the function returns the old value. As defined\n in the HTTP specification, multiple headers with the same name\n can be combined into one header whose value is a comma-separated\n list of the values.

\n

The following headers must not be set using this function.\n Instead, other functions of this module should be used in order\n to implemented the required semantics:\n

\n

\n',summary:"

Set a HTTP header in the response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the header to set
'},{name:"value",type:"xs:string",occurrence:null,description:'
the value of the header to set `
'}],returns:{type:"xs:string?",description:"the value of the header previously set or the empty sequence if no header has been set with the same name."},errors:['resp:invalid-header-name if an invalid name is used for the header.']},{isDocumented:!0,arity:1,name:"set-redirect",qname:"resp:set-redirect",signature:"($url as xs:string) as empty-sequence()",description:" This function sets the HTTP 302 redirect status code in the response. As\n a result, a redirect to the URL given as parameter will be made.\n",summary:"

This function sets the HTTP 302 redirect status code in the response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"url",type:"xs:string",occurrence:null,description:'
The URL to which the redirect will be made.
'}],returns:{type:"empty-sequence()",description:"The empty-sequence is returned."},errors:[]},{isDocumented:!0,arity:1,name:"set-serialization-parameters",qname:"resp:set-serialization-parameters",signature:"($params as element(output:serialization-parameters)) as empty-sequence()",description:'

Set the serialization parameters used for serializing the result\n of the request.

\n

The following example shows how to set several options\n for the HTML serialization method. Specifically, it sets the\n HTML method to HTML 4.01, set the doctype-system and\n doctype-public makes sure that the output is indented. In addition,\n the output is UTF-8 encoded and\n

\n <output:serialization-parameters>\n   <output:encoding value="UTF-8"/>\n   <output:doctype-system value="http://www.w3.org/TR/html4/loose.dtd"/>\n   <output:doctype-public value="-//W3C//DTD HTML 4.01 Transitional//EN"/>\n </output:serialization-parameters>\n 
\n

\n

The element passed as parameter need to be valid according\n to the schema http://www.w3.org/2010/xslt-xquery-serialization. This\n function validates its input (if it has not already been validated)\n and may raise an error if the input is not valid.

\n

Please note that serialization options set by this function can\n be overwritten by a subsequent call to resp:set-content-type. In this\n case, the options will be reset to the default for the given\n content-type. Also note, that the output encoding can be overwritten\n by subsequently calling the resp:set-encoding function.

\n',summary:"

Set the serialization parameters used for serializing the result\n of the request.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"params",type:"element(output:serialization-parameters)",occurrence:null,description:'
the serialization parameters that will be used to serialize the result of the request
'}],returns:{type:"empty-sequence()",description:"the function is sequential and, on success, returns the empty sequence."},errors:['err:XQDY0027 if the input is not valid according to the schema http://www.w3.org/2010/xslt-xquery-serialization.','http:invalid-encoding if the encoding specified in the serialization options is invalid or not supported.']},{isDocumented:!0,arity:1,name:"set-status-code",qname:"resp:set-status-code",signature:"($status as xs:integer) as empty-sequence() external",description:'

Sets the status code of the HTTP response to the integer given as\n parameter.

\n For example,\n resp:set-status(204)\n will result in "HTTP/1.1 204 No Content".\n',summary:"

Sets the status code of the HTTP response to the integer given as\n parameter.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"status",type:"xs:integer",occurrence:null,description:'
The status code of the HTTP response as integer.
'}],returns:{type:"empty-sequence()",description:"On success, the empty-sequence is returned"},errors:['http:invalid-status-code if the given integer does not reflect a valid HTTP status code']},{isDocumented:!0,arity:1,name:"set-status",qname:"resp:set-status",signature:"($status as xs:QName) as empty-sequence()",description:'

Sets the status code of the HTTP response to the QName given as\n parameter.

\n For example,\n resp:set-status($http:no-content)\n will result in "HTTP/1.1 204 No Content".\n',summary:"

Sets the status code of the HTTP response to the QName given as\n parameter.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"status",type:"xs:QName",occurrence:null,description:'
The status code of the HTTP response as a QName (e.g. $http:no-content)
'}],returns:{type:"empty-sequence()",description:"On success, the empty-sequence is returned"},errors:['http:invalid-status if the given QName does not represent a valid HTTP status code;']},{isDocumented:!0,arity:1,name:"valid-status",qname:"resp:valid-status",signature:"($status as xs:QName) as xs:boolean",description:" Test whether the given QName refers to a valid HTTP status code.\n",summary:"

Test whether the given QName refers to a valid HTTP status code.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"status",type:"xs:QName",occurrence:null,description:""}],returns:{type:"xs:boolean",description:"true if the given QName refers to a valid HTTP status code, false otherwise."},errors:[]}],variables:[{name:"http:precondition-required",type:"xs:QName",description:" QName representing the HTTP Status Code 428 Precondition Required (RFC 6585)\n"},{name:"http:gone",type:"xs:QName",description:" QName representing the HTTP Status Code 410 GONE\n"},{name:"http:length-required",type:"xs:QName",description:" QName representing the HTTP Status Code 411 Length Required\n"},{name:"http:precondition-failed",type:"xs:QName",description:" QName representing the HTTP Status Code 412 Precondition Failed\n"},{name:"http:request-entity-too-large",type:"xs:QName",description:" QName representing the HTTP Status Code 413 Request Entity Too Large\n"},{name:"http:request-entity-too-long",type:"xs:QName",description:" QName representing the HTTP Status Code 414 Request Entity Too Long\n"},{name:"http:unsupported-media-type",type:"xs:QName",description:" QName representing the HTTP Status Code 415 Unsupported Media Type\n"},{name:"http:request-range-not-satisfiable",type:"xs:QName",description:" QName representing the HTTP Status Code 416 Request Range Not Satisfiable\n"},{name:"http:expectation-failed",type:"xs:QName",description:" QName representing the HTTP Status Code 417 Expectation Failed\n"},{name:"http:im-a-teapot",type:"xs:QName",description:" QName representing the HTTP Status Code 418 I'm a teapot (RFC 2324)\n"},{name:"http:enhance-your-calm",type:"xs:QName",description:" QName representing the HTTP Status Code 420 Enhance Your Calm\n"},{name:"http:unprocessable-entity",type:"xs:QName",description:" QName representing the HTTP Status Code 422 Unprocessable Entity (WebDAV; RFC 4918)\n"},{name:"http:locked",type:"xs:QName",description:" QName representing the HTTP Status Code 423 Locked (WebDAV; RFC 4918)\n"},{name:"http:failed-dependency",type:"xs:QName",description:" QName representing the HTTP Status Code 424 Failed Dependency (WebDAV; RFC 4918)\n"},{name:"http:unordered-collection",type:"xs:QName",description:" QName representing the HTTP Status Code 425 Unordered Collection\n"},{name:"http:upgrade-required",type:"xs:QName",description:" QName representing the HTTP Status Code 426 Upgrade Required\n"},{name:"http:conflict",type:"xs:QName",description:" QName representing the HTTP Status Code 409 Conflict\n"},{name:"http:too-many-requests",type:"xs:QName",description:" QName representing the HTTP Status Code 429 Too Many Requests (RFC 6585)\n"},{name:"http:request-header-fields-too-large",type:"xs:QName",description:" QName representing the HTTP Status Code 431 Request Header Fields Too Large (RFC 6585)\n"},{name:"http:internal-server-error",type:"xs:QName",description:" QName representing the HTTP Status Code 500 Internal Server Error\n"},{name:"http:not-implemented",type:"xs:QName",description:" QName representing the HTTP Status Code 501 Not Implemented\n"},{name:"http:bad-gateway",type:"xs:QName",description:" QName representing the HTTP Status Code 502 Bad Gateway\n"},{name:"http:service-unavailable",type:"xs:QName",description:" QName representing the HTTP Status Code 503 Service Unavailable\n"},{name:"http:gateway-timeout",type:"xs:QName",description:" QName representing the HTTP Status Code 504 Gateway Timeout\n"},{name:"http:http-version-not-supported",type:"xs:QName",description:" QName representing the HTTP Status Code 505 HTTP Version Not Supported\n"},{name:"http:variant-also-negotiates",type:"xs:QName",description:" QName representing the HTTP Status Code 506 Variant Also Negotiates (RFC 2295)\n"},{name:"http:insufficient-storage",type:"xs:QName",description:" QName representing the HTTP Status Code 507 Insufficient Storage (WebDAV; RFC 4918)\n"},{name:"http:loop-detected",type:"xs:QName",description:" QName representing the HTTP status code 508 Loop Detected (webdav; rfc 5842)\n"},{name:"http:not-extended",type:"xs:QName",description:" QName representing the HTTP status code 510 Not Extended (RFC 2774)\n"},{name:"http:network-authentication-required",type:"xs:QName",description:" QName representing the HTTP status code 511 Network Authentication Required (RFC 6585)\n"},{name:"resp:status-info",type:"item()*",description:" Variable containing a description for all the HTTP Status Codes\n"},{name:"http:see-other",type:"xs:QName",description:" QName representing the HTTP Status Code 303 See Other\n"},{name:"http:switching-protocols",type:"xs:QName",description:" QName representing the HTTP Status Code 101 Switching Protocols\n"},{name:"http:processing",type:"xs:QName",description:" QName representing the HTTP Status Code 102 Processing (Web; RFC 2518)\n"},{name:"http:ok",type:"xs:QName",description:" QName representing the HTTP Status Code 200 OK\n"},{name:"http:created",type:"xs:QName",description:" QName representing the HTTP Status Code 201 Created\n"},{name:"http:accepted",type:"xs:QName",description:" QName representing the HTTP Status Code 202 Accepted\n"},{name:"http:non-authoritative",type:"xs:QName",description:" QName representing the HTTP Status Code 203 Non-Authoritative\n"},{name:"http:no-content",type:"xs:QName",description:" QName representing the HTTP Status Code 204 No Content\n"},{name:"http:reset-content",type:"xs:QName",description:" QName representing the HTTP Status Code 205 Reset Content\n"},{name:"http:partial-content",type:"xs:QName",description:" QName representing the HTTP Status Code 206 Partial Content\n"},{name:"http:multi-status",type:"xs:QName",description:" QName representing the HTTP Status Code 207 Multi-Status (WebDAV; RFC 5842)\n"},{name:"http:already-reported",type:"xs:QName",description:" QName representing the HTTP Status Code 208 Already Reported (WebDAV; RFC 5842)\n"},{name:"http:im-used",type:"xs:QName",description:" QName representing the HTTP Status Code 226 IM Used (RFC 3229)\n"},{name:"http:multiple-choices",type:"xs:QName",description:" QName representing the HTTP Status Code 300 Multiple Choices\n"},{name:"http:moved-permanently",type:"xs:QName",description:" QName representing the HTTP Status Code 301 Moved Permantently\n"},{name:"http:found",type:"xs:QName",description:" QName representing the HTTP Status Code 302 Found\n"},{name:"http:continue",type:"xs:QName",description:" QName representing the HTTP Status Code 100 Continue\n"},{name:"http:not-modified",type:"xs:QName",description:" QName representing the HTTP Status Code 304 Not Modified\n"},{name:"http:use-proxy",type:"xs:QName",description:" QName representing the HTTP Status Code 305 Use Proxy\n"},{name:"http:switch-proxy",type:"xs:QName",description:" QName representing the HTTP Status Code 306 Switch Proxy\n"},{name:"http:temporary-redirect",type:"xs:QName",description:" QName representing the HTTP Status Code 307 Temporary Redirect\n"},{name:"http:permanent-redirect",type:"xs:QName",description:" QName representing the HTTP Status Code 308 Permanent Redirect (http://tools.ietf.org/html/draft-reschke-http-status-308-07)\n"},{name:"http:bad-request",type:"xs:QName",description:" QName representing the HTTP Status Code 400 Bad Request\n"},{name:"http:unauthorized",type:"xs:QName",description:" QName representing the HTTP Status Code 401 Unauthorized\n"},{name:"http:payment-required",type:"xs:QName",description:" QName representing the HTTP Status Code 402 Payment Required\n"},{name:"http:forbidden",type:"xs:QName",description:" QName representing the HTTP Status Code 403 Forbidden\n"},{name:"http:not-found",type:"xs:QName",description:" QName representing the HTTP Status Code 404 Not Found\n"},{name:"http:not-allowed",type:"xs:QName",description:" QName representing the HTTP Status Code 405 Not Allowed\n"},{name:"http:not-acceptable",type:"xs:QName",description:" QName representing the HTTP Status Code 406 Not Acceptable\n"},{name:"http:proxy-authentication-required",type:"xs:QName",description:" QName representing the HTTP Status Code 407 Proxy Authentication Required\n"},{name:"http:request-timeout",type:"xs:QName",description:" QName representing the HTTP Status Code 408 Request Timeout\n"}]},"http://zorba.io/modules/uri":{ns:"http://zorba.io/modules/uri",description:" This module provides functions for processing URIs and URLs.\n",sees:[],authors:['Matthias Brantner, Luis Rodriguez Gonzalez'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/uri",prefix:"uri"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:1,name:"decode",qname:"uri:decode",signature:"($u as xs:string) as xs:string",description:" Percent-decodes (aka URL decoding) the given string.\n All percent encoded octets will be translated into their\n decoded UTF-8 representation.\n Please note that the percent encoding guarantees that a string\n consists of ASCII characters only. Passing a string that contains\n non-ASCII characters results in undefined behavior.\n",summary:"

Percent-decodes (aka URL decoding) the given string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"u",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:"the percent decoded string"},errors:[]},{isDocumented:!0,arity:2,name:"decode",qname:"uri:decode",signature:"($u as xs:string, $decode-plus as xs:boolean) as xs:string",description:" Percent-decodes (aka URL decoding) the given string.\n All percent encoded octets will be translated into their\n decoded UTF-8 representation.\n If $decode-plus is specified all occurrences of the char '+'\n will be replaced with a space ' ' before the percent decoding\n happens.\n Please note that the percent encoding guarantees that a string\n consists of ASCII characters only. Passing a string that contains\n non-ASCII characters results in undefined behavior.\n",summary:"

Percent-decodes (aka URL decoding) the given string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"u",type:"xs:string",occurrence:null,description:""},{name:"decode-plus",type:"xs:boolean",occurrence:null,description:"
whether '+' chars will be replaced with spaces
"}],returns:{type:"xs:string",description:"the percent decoded string"},errors:[]},{isDocumented:!0,arity:3,name:"decode",qname:"uri:decode",signature:"($s as xs:string, $decode-plus as xs:boolean, $charset as xs:string) as xs:string external",description:" Percent-decodes (aka URL decoding) the given string.\n All percent encoded octets will be translated into their\n decoded UTF-8 representation.\n If $decode-plus is specified all occurrences of the char '+'\n will be replaced with a space ' ' before the percent decoding\n happens.\n The $charset parameter specifies the source charset after precent\n decoding. It is used to convert the decoded string into UTF-8.\n Please note that the percent encoding guarantees that a string\n consists of ASCII characters only. Passing a string that contains\n non-ASCII characters results in undefined behavior.\n",summary:"

Percent-decodes (aka URL decoding) the given string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"xs:string",occurrence:null,description:'
the string to decode
'},{name:"decode-plus",type:"xs:boolean",occurrence:null,description:"
whether '+' chars will be replaced with spaces
"},{name:"charset",type:"xs:string",occurrence:null,description:'
the source charset of the string after percent decoding
'}],returns:{type:"xs:string",description:"the percent decoded string"},errors:['uri:CHARSET_UNKNOWN if the given charset is unknown or not supported','zerr:ZOSE0006 if there is an error transcoding the string']},{isDocumented:!0,arity:1,name:"parse",qname:"uri:parse",signature:"($uri as xs:string) as object() external",description:' Parses the URI passed as string. The returned object\n contains only members with field names declared as constants in\n this module.\n For example,\n
\n let my-uri := "http://www.my.project.com/a/b/c?user=john;pass=1234#profile"\n return uri:parse(my-uri)\n 
\n returns\n
\n { "squeme" : "http", "host" : "www.my.project.com", "path" : "/a/b/c",\n   "query" : "user=john;pass=123", "fragment" : "profile" }\n 
\n',summary:"

Parses the URI passed as string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:null,description:'
the URI to parse
'}],returns:{type:"object()",description:"the JSON object"},errors:['err:XQST0046 if the URI is textually invalid']},{isDocumented:!0,arity:1,name:"serialize",qname:"uri:serialize",signature:"($uri as object()) as xs:string external",description:" Serialize the URI passed as object into a string.\n",summary:"

Serialize the URI passed as object into a string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"object()",occurrence:null,description:'
the object representing the URI
'}],returns:{type:"xs:string",description:"the URI as string"},errors:['uri:OPAQUE_COMB_NOT_VALID if opaque part is specified in conjunction with host/port/path/user-info/query.','uri:OPAQUE_WITHOUT_SCHEME if opaque part is present but no scheme is present.','uri:INVALID_ABSOLUTE_PATH if a path component for an absolute URI doesn\'t start with "/".']}],variables:[{name:"uri:SCHEME",type:"xs:string",description:' Constant for the "scheme" part of a URI object.\n'},{name:"uri:AUTHORITY",type:"xs:string",description:' Constant for the "authority" part of a URI object.\n'},{name:"uri:USER-INFO",type:"xs:string",description:' Constant for the "user-info" part of a URI object.\n'},{name:"uri:HOST",type:"xs:string",description:' Constant for the "host" part of a URI object.\n'},{name:"uri:PORT",type:"xs:string",description:' Constant for the "port" part of a URI object.\n'},{name:"uri:PATH",type:"xs:string",description:' Constant for the "path" part of a URI object.\n'},{name:"uri:QUERY",type:"xs:string",description:' Constant for the "query" part of a URI object.\n'},{name:"uri:FRAGMENT",type:"xs:string",description:' Constant for the "fragment" part of a URI object.\n'},{name:"uri:OPAQUE-PART",type:"xs:string",description:' Constant for the "opaque-part" part of a URI object.\n If this is set in a URI object, then none of $uri:PATH, $uri:HOST,\n $uri:PORT, $uri:USER-INFO, or : $uri:QUERY may be specified.\n If this is set in a URI object, $uri:SCHEME must also be specified\n (ie, it must be an absolute URI).\n'}]},"http://xbrl.io/modules/bizql/profiles/sec/fiscal/core":{ns:"http://xbrl.io/modules/bizql/profiles/sec/fiscal/core",description:'

This module provides functionality for querying fiscal reports (10-K, 10-Q)\n submitted to the SEC.

\n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"http://xbrl.io/modules/bizql/archives",prefix:"archives"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/companies",prefix:"companies"},{uri:"http://xbrl.io/modules/bizql/components",prefix:"components"},{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://xbrl.io/modules/bizql/facts",prefix:"facts"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/filings",prefix:"filings"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/fiscal/core",prefix:"fiscal-core"},{uri:"http://jsoniq.org/function-library",prefix:"j"},{uri:"http://www.28msec.com/modules/mongodb",prefix:"mongo"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/core",prefix:"sec"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/networks",prefix:"sec-networks"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:3,name:"balance-sheets-for-fiscal-periods-and-years",qname:"fiscal-core:balance-sheets-for-fiscal-periods-and-years",signature:"($entity-or-ids as item()*, $fiscal-period-focus as string*, $fiscal-year-focus as integer*) as object()*",description:'

Retrieves the balance sheet for the given entities and fiscal periods and years.

\n',summary:"

Retrieves the balance sheet for the given entities and fiscal periods and years.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entity-or-ids",type:"item()",occurrence:"*",description:'
a list of entities or their EIDs.
'},{name:"fiscal-period-focus",type:"string",occurrence:"*",description:'
the periods (YTD1, YTD2, YTD3, Q1, Q2, Q3 or FY) or $fiscal-core:ALL_FISCAL_PERIODS to accept all.
'},{name:"fiscal-year-focus",type:"integer",occurrence:"*",description:'
the years (2012) or $fiscal-core:ALL_FISCAL_YEARS to accept all.
'}],returns:{type:"object()*",description:"the balance sheet at that date and for that formType."},errors:['entities:INVALID_PARAMETER if the CIK or entity is not valid.']},{isDocumented:!0,arity:3,name:"facts-for-aspects-and-fiscal-periods-and-years",qname:"fiscal-core:facts-for-aspects-and-fiscal-periods-and-years",signature:"($aspects as object()?, $fiscal-period-focus as string*, $fiscal-year-focus as integer*) as object()*",description:'

Retrieves facts for the given aspects, fiscal periods and years.

\n',summary:"

Retrieves facts for the given aspects, fiscal periods and years.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"aspects",type:"object()",occurrence:"?",description:'
an object containing aspects to filter, among which xbrl:Concept, xbrl:Entity and xbrl:Period (all optional).
'},{name:"fiscal-period-focus",type:"string",occurrence:"*",description:'
the periods (YTD1, YTD2, YTD3, Q1, Q2, Q3 or FY).
'},{name:"fiscal-year-focus",type:"integer",occurrence:"*",description:'
the years (2012)
'}],returns:{type:"object()*",description:"all facts matching the given aspects, fiscal period and year."},errors:[]},{isDocumented:!0,arity:4,name:"facts-for-aspects-and-fiscal-periods-and-years",qname:"fiscal-core:facts-for-aspects-and-fiscal-periods-and-years",signature:"($aspects as object()?, $fiscal-period-focus as string*, $fiscal-year-focus as integer*, $options as object()?) as object()*",description:'

Retrieves facts for the given aspects, fiscal periods and years.

\n',summary:"

Retrieves facts for the given aspects, fiscal periods and years.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"aspects",type:"object()",occurrence:"?",description:'
an object containing aspects to filter, among which xbrl:Concept, xbrl:Entity and xbrl:Period (all optional).
'},{name:"fiscal-period-focus",type:"string",occurrence:"*",description:'
the periods (YTD1, YTD2, YTD3, Q1, Q2, Q3 or FY) or $fiscal-core:ALL_FISCAL_PERIODS to accept all.
'},{name:"fiscal-year-focus",type:"integer",occurrence:"*",description:'
the years (2012) or $fiscal-core:ALL_FISCAL_YEARS to accept all.
'},{name:"options",type:"object()",occurrence:"?",description:'
standard SEC BizQL options.
'}],returns:{type:"object()*",description:"all facts matching the given aspects, fiscal period and year."},errors:[]},{isDocumented:!0,arity:4,name:"facts-for-entities-and-concepts-and-fiscal-periods-and-years",qname:"fiscal-core:facts-for-entities-and-concepts-and-fiscal-periods-and-years",signature:"($entities-or-ids as item()*, $concepts as string*, $fiscal-period-focus as string*, $fiscal-year-focus as integer*) as object()*",description:'

Retrieves facts for the given entities, concepts, fiscal periods and years.

\n',summary:"

Retrieves facts for the given entities, concepts, fiscal periods and years.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entities-or-ids",type:"item()",occurrence:"*",description:'
a list of entities or their EIDs.
'},{name:"concepts",type:"string",occurrence:"*",description:'
a list of concept names (us-gaap:Assets)
'},{name:"fiscal-period-focus",type:"string",occurrence:"*",description:'
the periods (YTD1, YTD2, YTD3, Q1, Q2, Q3 or FY) or $fiscal-core:ALL_FISCAL_PERIODS to accept all.
'},{name:"fiscal-year-focus",type:"integer",occurrence:"*",description:'
the years (2012) or $fiscal-core:ALL_FISCAL_YEARS to accept all.
'}],returns:{type:"object()*",description:"all facts matching entities, concepts, fiscal periods and years"},errors:['entities:INVALID_PARAMETER if the CIK or entity is not valid.']},{isDocumented:!0,arity:5,name:"facts-for-entities-and-concepts-and-fiscal-periods-and-years",qname:"fiscal-core:facts-for-entities-and-concepts-and-fiscal-periods-and-years",signature:"($entities-or-ids as item()*, $concepts as string*, $fiscal-period-focus as string*, $fiscal-year-focus as integer*, $options as object()?) as object()*",description:'

Retrieves facts for the given entities, concepts, fiscal periods and years.

\n',summary:"

Retrieves facts for the given entities, concepts, fiscal periods and years.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entities-or-ids",type:"item()",occurrence:"*",description:'
a list of entities or their EIDs.
'},{name:"concepts",type:"string",occurrence:"*",description:'
a list of concept names (us-gaap:Assets)
'},{name:"fiscal-period-focus",type:"string",occurrence:"*",description:'
the periods (YTD1, YTD2, YTD3, Q1, Q2, Q3 or FY) or $fiscal-core:ALL_FISCAL_PERIODS to accept all.
'},{name:"fiscal-year-focus",type:"integer",occurrence:"*",description:'
the years (2012) or $fiscal-core:ALL_FISCAL_YEARS to accept all.
'},{name:"options",type:"object()",occurrence:"?",description:'
standard SEC BizQL options.
'}],returns:{type:"object()*",description:"all facts matching entities, concepts, fiscal periods and years"},errors:['entities:INVALID_PARAMETER if the CIK or entity is not valid.']},{isDocumented:!0,arity:3,name:"filings-for-entities-and-fiscal-periods-and-years",qname:"fiscal-core:filings-for-entities-and-fiscal-periods-and-years",signature:"($entities-or-ids as item()*, $fiscal-period-focus as string*, $fiscal-year-focus as integer*) as object()*",description:'

Retrieves all filings by entities and for given fiscal periods and years.

\n',summary:"

Retrieves all filings by entities and for given fiscal periods and years.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entities-or-ids",type:"item()",occurrence:"*",description:'
entities or their ids.
'},{name:"fiscal-period-focus",type:"string",occurrence:"*",description:'
fiscal periods (FY, YTD1, YTD2, YTD3, Q1, Q2, Q3, Q4) or $fiscal-core:ALL_FISCAL_PERIODS to accept all..
'},{name:"fiscal-year-focus",type:"integer",occurrence:"*",description:'
fiscal years or $fiscal-core:ALL_FISCAL_YEARS to accept all..
'}],returns:{type:"object()*",description:"all filings that match the criteria."},errors:[]},{isDocumented:!0,arity:1,name:"fiscal-period",qname:"fiscal-core:fiscal-period",signature:"($filing-fact-or-id as item()?) as string?",description:'

Retrieves the fiscal period of a filing or a fact.

\n',summary:"

Retrieves the fiscal period of a filing or a fact.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filing-fact-or-id",type:"item()",occurrence:"?",description:'
a filing, a fact, or its id.
'}],returns:{type:"string?",description:"the fiscal period (FY, YTD2, YTD3, Q1, Q2 or Q3)."},errors:[]},{isDocumented:!0,arity:1,name:"fiscal-year",qname:"fiscal-core:fiscal-year",signature:"($filing-fact-or-id as item()?) as integer?",description:'

Retrieves the fiscal year of a filing or a fact.

\n',summary:"

Retrieves the fiscal year of a filing or a fact.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filing-fact-or-id",type:"item()",occurrence:"?",description:'
a filing, a fact, or its id.
'}],returns:{type:"integer?",description:"the fiscal year (e.g., 2012)."},errors:[]},{isDocumented:!0,arity:1,name:"latest-reported-fiscal-period",qname:"fiscal-core:latest-reported-fiscal-period",signature:"($entity-or-id as item()) as object()*",description:'

Retrieves the latest reported fiscal period and year for the\n supplied entity.

\n',summary:"

Retrieves the latest reported fiscal period and year for the\n supplied entity.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entity-or-id",type:"item()",occurrence:null,description:'
an entity or its EID.
'}],returns:{type:"object()*",description:"an object with two fields: period and year."},errors:[]},{isDocumented:!0,arity:2,name:"latest-reported-fiscal-period",qname:"fiscal-core:latest-reported-fiscal-period",signature:"($entity-or-id as item(), $type as string) as object()*",description:'

Retrieves the latest fiscal period and year for the\n supplied entity.

\n',summary:"

Retrieves the latest fiscal period and year for the\n supplied entity.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entity-or-id",type:"item()",occurrence:null,description:'
an entity or its EID.
'},{name:"type",type:"string",occurrence:null,description:'
10-K or 10-Q or FY, YTD1, YTD2, YTD3, Q1, Q2, or Q3.
'}],returns:{type:"object()*",description:"an object with two fields: period and year."},errors:[]}],variables:[{name:"fiscal-core:ALL_FISCAL_PERIODS",type:"string",description:" Joker for all fiscal periods.\n"},{name:"fiscal-core:ALL_FISCAL_YEARS",type:"integer",description:" Joker for all fiscal years.\n"}]},"http://zorba.io/modules/base64":{ns:"http://zorba.io/modules/base64",description:'

Base64 encoding and decoding.

\n',sees:[],authors:['Matthias Brantner'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/base64",prefix:"base64"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:1,name:"decode",qname:"base64:decode",signature:"($base64 as base64Binary) as string external",description:'

Decode a base64Binary.

\n

The function assumes that the content after decoding is valid\n UTF-8.

\n',summary:"

Decode a base64Binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"base64",type:"base64Binary",occurrence:null,description:'
The base64Binary item to decode
'}],returns:{type:"string",description:"the base64-decoded value as string"},errors:['zerr:ZOSE0006 if $base64 contains invalid base-64 data.']},{isDocumented:!0,arity:2,name:"decode",qname:"base64:decode",signature:"($base64 as base64Binary, $encoding as string) as string external",description:'

Decode a base64Binary.

\n

The function assumes that the content after decoding has\n the given encoding.

\n',summary:"

Decode a base64Binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"base64",type:"base64Binary",occurrence:null,description:'
The base64Binary item to decode
'},{name:"encoding",type:"string",occurrence:null,description:'
The encoding of the string after base64-decoding it. The encoding parameter is case insensitive.
'}],returns:{type:"string",description:"the base64-decoded value as a string"},errors:['zerr:ZXQP0006 if the given encoding is invalid or not supported. "ASCII" and "UTF-8" are guaranteed to be supported; other encodings may be supported depending on the installation.','zerr:ZOSE0006 if $base64 contains invalid base-64 data.']},{isDocumented:!0,arity:1,name:"encode",qname:"base64:encode",signature:"($string as string) as base64Binary external",description:'

Encode a string as base64Binary.

\n',summary:"

Encode a string as base64Binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"string",type:"string",occurrence:null,description:'
The item whose string-value should be encoded
'}],returns:{type:"base64Binary",description:"the base64-encoded string-value of the item parameter"},errors:[]}],variables:[]},"http://xbrl.io/modules/bizql/networks":{ns:"http://xbrl.io/modules/bizql/networks",description:'

This module provides functionality for handling networks.

\n

A network is a graph of concepts and resources, of which the edges\n share the same semantics.

\n

There are several kinds of networks.\n A network can be a tree or a DAG of concepts. It can be a bipartite\n graph mapping concepts to resources.

\n

XBRL defines a number of standard networks: presentation, calculation,\n definition (essence-alias, general-special, requires-element, similar-tuples, domain-member),\n and label networks.

\n

With this module, you can retrieve the networks contained in a component, and you\n can retrieve a standard XBRL network with the provided short names.

\n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"http://xbrl.io/modules/bizql/components",prefix:"components"},{uri:"http://xbrl.io/modules/bizql/networks",prefix:"networks"}],functions:[{isDocumented:!0,arity:2,name:"networks-for-components-and-short-names",qname:"networks:networks-for-components-and-short-names",signature:"($components as item()*, $short-name as string*) as object()*",description:'

Retrieves the standardized networks in the supplied components with the given short names.

\n',summary:"

Retrieves the standardized networks in the supplied components with the given short names.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"components",type:"item()",occurrence:"*",description:'
a sequence of components.
'},{name:"short-name",type:"string",occurrence:"*",description:'
the short names of the networks.
'}],returns:{type:"object()*",description:"the standardized networks with these short names."},errors:[]},{isDocumented:!0,arity:1,name:"networks-for-components",qname:"networks:networks-for-components",signature:"($components as item()*) as object()*",description:'

Retrieves all networks in the supplied components.

\n',summary:"

Retrieves all networks in the supplied components.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"components",type:"item()",occurrence:"*",description:'
a sequence of components.
'}],returns:{type:"object()*",description:"all networks."},errors:[]}],variables:[{name:"networks:PRESENTATION_NETWORK",type:"xs:string",description:" Short name of the presentation network.\n"},{name:"networks:CALCULATION_NETWORK",type:"xs:string",description:" Short name of the calculation network.\n"},{name:"networks:ESSENCE_ALIAS_NETWORK",type:"xs:string",description:" Short name of the essence-alias definition network.\n"},{name:"networks:GENERAL_SPECIAL_NETWORK",type:"xs:string",description:" Short name of the general-special definition network.\n"},{name:"networks:REQUIRES_ELEMENT_NETWORK",type:"xs:string",description:" Short name of the requires-element definition network.\n"},{name:"networks:SIMILAR_TUPLES_NETWORK",type:"xs:string",description:" Short name of the similar-tuples definition network.\n"},{name:"networks:DOMAIN_MEMBER_NETWORK",type:"xs:string",description:" Short name of the domain-member definition network.\n"}]},"http://jsound.io/modules/validate/map":{ns:"http://jsound.io/modules/validate/map",description:" Map utility\n",sees:[],authors:['Chris Hillery, Cezar Andrei'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://jsound.io/modules/validate/map",prefix:"map"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"get",qname:"map:get",signature:"($map as object(), $key as string) as item()",description:" Returns the value under the key.\n",summary:"

Returns the value under the key.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"map",type:"object()",occurrence:null,description:'
the map JSON object
'},{name:"key",type:"string",occurrence:null,description:'
the key
'}],returns:{type:"item()",description:"the value under the $key, () if empty Example:"},errors:[]},{isDocumented:!0,arity:2,name:"has-key",qname:"map:has-key",signature:"($map as object(), $key as string) as boolean",description:" Returns true if $key exists in the map.\n",summary:"

Returns true if $key exists in the map.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"map",type:"object()",occurrence:null,description:'
the map JSON object
'},{name:"key",type:"string",occurrence:null,description:'
the key
'}],returns:{type:"boolean",description:"true if $key exists, false otherwise Example:"},errors:[]},{isDocumented:!0,arity:3,name:"set-if-empty",qname:"map:set-if-empty",signature:"($map as object(), $key as xs:string, $value as item()) as boolean",description:" Only if key doesn't exist, inserts new key and value into the map and\n returns true. Otherwise returns false.\n",summary:"

Only if key doesn't exist, inserts new key and value into the map and\n returns true.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"map",type:"object()",occurrence:null,description:'
the map JSON object
'},{name:"key",type:"xs:string",occurrence:null,description:'
the key
'},{name:"value",type:"item()",occurrence:null,description:'
the value
'}],returns:{type:"boolean",description:"true if $key is empty, false otherwise Example:"},errors:[]},{isDocumented:!0,arity:3,name:"set",qname:"map:set",signature:"($map as object(), $key as xs:string, $value as item()) as boolean",description:" Inserts new key and value into the map or replaces value under the exiting key.\n Returns true all the time.\n",summary:"

Inserts new key and value into the map or replaces value under the exiting key.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"map",type:"object()",occurrence:null,description:'
the map JSON object
'},{name:"key",type:"xs:string",occurrence:null,description:'
the key
'},{name:"value",type:"item()",occurrence:null,description:'
the value
'}],returns:{type:"boolean",description:"true Example:"},errors:[]}],variables:[]},"http://zorba.io/modules/xml":{ns:"http://zorba.io/modules/xml",description:'

\n This module provides functions for reading XML files from string inputs.\n It allows reading of well-formed XML documents as well as well-formed\n external parsed entities, described by\n XML 1.0 Well-Formed\n Parsed Entities. The functions can also perform Schema and DTD\n validation of the input documents.\n

\n

The following example parses a sequence of XML elements and returns\n them in a streaming fashion - each at a time:

\n
\n import module namespace x = "http://zorba.io/modules/xml";\n import schema namespace opt = "http://zorba.io/modules/xml-options";\n x:parse(\n   "<from1>Jani</from1><from2>Jani</from2><from3>Jani</from3>",\n   <opt:options>\n     <opt:parse-external-parsed-entity/>\n   </opt:options>\n )\n 
\n

Another useful option allows to skip an arbitrary number of levels\n before returning a sequence of nodes as shown in the following example:

\n
\n import module namespace x = "http://zorba.io/modules/xml";\n import schema namespace opt = "http://zorba.io/modules/xml-options";\n x:parse(\n   "<root>\n     <from1>Jani1</from1>\n     <from2>Jani2</from2>\n     <from3>Jani3</from3>\n   </root>",\n   <opt:options>\n     <opt:parse-external-parsed-entity opt:skip-root-nodes="1"/>\n   </opt:options>\n )\n 
\n',sees:['XML 1.0 Well-Formed Parsed Entities',' fn:parse-xml() function in XPath and XQuery Functions and Operators 3.0','LibXml2 parser'],authors:['Nicolae Brinza, Juan Zacarias'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/xqt-errors",prefix:"err"},{uri:"http://zorba.io/modules/xml-options",prefix:"opt"},{uri:"http://zorba.io/modules/schema",prefix:"schema"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/modules/xml",prefix:"x"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:1,name:"canonicalize",qname:"x:canonicalize",signature:"($xml-string as xs:string) as xs:string",description:'

A function to canonicalize the given XML string, that is, transform\n it into Canonical XML as defined by Canonical XML.

\n

Note: This function is not streamable. If a streamable string is used\n as input for the function it will be materialized.

\n

Note: This function sets the\n XML_PARSE_NOERROR\n option when parsing the XML input.

\n',summary:"

A function to canonicalize the given XML string, that is, transform\n it into Canonical XML as defined by Canonical XML .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"xml-string",type:"xs:string",occurrence:null,description:'
a string representation of a well formed XML to canonicalize. XML fragments are not allowed.
'}],returns:{type:"xs:string",description:"the canonicalized XML string."},errors:['err:CANO0001 invalid input.']},{isDocumented:!0,arity:2,name:"canonicalize",qname:"x:canonicalize",signature:"($xml-string as xs:string, $options as element(opt:options)) as xs:string",description:'

A function to canonicalize the given XML string, that is, transform\n it into Canonical XML as defined by Canonical XML.

\n

This version of the function allows specifying certain options to be\n used when initially parsing the XML string. These are of the same form\n as the options to x:parse#2(), although the following options are\n currently ignored for this function:\n

\n

\n

Note: This function is not streamable, if a streamable string is used\n as input for the function it will be materialized.

\n

Note: This function sets the\n XML_PARSE_NOERROR\n option when parsing the XML input.

\n',summary:"

A function to canonicalize the given XML string, that is, transform\n it into Canonical XML as defined by Canonical XML .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"xml-string",type:"xs:string",occurrence:null,description:'
a string representation of a well formed XML to canonicalize. XML fragments are not allowed.
'},{name:"options",type:"element(opt:options)",occurrence:null,description:'
an XML containg options for the canonicalize function.
'}],returns:{type:"xs:string",description:"the canonicalized XML string."},errors:['err:CANO0001 invalid input.']},{isDocumented:!0,arity:2,name:"parse",qname:"x:parse",signature:"($xml-string as xs:string?, $options as element(opt:options)?) as node()* external",description:'

A function to parse XML files and fragments (i.e.\n external general parsed\n entities).

\n

The functions takes two arguments: the first one is the\n string to be parsed and the second argument is an <options/> element that\n passes a list of options to the parsing function. They are described below.\n The options element must conform to the xml-options:options element type\n from the xml-options.xsd schema. Some of these\n will be passed to the underlying library (LibXml2) and further documentation\n for them can be found at \n LibXml2 parser.

\n The list of available options:\n \n

\n An example that sets the base-uri of the parsed external entities:\n

\n
\n   import module namespace x = "http://zorba.io/modules/xml";\n   import schema namespace opt = "http://zorba.io/modules/xml-options";\n   x:parse("<from1>Jani</from1><from2>Jani</from2><from3>Jani</from3>",\n     <opt:options>\n       <opt:base-uri opt:value="urn:test"/>\n       <opt:parse-external-parsed-entity/>\n     </opt:options>\n   )\n 
\n',summary:"

A function to parse XML files and fragments (i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"xml-string",type:"xs:string",occurrence:"?",description:'
The string that holds the XML to be parsed. If empty, the function will return an empty sequence
'},{name:"options",type:"element(opt:options)",occurrence:"?",description:'
The options for the parsing
'}],returns:{type:"node()*",description:"The parsed XML as a document node or a list of nodes, or an empty sequence."},errors:['zerr:ZXQD0003 The error will be raised if the options to the function are inconsistent.','err:FODC0006 The error will be raised if the input string is not a valid XML document or fragment (external general parsed entity) or if DTD validation was enabled and the document has not passed it.','err:XQDY0027 The error will be raised if schema validation was enabled and the input document has not passed it or if the parsing options are not conformant to the xml-options.xsd schema.']}],variables:[]},"http://www.zorba-xquery.com/modules/process":{ns:"http://www.zorba-xquery.com/modules/process",description:' This module provides functions to create a native process and return the result\n (i.e. exit code, result on standard out and error).\n

\n Example:\n

\n  import module namespace proc = "http://www.zorba-xquery.com/modules/process";\n  proc:exec("ls")\n
\n

\n

\n Potential result:\n

\n <result xmlns="http://www.zorba-xquery.com/modules/process">\n   <stdout>myfile.txt</stout>\n   <stderr/>\n   <exit-code>0</exit-code>\n </result>\n 
\n

\n',sees:[],authors:['Cezar Andrei'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.zorba-xquery.com/modules/process",prefix:"process"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"exec",qname:"process:exec",signature:"($cmd as xs:string) as element(process:result) external",description:" Executes the specified string command in a separate process.\n This function does not allow arguments to be passed to\n the command.\n",summary:"

Executes the specified string command in a separate process.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"cmd",type:"xs:string",occurrence:null,description:'
command to be executed (without arguments)
'}],returns:{type:"element(process:result)",description:"the result of the execution as an element as shown in the documentation of this module. The exit-code element returns the exit code of the child process. For POSIX compliant platforms: returns the process exit code. If process is terminated or stopped: 128 + termination signal code. For Windows platforms: returns the return value of the process or the exit or terminate process specified value."},errors:['process:PROC01 if an error occurred while communicating with the executed process.']},{isDocumented:!0,arity:2,name:"exec",qname:"process:exec",signature:"($cmd as xs:string, $args as xs:string*) as element(process:result) external",description:" Executes the specified string command in a separate process.\n Each of the strings in the sequence passed in as the second\n argument is passed as an argument to the executed command.\n",summary:"

Executes the specified string command in a separate process.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"cmd",type:"xs:string",occurrence:null,description:'
command to be executed (without arguments)
'},{name:"args",type:"xs:string",occurrence:"*",description:'
the arguments passed to the executed command (e.g. "-la")
'}],returns:{type:"element(process:result)",description:"the result of the execution as an element as shown in the documentation of this module. The exit-code element returns the exit code of the child process. For POSIX compliant platforms: returns the process exit code. If process is terminated or stopped: 128 + termination signal code. For Windows platforms: returns the return value of the process or the exit or terminate process specified value."},errors:['process:PROC01 if an error occurred while communicating with the executed process.']}],variables:[]},"http://www.28msec.com/modules/maps":{ns:"http://www.28msec.com/modules/maps",description:'

This module defines a set of functions for working with maps. A map\n is identified by a string and can be created using the map:create function\n and dropped using the map:drop function.

\n

It is possible to create persistent and transient maps. The lifetime of a\n transient map is limited by the execution of the current query.\n A persistent map lives until it is explicitly dropped.\n Accordingly, it is also available to other requests.

\n

For example,\n

map:create("my-map", ["string", "integer"], { "persistent" : false })
\n will create a transient map named my-map having two keys.\n The types of the keys are string and integer.\n

\n

The key of a particular entry in the map can consist of a tuple of\n atomic values (called key attributes). The actual type of each attribute\n is determined when the map is created. The value of each entry is a\n sequence of items. If an item in this sequence is a object or array,\n this item needs to belong to a collection, otherwise, an error is raised.

\n

For every persistent map, 28.io will create a new collection\n in your MongoDB database. The collection will have the prefix _28.map.\n For example, if your map is called foo, the according collection will\n be named _28.map.foo.

\n',sees:[],authors:['28msec'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.28msec.com/modules/maps",prefix:"map"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:0,name:"available-maps",qname:"map:available-maps",signature:"() as string* external",description:" The function returns a sequence of names of the maps that are\n available (persistent and non-persistent). The sequence will be\n empty if there are no maps.\n",summary:"

The function returns a sequence of names of the maps that are\n available (persistent and non-persistent).

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"string*",description:"A sequence of string, one for each available map, or an emtpy sequence."},errors:[]},{isDocumented:!0,arity:2,name:"create",qname:"map:create",signature:"($name as string, $key-types as item()) as empty-sequence() external",description:' Create a persistent map with a given name and type identifiers for the key\n attributes.\n If the map has only one key attribute, a single type identifier is given,\n for more than one key attribute an array of type identifiers is given.\n Calling this function is equivalent to calling create with the options\n
{ "persistent" : true }
\n Note that the function is sequential and immediately creates the map.\n

Each key-type should be specified as string (e.g. "integer",\n "string", "boolean", "double", or "datetime").

\n

For example,\n

map:create("my-map", "string")
or\n
map:create("my-map", ["string", "integer"])
.

\n',summary:"

Create a persistent map with a given name and type identifiers for the key\n attributes.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:'
the name of the map (the restrictons on collection names apply)
'},{name:"key-types",type:"item()",occurrence:null,description:""}],returns:{type:"empty-sequence()",description:"the function is sequential and immediately creates the corresponding map. It returns the empty-sequence."},errors:['err:XPTY0004 if any of the key attribute types is not a subtype of anyAtomicType.','zerr:ZSTR0001 if a map with the given name already exists.','zerr:ZDDY1000 if the given name is not a legal collection name','zerr:ZDDY0043 if any of the given options has an invalid type']},{isDocumented:!0,arity:3,name:"create",qname:"map:create",signature:"($name as string, $key-types as item(), $options as object()) as empty-sequence() external",description:' Create a map with a given name, type identifiers for the key attributes, and\n options.\n If the map has only one key attribute, a single type identifier is given,\n for more than one key attribute an array of type identifiers is given.\n Currently only one option is supported: To create a transient map the object\n { "persistent" : false }\n has to be passed to the $options parameter.\n Note that the function is sequential and immediately creates the map in the\n store.\n',summary:"

Create a map with a given name, type identifiers for the key attributes, and\n options.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:'
the name of the map (the restrictons on collection names apply)
'},{name:"key-types",type:"item()",occurrence:null,description:""},{name:"options",type:"object()",occurrence:null,description:'
an object describing options for the map
'}],returns:{type:"empty-sequence()",description:"the function is sequential and immediately creates the corresponding map but returns the empty-sequence."},errors:['err:XPTY0004 if any of the attribute types is not a subtype of anyAtomicType.','zerr:ZSTR0001 if a map with the given name already exists.','zerr:ZDDY1000 if the given name is not a legal collection name','zerr:ZDDY0043 if any of the given options has an invalid type']},{isDocumented:!0,arity:2,name:"delete",qname:"map:delete",signature:"($name as string, $key as item()) as empty-sequence() external",description:' Removes an entry identified by the given key from the map.\n If the map has only one key attribute, a single key value is given, for\n more than one key attribute an array of key values is given.\n Note that it is possible to insert entries with empty key attributes.\n However as the removing the entries is based on the "eq" comparison and\n as "eq" with an empty sequence always return false, it is not possible\n to delete these entries.\n',summary:"

Removes an entry identified by the given key from the map.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:'
the name of the map
'},{name:"key",type:"item()",occurrence:null,description:'
either a single attribute key or an array of keys
'}],returns:{type:"empty-sequence()",description:"the function is sequential and immediately deletes the entry into the map but returns the empty-sequence."},errors:['zerr:ZDDY0023 if a map with the given name does not exist.','zerr:ZDDY0025 if the given number of key attributes does not match the number of key attributes specified when creating the map (see the map:create function).','zerr:ZXQD0005 if any of the given key attributes can not be cast (or is not a subtype) of the corresponding key attribute specified when creating the map.']},{isDocumented:!0,arity:1,name:"drop",qname:"map:drop",signature:"($name as string) as empty-sequence() external",description:" Deletes the map with the given name.\n",summary:"

Deletes the map with the given name.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:'
the name of the map to drop
'}],returns:{type:"empty-sequence()",description:"the function is sequential and immediately drops the map. It returns the empty-sequence."},errors:['zerr:ZDDY0023 if a map with the given name does not exist.']},{isDocumented:!0,arity:2,name:"get",qname:"map:get",signature:"($name as string, $key as item()) as item()* external",description:' Returns the value of the entry with the given key from the map.\n If the map has only one key attribute, a single key value is given, for\n more than one key attribute an array of key values is given.\n Note that it is possible to insert entries with empty key attributes.\n However as the getting the entries is based on the "eq" comparison and\n as "eq" with an empty sequence always return false, it is not possible\n to retrieve these entries.\n

For example,\n

map:get("my-map", "key")
or\n
map:get("my-map", [ "key1", "key2" ])
.

\n',summary:"

Returns the value of the entry with the given key from the map.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:'
the name of the map
'},{name:"key",type:"item()",occurrence:null,description:'
either a single attribute key or an array of keys
'}],returns:{type:"item()*",description:"the value of the entry in the map identified by the given key. The empty-sequence will be returned if no entry with the given key is contained in the map."},errors:['zerr:ZDDY0023 if a map with the given name does not exist.','zerr:ZDDY0025 if the given number of key attributes does not match the number of key attributes specified when creating the map (see the map:create function).','zerr:ZXQD0005 if any of the given key attributes can not be cast (or is not a subtype) of the corresponding key attribute specified when creating the map.']},{isDocumented:!0,arity:3,name:"insert",qname:"map:insert",signature:"($name as string, $key as item(), $value as item()*) as empty-sequence() external",description:' Inserts a new entry into the map with the given name.\n If the map has only one key attribute, a single key value is given, for\n more than one key attribute an array of key values is given.\n If an entry with the given key already exists in the map, the value\n sequences of the existing entry and the sequence passed using $value\n argument are concatenated.\n

If a map is persistent and if an item in the value sequence\n is an object or array, this item needs to belong to a collection,\n otherwise, an an error is raised.

\n Note that it is possible to insert entries with empty key attributes\n or key attributes having the value null. However, as\n the comparison with an empty sequence or null always returns false,\n it is not possible to retrieve these entries.\n

For example,\n

map:insert("my-map", "key", "value")
or\n
map:insert("my-map", [ "key1", "key2" ] , (42, "value"))
.

\n',summary:"

Inserts a new entry into the map with the given name.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:'
the name of the map
'},{name:"key",type:"item()",occurrence:null,description:'
either a single attribute key or an array of keys
'},{name:"value",type:"item()",occurrence:"*",description:'
the value of the entry to insert
'}],returns:{type:"empty-sequence()",description:"the function is sequential and immediately inserts the entry into the map. It returns the empty-sequence."},errors:['zerr:ZDDY0023 if a map with the given name does not exist.','zerr:ZDDY0025 if the given number of key attributes does not match the number of key attributes specified when creating the map (see the map:create function).','zerr:ZXQD0005 if any of the given key attributes can not be cast (or is not a subtype) of the corresponding key attribute specified when creating the map.','zerr:ZDDY1003 if the value to insert is an object or array it must belong to a collection.']},{isDocumented:!0,arity:1,name:"keys",qname:"map:keys",signature:"($name as string) as array()* external",description:' Returns the keys of all entries of a map. The keys\n are returned as sequence of arrays.\n The following condition always holds:\n map:size($name) eq count(map:keys($name))\n',summary:"

Returns the keys of all entries of a map.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:'
the name of the map
'}],returns:{type:"array()*",description:"an sequence of arrays each array containing the values of all attributes of one key."},errors:['zerr:ZDDY0023 if a map with the given name does not exist.']},{isDocumented:!0,arity:1,name:"options",qname:"map:options",signature:"($name as string) as object() external",description:" The function returns the options that were passed during creation or the\n default options if no options were passed.\n",summary:"

The function returns the options that were passed during creation or the\n default options if no options were passed.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:'
the name of the map
'}],returns:{type:"object()",description:"an options object"},errors:['zerr:ZDDY0023 if a map with the given name does not exist.']},{isDocumented:!0,arity:1,name:"size",qname:"map:size",signature:"($name as string) as integer external",description:' The number of entries in a map.\n The following condition always holds:\n map:size($name) eq count(map:keys($name))\n',summary:"

The number of entries in a map.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:'
the name of the map
'}],returns:{type:"integer",description:"the number of entries in the map."},errors:['zerr:ZDDY0023 if a map with the given name does not exist.']}],variables:[]},"http://www.w3.org/2005/xpath-functions/math":{ns:"http://www.w3.org/2005/xpath-functions/math",description:' This module contains all the functions part of the\n W3C XPath and XQuery Functions and Operators 3.0\n section "4.7 Trigonometric and exponential functions".\n',sees:['http://www.w3.org/TR/xpath-functions-30/#trigonometry'],authors:['www.w3c.org'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/2005/xpath-functions/math",prefix:"math"}],functions:[{isDocumented:!0,arity:1,name:"acos",qname:"math:acos",signature:"($arg as xs:double?) as xs:double? external",description:'

Returns the arc cosine of the argument, the result being in the range zero to\n +π radians.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise the result is the arc cosine of $θ,\n treated as an angle in radians, as defined in the \n specification of the acos function applied to 64-bit binary floating point\n values.

The treatment of the invalidOperation exception is defined in .

If $arg is NaN, or if its absolute value is greater than one,\n then the result is NaN.

In other cases the result is an xs:double value representing an angle\n θ in radians in the range 0 <= $θ <=\n +π.

\n',summary:"

Returns the arc cosine of the argument, the result being in the range zero to\n + π radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:double",occurrence:"?",description:""}],returns:{type:"xs:double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"asin",qname:"math:asin",signature:"($arg as xs:double?) as xs:double? external",description:'

Returns the arc sine of the argument, the result being in the range\n -π/2 to +π/2 radians.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise the result is the arc sine of $θ,\n treated as an angle in radians, as defined in the \n specification of the asin function applied to 64-bit binary floating point\n values.

The treatment of the invalidOperation and underflow exceptions\n is defined in .

If $arg is positive or negative zero, the result is $arg.

If $arg is NaN, or if its absolute value is greater than one,\n then the result is NaN.

In other cases the result is an xs:double value representing an angle\n θ in radians in the range -π/2 <=\n $θ <= +π/2.

\n',summary:"

Returns the arc sine of the argument, the result being in the range\n - π /2 to + π /2 radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:double",occurrence:"?",description:""}],returns:{type:"xs:double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"atan",qname:"math:atan",signature:"($arg as xs:double?) as xs:double? external",description:'

Returns the arc tangent of the argument, the result being in the range\n -π/2 to +π/2 radians.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise the result is the arc tangent of $θ,\n treated as an angle in radians, as defined in the \n specification of the atan function applied to 64-bit binary floating point\n values.

The treatment of the underflow exception is defined in .

If $arg is positive or negative zero, the result is $arg.

If $arg is NaN then the result is NaN.

In other cases the result is an xs:double value representing an angle\n θ in radians in the range -π/2 <=\n $θ <= +π/2.

\n',summary:"

Returns the arc tangent of the argument, the result being in the range\n - π /2 to + π /2 radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:double",occurrence:"?",description:""}],returns:{type:"xs:double?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"atan2",qname:"math:atan2",signature:"($y as xs:double, $x as xs:double) as xs:double external",description:'

Returns the angle in radians subtended at the origin by the point on a plane\n with coordinates (x, y) and the positive x-axis, the result being in the range\n -π to +π.

This function is deterministic, context-independent, and focus-independent.

The result is the value of atan2(y, x) as defined in the\n specification of the atan2 function applied\n to 64-bit binary floating point values.

The treatment of the underflow exception is defined in .

If either argument is NaN\n then the result is NaN.

If $y is positive and $x is positive and finite, then\n (subject to rules for overflow, underflow and approximation)\n the value of atan2($y, $x) is atan($y div $x).

If $y is positive and $x is negative and finite, then\n (subject to the same caveats)\n the value of atan2($y, $x) is π - atan($y div $x).

Some results for special values of the arguments are shown in the examples below.

\n',summary:"

Returns the angle in radians subtended at the origin by the point on a plane\n with coordinates (x, y) and the positive x-axis, the result being in the range\n - π to + π .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"y",type:"xs:double",occurrence:null,description:""},{name:"x",type:"xs:double",occurrence:null,description:""}],returns:{type:"xs:double",description:""},errors:[]},{isDocumented:!0,arity:1,name:"cos",qname:"math:cos",signature:"($theta as xs:double?) as xs:double? external",description:'

Returns the cosine of the argument, expressed in radians.

This function is deterministic, context-independent, and focus-independent.

If $θ is the empty sequence, the function returns the empty\n sequence.

If $θ is positive or negative infinity, or NaN,\n then the result is NaN.

Otherwise the result is the cosine of $θ,\n treated as an angle in radians, as defined in the \n specification of the cos function applied to 64-bit binary floating point\n values.

The treatment of the invalidOperation exception is defined in .

If $θ is positive or negative zero, the result is\n $θ.

If $θ is positive or negative infinity, or NaN,\n then the result is NaN.

Otherwise the result is always in the range -1.0e0 to +1.0e0

\n',summary:"

Returns the cosine of the argument, expressed in radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"theta",type:"xs:double",occurrence:"?",description:""}],returns:{type:"xs:double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"exp",qname:"math:exp",signature:"($arg as xs:double?) as xs:double? external",description:'

Returns the value of ex.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise the result is the mathematical constant e\n raised to the power of $arg, as defined in the \n specification of the exp function applied to 64-bit binary floating point\n values.

The treatment of overflow and underflow is defined in .

\n',summary:"

Returns the value of e x .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:double",occurrence:"?",description:""}],returns:{type:"xs:double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"exp10",qname:"math:exp10",signature:"($arg as xs:double?) as xs:double? external",description:'

Returns the value of 10x.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise the result is ten raised to the power of $arg,\n as defined in the specification of the exp10\n function applied to 64-bit binary floating point values.

The treatment of overflow and underflow is defined in .

\n',summary:"

Returns the value of 10 x .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:double",occurrence:"?",description:""}],returns:{type:"xs:double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"log",qname:"math:log",signature:"($arg as xs:double?) as xs:double? external",description:'

Returns the natural logarithm of the argument.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise the result is the natural logarithm of $arg, as\n defined in the specification of the log\n function applied to 64-bit binary floating point values.

The treatment of divideByZero and invalidOperation exceptions\n is defined in . The effect is that if the argument is less\n than or equal to zero, the result is NaN.

\n',summary:"

Returns the natural logarithm of the argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:double",occurrence:"?",description:""}],returns:{type:"xs:double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"log10",qname:"math:log10",signature:"($arg as xs:double?) as xs:double? external",description:'

Returns the base-ten logarithm of the argument.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise the result is the base-10 logarithm of $arg, as\n defined in the specification of the log10\n function applied to 64-bit binary floating point values.

The treatment of divideByZero and invalidOperation exceptions\n is defined in . The effect is that if the argument is less\n than or equal to zero, the result is NaN.

\n',summary:"

Returns the base-ten logarithm of the argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:double",occurrence:"?",description:""}],returns:{type:"xs:double?",description:""},errors:[]},{isDocumented:!0,arity:0,name:"pi",qname:"math:pi",signature:"() as xs:double external",description:'

Returns an approximation to the mathematical constant π.

This function is deterministic, context-independent, and focus-independent.

This function returns the xs:double value whose lexical representation is\n 3.141592653589793e0

The expression 2*math:pi() returns 6.283185307179586e0.

The expression 60 * (math:pi() div 180) converts an angle of 60 degrees\n to radians.

\n',summary:"

Returns an approximation to the mathematical constant π .

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:double",description:""},errors:[]},{isDocumented:!0,arity:2,name:"pow",qname:"math:pow",signature:"($x as xs:double?, $y as numeric) as xs:double? external",description:'

Returns the result of raising the first argument to the power of the\n second.

This function is deterministic, context-independent, and focus-independent.

If $x is the empty sequence, the function returns the empty sequence.

If $y is an instance of xs:integer, the result is\n $x raised to the power of $y as defined in the specification of the pown function applied to a\n 64-bit binary floating point value and an integer.

Otherwise $y is converted to an xs:double by numeric\n promotion, and the result is the value of $x raised to the power of\n $y as defined in the specification of the\n pow function applied to two 64-bit binary floating point values.

The treatment of the divideByZero and invalidOperation\n exceptions is defined in . Some of the consequences are\n illustrated in the examples below.

\n',summary:"

Returns the result of raising the first argument to the power of the\n second.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"x",type:"xs:double",occurrence:"?",description:""},{name:"y",type:"numeric",occurrence:null,description:""}],returns:{type:"xs:double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"sin",qname:"math:sin",signature:"($theta as xs:double?) as xs:double? external",description:'

Returns the sine of the argument, expressed in radians.

This function is deterministic, context-independent, and focus-independent.

If $θ is the empty sequence, the function returns the empty\n sequence.

Otherwise the result is the sine of $θ,\n treated as an angle in radians, as defined in the \n specification of the sin function applied to 64-bit binary floating point\n values.

The treatment of the invalidOperation and underflow exceptions\n is defined in .

If $θ is positive or negative zero, the result is\n $θ.

If $θ is positive or negative infinity, or NaN,\n then the result is NaN.

Otherwise the result is always in the range -1.0e0 to +1.0e0

\n',summary:"

Returns the sine of the argument, expressed in radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"theta",type:"xs:double",occurrence:"?",description:""}],returns:{type:"xs:double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"sqrt",qname:"math:sqrt",signature:"($arg as xs:double?) as xs:double? external",description:'

Returns the non-negative square root of the argument.

This function is deterministic, context-independent, and focus-independent.

If $arg is the empty sequence, the function returns the empty sequence.

Otherwise the result is the mathematical non-negative square root of\n $arg as defined in the specification of the\n squareRoot function applied to 64-bit binary floating point values.

The treatment of the invalidOperation exception is defined in . The effect is that if the argument is less than zero, the result\n is NaN.

If $arg is positive or negative zero, positive infinity, or\n NaN, then the result is $arg. (Negative zero is the only\n case where the result can have negative sign)

\n',summary:"

Returns the non-negative square root of the argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:double",occurrence:"?",description:""}],returns:{type:"xs:double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"tan",qname:"math:tan",signature:"($theta as xs:double?) as xs:double? external",description:'

Returns the tangent of the argument, expressed in radians.

This function is deterministic, context-independent, and focus-independent.

If $θ is the empty sequence, the function returns the empty\n sequence.

Otherwise the result is the tangent of $θ,\n treated as an angle in radians, as defined in the \n specification of the tan function applied to 64-bit binary floating point\n values.

The treatment of the invalidOperation and underflow exceptions\n is defined in .

If $θ is positive or negative infinity, or NaN,\n then the result is NaN.

\n',summary:"

Returns the tangent of the argument, expressed in radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"theta",type:"xs:double",occurrence:"?",description:""}],returns:{type:"xs:double?",description:""},errors:[]}],variables:[]},"http://www.zorba-xquery.com/modules/oauth/client":{ns:"http://www.zorba-xquery.com/modules/oauth/client",description:' This module provides the functions necessary to acquire access to the personal\n resources of a user through the open standard called\n OAuth.\n The application/mashup creator does not need to know the\n specifics of OAuth to use this module.\n',sees:['OAuth Website'],authors:['Stephanie Russell','William Candillon'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://zorba.io/modules/base64",prefix:"base64"},{uri:"http://zorba.io/features",prefix:"f"},{uri:"http://zorba.io/modules/hmac",prefix:"hmac"},{uri:"http://expath.org/ns/http-client",prefix:"http"},{uri:"http://expath.org/ns/http-client",prefix:"http-client"},{uri:"http://www.zorba-xquery.com/modules/oauth/client",prefix:"oauth"},{uri:"http://www.zorba-xquery.com/modules/oauth/error",prefix:"oerr"},{uri:"http://zorba.io/options/features",prefix:"op"},{uri:"http://www.zorba-xquery.com/schemas/oauth/parameters",prefix:"p"},{uri:"http://zorba.io/modules/random",prefix:"ra"},{uri:"http://www.zorba-xquery.com/schemas/oauth/service-provider",prefix:"sp"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"access-token",qname:"oauth:access-token",signature:"($service-provider as schema-element(sp:service-provider), $parameters as schema-element(p:parameters)) as schema-element(p:parameters)",description:" This function allows the client to obtain a set of token credentials from the service provider by making an authenticated HTTP request to the Token Request endpoint.\n This function is provided for convenience.\n",summary:"

This function allows the client to obtain a set of token credentials from the service provider by making an authenticated HTTP request to the Token Request endpoint.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"service-provider",type:"schema-element(sp:service-provider)",occurrence:null,description:'
Contains service provider information
'},{name:"parameters",type:"schema-element(p:parameters)",occurrence:null,description:'
parameters
'}],returns:{type:"schema-element(p:parameters)",description:'token credentials correctly parsed as parameter elements, or an error if http response status is not 200 OK
 let $service-provider := oauth:service-provider(...) let $parameters := oauth:parameters("oauth_token", "#") let $parameters := oauth:add-parameter($parameters, "oauth_token_secret", "#") let $tokens := oauth:access-token($service-provider, $parameters) ... 
'},errors:[]},{isDocumented:!0,arity:3,name:"add-parameter",qname:"oauth:add-parameter",signature:"($parameters as schema-element(p:parameters)?, $name as xs:string, $value as xs:string) as schema-element(p:parameters)",description:' Adds an OAuth parameter to an OAuth Parameters instance.\n Instances of OAuth parameters are used to\n contain value/pair data such as oauth_token\n and oauth_token_secret.\n For instance the following code snippet:\n
\n  let $params := oauth:parameters("oauth_token", "#")\n  let $params := oauth:add-parameter($params, "oauth_token_secret", "#")\n  return $params\n 
\n Returns the following XML schema instance:\n
\n \n   \n   \n \n 
\n',summary:"

Adds an OAuth parameter to an OAuth Parameters instance.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"parameters",type:"schema-element(p:parameters)",occurrence:"?",description:'
parameters
'},{name:"name",type:"xs:string",occurrence:null,description:'
parameter name
'},{name:"value",type:"xs:string",occurrence:null,description:'
parameter value
'}],returns:{type:"schema-element(p:parameters)",description:"instance of the OAuth parameters XML schema."},errors:[]},{isDocumented:!0,arity:2,name:"parameter",qname:"oauth:parameter",signature:"($params as schema-element(p:parameters), $string as xs:string) as xs:string",description:" This function returns the string value of the parameters whose key matches a $string input.\n",summary:"

This function returns the string value of the parameters whose key matches a $string input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"params",type:"schema-element(p:parameters)",occurrence:null,description:'
element parameters
'},{name:"string",type:"xs:string",occurrence:null,description:'
string as the "key" name
'}],returns:{type:"xs:string",description:'string value of the parameter with key $string
 let $params := oauth:parameters("oauth_token", "token") let $params := oauth:add-parameter($params, "oauth_token_secret", "secret") let $token-secret := oauth:parameter($params, "oauth_token_secret") return $token-secret 
'},errors:[]},{isDocumented:!0,arity:2,name:"parameters",qname:"oauth:parameters",signature:"($name as xs:string, $value as xs:string) as element(p:parameters)",description:' Create an OAuth Parameters instance.\n Instances of OAuth parameters are used to\n contain value/pair data such as oauth_token\n and oauth_token_secret.\n For instance the following code snippet:\n
\n  oauth:parameters("oauth_token", "#")\n 
\n Returns the following XML schema instance:\n
\n \n   \n \n 
\n',summary:"

Create an OAuth Parameters instance.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
parameter name
'},{name:"value",type:"xs:string",occurrence:null,description:'
parameter value
'}],returns:{type:"element(p:parameters)",description:"instance of the OAuth parameters XML schema."},errors:[]},{isDocumented:!0,arity:3,name:"protected-resource",qname:"oauth:protected-resource",signature:"($protected-resource as schema-element(http:request), $service-provider as schema-element(sp:service-provider), $parameters as schema-element(p:parameters)) as item()*",description:" This function allows the client access to the protected resources of the user.\n This function is provided for convenience.\n",summary:"

This function allows the client access to the protected resources of the user.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"protected-resource",type:"schema-element(http:request)",occurrence:null,description:'
(Not schema-validated) http:request element with http method and href.
'},{name:"service-provider",type:"schema-element(sp:service-provider)",occurrence:null,description:'
Information about the service provider
'},{name:"parameters",type:"schema-element(p:parameters)",occurrence:null,description:'
parameters
'}],returns:{type:"item()*",description:'protected resources parsed as parameter elements, or an error if http response status is not 200 OK
 let $tokens := oauth:parameters("oauth_token", "#") let $tokens := oauth:add-parameter($tokens, "oauth_token_secret", "#") let $service-provider := oauth:service-provider(...) let $request := validate {  } return oauth:protected-resource($request, $service-provider, $tokens) 
'},errors:[]},{isDocumented:!0,arity:1,name:"request-token",qname:"oauth:request-token",signature:"($service-provider as schema-element(sp:service-provider)) as schema-element(p:parameters)",description:' This function allows the client to obtain a set of temporary credentials from the service provider by making an authenticated HTTP request to the Temporary Credential Request endpoint.\n This function is provided for convenience for request-token#2.\n Invoking this function is equivalent to:\n
\n oauth:request-token($service-provider, ())\n 
\n',summary:"

This function allows the client to obtain a set of temporary credentials from the service provider by making an authenticated HTTP request to the Temporary Credential Request endpoint.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"service-provider",type:"schema-element(sp:service-provider)",occurrence:null,description:'
Information about the service provider
'}],returns:{type:"schema-element(p:parameters)",description:"temporary credentials correctly parsed as parameter elements, or an error if http response status is not 200 OK"},errors:[]},{isDocumented:!0,arity:2,name:"request-token",qname:"oauth:request-token",signature:"($service-provider as schema-element(sp:service-provider), $parameters as schema-element(p:parameters)?) as schema-element(p:parameters)",description:" This function allows the client to obtain a set of temporary credentials from the service provider by making an authenticated HTTP request to the Temporary Credential Request endpoint.\n This function is provided for convenience.\n",summary:"

This function allows the client to obtain a set of temporary credentials from the service provider by making an authenticated HTTP request to the Temporary Credential Request endpoint.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"service-provider",type:"schema-element(sp:service-provider)",occurrence:null,description:'
Information about the service provider
'},{name:"parameters",type:"schema-element(p:parameters)",occurrence:"?",description:'
Additionnal parameters to the request
'}],returns:{type:"schema-element(p:parameters)",description:'temporary credentials correctly parsed as parameter elements, or an error if http response status is not 200 OK
 let $twitter-config := oauth:service-provider(...) let $additional-parameter := oauth:parameters("foo", "bar") let $tokens := oauth:request-token($twitter-config, $additional-parameter) let $token := oauth:parameter($tokens, "oauth_token") let $token-secret := oauth:parameter($tokens, "oauth_token_secret") ... 
'},errors:[]},{isDocumented:!0,arity:10,name:"service-provider",qname:"oauth:service-provider",signature:"($consumer-key as xs:string, $consumer-secret as xs:string, $signature-method as xs:string, $realm as xs:string, $authorize-url as xs:string, $request-token-method as xs:string, $request-token-url as xs:string, $request-token-callback-url as xs:string, $access-token-method as xs:string, $access-token-url as xs:string) as schema-element(sp:service-provider)",description:' Utility function to build a service provider object.\n This object contains the information required by the\n OAuth client to interact with an OAuth service provider.\n For instance the following expression:\n
\n let $consumer-key     := "#"\n let $consumer-secret  := "#"\n let $signature-method := "HMAC-SHA1"\n let $realm            := "twitter.com"\n let $authorize-url    := "http://api.twitter.com/oauth/authorize"\n let $request-token-method := "POST"\n let $request-token-url := "https://twitter.com/oauth/request_token"\n let $request-token-callback-url := "https://twitter.com/oauth/request_token"\n let $access-token-method := "POST"\n let $access-token-url := "https://api.twitter.com/oauth/access_token"\n return oauth:service-provider(\n   $consumer-key, $consumer-secret, $signature-method,\n   $realm, $authorize-url, $request-token-method,\n   $request-token-url, $request-token-callback-url,\n   $access-token-method, $access-token-url\n )\n 
\n Will return the following XML schema instance:\n
\n \n   \n   \n \n 
\n',summary:"

Utility function to build a service provider object.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"consumer-key",type:"xs:string",occurrence:null,description:'
Client Identifier, also known as the consumer-key
'},{name:"consumer-secret",type:"xs:string",occurrence:null,description:'
Client Shared-Secret, also known as the consumer-secret
'},{name:"signature-method",type:"xs:string",occurrence:null,description:'
Method with which the signing key is signed (typically HMAC-SHA1)
'},{name:"realm",type:"xs:string",occurrence:null,description:'
Realm that defines the protection space
'},{name:"authorize-url",type:"xs:string",occurrence:null,description:'
authorize-url
'},{name:"request-token-method",type:"xs:string",occurrence:null,description:'
request-token-method
'},{name:"request-token-url",type:"xs:string",occurrence:null,description:'
request-token-url
'},{name:"request-token-callback-url",type:"xs:string",occurrence:null,description:'
request-token-callback-url
'},{name:"access-token-method",type:"xs:string",occurrence:null,description:'
access-token-method
'},{name:"access-token-url",type:"xs:string",occurrence:null,description:'
access-token-url
'}],returns:{type:"schema-element(sp:service-provider)",description:"instance of the OAuth service provider XML schema."},errors:[]}],variables:[]},"http://www.28msec.com/modules/http/util/multipart":{ns:"http://www.28msec.com/modules/http/util/multipart",description:" This module provides utility functions to help dealing with the\n content of multipart requests.\n In their implementation, all the functions use the multipart\n related functions of the request module (e.g. parts() or text-part()).\n",sees:[],authors:['28msec'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.28msec.com/modules/http/util/multipart",prefix:"multipart"},{uri:"http://www.28msec.com/modules/http/request",prefix:"req"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"binary-content",qname:"multipart:binary-content",signature:"($name as xs:string) as xs:base64Binary*",description:" Returns the contents of the parts/files in the multipart requests with\n the given part name as xs:base64Binary.\n",summary:"

Returns the contents of the parts/files in the multipart requests with\n the given part name as xs:base64Binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the requested part.
'}],returns:{type:"xs:base64Binary*",description:"the said content or the empty sequence if no part with the given name exists."},errors:['request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:1,name:"binary-file",qname:"multipart:binary-file",signature:"($filename as xs:string) as xs:base64Binary*",description:" Returns the contents of the part/file in the multipart requests with\n the given filename as xs:base64Binary.\n Please note that the file is identified by the filename (and not the\n name of the part) that is contained in the Content-Disposition header\n of the part.\n",summary:"

Returns the contents of the part/file in the multipart requests with\n the given filename as xs:base64Binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filename",type:"xs:string",occurrence:null,description:'
the name of the requested file.
'}],returns:{type:"xs:base64Binary*",description:"the said content or the empty sequence if no part with the given filename exists."},errors:['request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:1,name:"content-length",qname:"multipart:content-length",signature:"($name as xs:string) as xs:integer*",description:" Returns the content length of the parts/files in the multipart requests with\n the given part name as xs:integer.\n",summary:"

Returns the content length of the parts/files in the multipart requests with\n the given part name as xs:integer.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the requested part.
'}],returns:{type:"xs:integer*",description:"The content-length in bytes of the parts/files or the empty sequence if the part does not exist"},errors:['request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:1,name:"content-type",qname:"multipart:content-type",signature:"($name as xs:string) as xs:string*",description:" Returns the content type of the parts/files in the multipart requests with\n the given part name as xs:string.\n",summary:"

Returns the content type of the parts/files in the multipart requests with\n the given part name as xs:string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the requested part.
'}],returns:{type:"xs:string*",description:"The content-types of the parts/files or the empty sequence if the part does not exist"},errors:['request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:1,name:"filename",qname:"multipart:filename",signature:"($name as xs:string) as xs:string*",description:" Returns the filenames of the parts/files in the multipart requests with\n the given part name as xs:string.\n",summary:"

Returns the filenames of the parts/files in the multipart requests with\n the given part name as xs:string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the requested part.
'}],returns:{type:"xs:string*",description:"The filename of the parts/files or the empty sequence if the part does not exist"},errors:['request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:0,name:"filenames",qname:"multipart:filenames",signature:"() as xs:string*",description:" Returns the filenames of all the parts contained in the multipart\n content of the given request.\n",summary:"

Returns the filenames of all the parts contained in the multipart\n content of the given request.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string*",description:"the said filenames"},errors:['request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:0,name:"names",qname:"multipart:names",signature:"() as xs:string*",description:" Returns the names of all the parts contained in the multipart\n content of the given request.\n",summary:"

Returns the names of all the parts contained in the multipart\n content of the given request.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string*",description:"the said names"},errors:['request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:1,name:"part",qname:"multipart:part",signature:"($name as xs:string) as element(req:part)*",description:' Returns the req:part element among all the parts contained\n in the multipart requests with the given name.\n',summary:"

Returns the req:part element among all the parts contained\n in the multipart requests with the given name.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the requested part.
'}],returns:{type:"element(req:part)*",description:"the said part elements or the empty sequence if no part with the given name exists."},errors:['request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:1,name:"text-content",qname:"multipart:text-content",signature:"($name as xs:string) as xs:string*",description:" Returns the contents of the parts/files in the multipart requests with\n the given part name as a string.\n It is assumed that the character set of the file is UTF-8.\n",summary:"

Returns the contents of the parts/files in the multipart requests with\n the given part name as a string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the requested part.
'}],returns:{type:"xs:string*",description:"the said content or the empty sequence if no part with the given filename exists."},errors:['request:no-text-content if the value of the part cannot be treated as text','request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:1,name:"text-file",qname:"multipart:text-file",signature:"($filename as xs:string) as xs:string*",description:" Returns the contents of the part/file in the multipart requests with\n the given filename as a string.\n It is assumed that the character set of the file is UTF-8.\n Please note that the file is identified by the filename (and not the\n name of the part) that is contained in the Content-Disposition header\n of the part.\n",summary:"

Returns the contents of the part/file in the multipart requests with\n the given filename as a string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filename",type:"xs:string",occurrence:null,description:'
the name of the requested file.
'}],returns:{type:"xs:string*",description:"the said content or the empty sequence if no part with the given filename exists."},errors:['request:no-text-content if the value of the part cannot be treated as text','request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']}],variables:[]},"http://zorba.io/modules/excel/statistical-zorba":{ns:"http://zorba.io/modules/excel/statistical-zorba",description:" This module implements some Excel 2003 statistical functions\n that cannot be implemented with standard XQuery functions.\n It uses Zorba specific functions.\n",sees:['http://office.microsoft.com/en-us/excel/CH062528311033.aspx'],authors:['Daniel Turcanu'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/excel/statistical-zorba",prefix:"excel"},{uri:"http://zorba.io/modules/excel/errors",prefix:"excel-err"},{uri:"http://zorba.io/modules/excel/math",prefix:"excel-math"},{uri:"http://zorba.io/modules/excel/statistical",prefix:"excel-statistical"},{uri:"http://www.w3.org/2005/xpath-functions/math",prefix:"math"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"stdev",qname:"excel:stdev",signature:"($numbers as xs:anyAtomicType+) as xs:anyAtomicType",description:" Estimates standard deviation based on a sample.\n The standard deviation is a measure of how widely values are dispersed\n from the average value (the mean).\n It is computed with formula:\n sqrt( sum((x-average_x)^2) / (n-1) ) = sqrt ( VAR(numbers) )\n",summary:"

Estimates standard deviation based on a sample.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"numbers",type:"xs:anyAtomicType",occurrence:"+",description:'
the sequence of numbers or values castable to numeric The sequence can be of any length, from 1 up.
'}],returns:{type:"xs:anyAtomicType",description:"the standard deviation, as numeric type"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:1,name:"stdeva",qname:"excel:stdeva",signature:"($numbers as xs:anyAtomicType+) as xs:anyAtomicType",description:" Estimates standard deviation based on a sample.\n The standard deviation is a measure of how widely values are dispersed\n from the average value (the mean).\n It is computed with formula:\n sqrt( sum((x-average_x)^2) / (n-1) ) = sqrt ( VARA(numbers) )\n",summary:"

Estimates standard deviation based on a sample.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"numbers",type:"xs:anyAtomicType",occurrence:"+",description:'
the sequence of numbers or values castable to numeric The sequence can be of any length, from 1 up.
'}],returns:{type:"xs:anyAtomicType",description:"the standard deviation, as numeric type"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:1,name:"stdevp",qname:"excel:stdevp",signature:"($numbers as xs:anyAtomicType+) as xs:anyAtomicType",description:" Calculates standard deviation based on the entire population given as arguments.\n The standard deviation is a measure of how widely values are dispersed from\n the average value (the mean).\n It is computed with formula:\n sqrt( sum((x-average_x)^2) / n ) = sqrt ( VARP(numbers) )\n",summary:"

Calculates standard deviation based on the entire population given as arguments.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"numbers",type:"xs:anyAtomicType",occurrence:"+",description:'
the sequence of numbers or values castable to numeric The sequence can be of any length, from 1 up.
'}],returns:{type:"xs:anyAtomicType",description:"the standard deviation, as numeric type"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:1,name:"stdevpa",qname:"excel:stdevpa",signature:"($numbers as xs:anyAtomicType+) as xs:anyAtomicType",description:" Calculates standard deviation based on the entire population given as arguments.\n The standard deviation is a measure of how widely values are dispersed from\n the average value (the mean).\n It is computed with formula:\n sqrt( sum((x-average_x)^2) / n ) = sqrt ( VARPA(numbers) )\n",summary:"

Calculates standard deviation based on the entire population given as arguments.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"numbers",type:"xs:anyAtomicType",occurrence:"+",description:'
the sequence of numbers or values castable to numeric The sequence can be of any length, from 1 up.
'}],returns:{type:"xs:anyAtomicType",description:"the standard deviation, as numeric type"},errors:['excel-err:Value if the parameters cannot be casted to numeric type']},{isDocumented:!0,arity:2,name:"subtotal",qname:"excel:subtotal",signature:"($function_num as xs:integer, $numbers as xs:anyAtomicType*) as xs:anyAtomicType",description:" Moved from math module.\n Returns a subtotal in a sequence of numbers.\n The function applied is given by $function_num.\n",summary:"

Moved from math module.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"function_num",type:"xs:integer",occurrence:null,description:'
defines the function to be applied on sequence values. The possible values are:
1 or 101
AVERAGE
2 or 102
COUNT
3 or 103
COUNTA
4 or 104
MAX
5 or 105
MIN
6 or 106
PRODUCT
7 or 107
STDEV
8 or 108
STDEVP
9 or 109
SUM
10 or 110
VAR
11 or 111
VARP
In this implementation there is no difference between x and 10x.

'},{name:"numbers",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequence of numbers or values castable to numeric. The sequence can be of any length.
'}],returns:{type:"xs:anyAtomicType",description:"The function result, as numeric type"},errors:['depends on the function called','excel-err:Num if $function_num is not a value between 1 .. 11 or 101 .. 111']}],variables:[]},"http://www.28msec.com/modules/debug":{ns:"http://www.28msec.com/modules/debug",description:" This module contains internal debug functions.\n",sees:[],authors:['Federico Cavalieri'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.28msec.com/modules/debug",prefix:"debug"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:0,name:"non-seeakable-streamable-string",qname:"debug:non-seeakable-streamable-string",signature:"() as string external",description:" Returns a non seekable streamable string\n",summary:"

Returns a non seekable streamable string\n

",annotation_str:" %an:deterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"deterministic",value:""}],updating:!1,parameters:[],returns:{type:"string",description:"a non seekable streamable string"},errors:[]},{isDocumented:!0,arity:1,name:"test-01-cache",qname:"debug:test-01-cache",signature:"($arg as xs:integer) as item()* external",description:' Equivalent to:\n declare %an:cache function local:test-01-cache($x as xs:integer)\n {\n if ($x < 10)\n then $x * $x\n else if ($x < 20)\n then ()\n else ($x, " == ", $x * $x)\n };\n',summary:'

Equivalent to:\n declare %an:cache function local:test-01-cache($x as xs:integer)\n {\n if ($x < 10)\n then $x * $x\n else if ($x < 20)\n then ()\n else ($x, " == ", $x * $x)\n };\n

',annotation_str:" %an:cache",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"cache",value:""}],updating:!1,parameters:[{name:"arg",type:"xs:integer",occurrence:null,description:'
as described above
'}],returns:{type:"item()*",description:"as described above"},errors:[]},{isDocumented:!0,arity:1,name:"test-01-sd",qname:"debug:test-01-sd",signature:"($arg as xs:integer) as item()* external",description:' Equivalent to:\n declare %an:strictlydeterministic function local:test-01-sd($x as xs:integer)\n {\n if ($x < 10)\n then $x * $x\n else if ($x < 20)\n then ()\n else ($x, " == ", $x * $x)\n };\n',summary:'

Equivalent to:\n declare %an:strictlydeterministic function local:test-01-sd($x as xs:integer)\n {\n if ($x < 10)\n then $x * $x\n else if ($x < 20)\n then ()\n else ($x, " == ", $x * $x)\n };\n

',annotation_str:" %an:strictlydeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"strictlydeterministic",value:""}],updating:!1,parameters:[{name:"arg",type:"xs:integer",occurrence:null,description:'
as described above
'}],returns:{type:"item()*",description:"as described above"},errors:[]},{isDocumented:!0,arity:1,name:"test-02-cache",qname:"debug:test-02-cache",signature:"($arg) as item()* external",description:" Equivalent to:\n declare %an:cache function local:test-02-cache($arg)\n {\n serialize($arg),\n uuid:uuid()\n };\n",summary:"

Equivalent to:\n declare %an:cache function local:test-02-cache($arg)\n {\n serialize($arg),\n uuid:uuid()\n };\n

",annotation_str:" %an:cache",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"cache",value:""}],updating:!1,parameters:[{name:"arg",type:null,occurrence:null,description:'
as described above
'}],returns:{type:"item()*",description:"as described above"},errors:[]},{isDocumented:!0,arity:1,name:"test-02-sd",qname:"debug:test-02-sd",signature:"($arg) as item()* external",description:" Equivalent to:\n declare %an:strictlydeterministic function local:test-02-sd($arg)\n {\n serialize($arg),\n uuid:uuid()\n };\n",summary:"

Equivalent to:\n declare %an:strictlydeterministic function local:test-02-sd($arg)\n {\n serialize($arg),\n uuid:uuid()\n };\n

",annotation_str:" %an:strictlydeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"strictlydeterministic",value:""}],updating:!1,parameters:[{name:"arg",type:null,occurrence:null,description:'
as described above
'}],returns:{type:"item()*",description:"as described above"},errors:[]},{isDocumented:!0,arity:0,name:"test-03-cache",qname:"debug:test-03-cache",signature:"() as item()* external",description:' Equivalent to:\n declare %an:cache function local:test-03-cache()\n {\n { "a" : 1 },\n [1],\n <a/>,\n 1\n };\n',summary:'

Equivalent to:\n declare %an:cache function local:test-03-cache()\n {\n { "a" : 1 },\n [1],\n <a/>,\n 1\n };\n

',annotation_str:" %an:cache",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"cache",value:""}],updating:!1,parameters:[],returns:{type:"item()*",description:"as described above"},errors:[]},{isDocumented:!0,arity:0,name:"test-03-sd",qname:"debug:test-03-sd",signature:"() as item()* external",description:' Equivalent to:\n declare %an:strictlydeterministic function local:test-03-sd()\n {\n { "a" : 1 },\n [1],\n <a/>,\n 1\n };\n',summary:'

Equivalent to:\n declare %an:strictlydeterministic function local:test-03-sd()\n {\n { "a" : 1 },\n [1],\n <a/>,\n 1\n };\n

',annotation_str:" %an:strictlydeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"strictlydeterministic",value:""}],updating:!1,parameters:[],returns:{type:"item()*",description:"as described above"},errors:[]},{isDocumented:!0,arity:2,name:"test-04-cache",qname:"debug:test-04-cache",signature:"($x, $y) as item()* external",description:' Equivalent to:\n declare %an:cache function local:test-04-cache($x, $y)\n {\n debug:non-seeakable-streamable-string(),\n {"key" : debug:non-seeakable-streamable-string()},\n [debug:non-seeakable-streamable-string()],\n <a>{debug:non-seeakable-streamable-string()}</a>\n serialize($x),\n serialize($y)\n };\n',summary:'

Equivalent to:\n declare %an:cache function local:test-04-cache($x, $y)\n {\n debug:non-seeakable-streamable-string(),\n {"key" : debug:non-seeakable-streamable-string()},\n [debug:non-seeakable-streamable-string()],\n <a>{debug:non-seeakable-streamable-string()}</a>\n serialize($x),\n serialize($y)\n };\n

',annotation_str:" %an:cache",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"cache",value:""}],updating:!1,parameters:[{name:"x",type:null,occurrence:null,description:'
as described above
'},{name:"y",type:null,occurrence:null,description:'
as described above
'}],returns:{type:"item()*",description:"as described above"},errors:[]},{isDocumented:!0,arity:2,name:"test-04-sd",qname:"debug:test-04-sd",signature:"($x, $y) as item()* external",description:' Equivalent to:\n declare %an:strictlydeterministic function local:test-04-sd($x, $y)\n {\n debug:non-seeakable-streamable-string(),\n {"key" : debug:non-seeakable-streamable-string()},\n [debug:non-seeakable-streamable-string()],\n <a>{debug:non-seeakable-streamable-string()}</a>\n serialize($x),\n serialize($y)\n };\n',summary:'

Equivalent to:\n declare %an:strictlydeterministic function local:test-04-sd($x, $y)\n {\n debug:non-seeakable-streamable-string(),\n {"key" : debug:non-seeakable-streamable-string()},\n [debug:non-seeakable-streamable-string()],\n <a>{debug:non-seeakable-streamable-string()}</a>\n serialize($x),\n serialize($y)\n };\n

',annotation_str:" %an:strictlydeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"strictlydeterministic",value:""}],updating:!1,parameters:[{name:"x",type:null,occurrence:null,description:'
as described above
'},{name:"y",type:null,occurrence:null,description:'
as described above
'}],returns:{type:"item()*",description:"as described above"},errors:[]},{isDocumented:!0,arity:2,name:"test-05-cache",qname:"debug:test-05-cache",signature:"($x as xs:boolean, $y) as item()* external",description:" Equivalent to:\n declare %an:cache function local:test-05-cache($x as xs:boolean, $y)\n {\n if ($x)\n then $y\n else $x\n };\n",summary:"

Equivalent to:\n declare %an:cache function local:test-05-cache($x as xs:boolean, $y)\n {\n if ($x)\n then $y\n else $x\n };\n

",annotation_str:" %an:cache",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"cache",value:""}],updating:!1,parameters:[{name:"x",type:"xs:boolean",occurrence:null,description:'
as described above
'},{name:"y",type:null,occurrence:null,description:'
as described above
'}],returns:{type:"item()*",description:"as described above"},errors:[]},{isDocumented:!0,arity:2,name:"test-05-sd",qname:"debug:test-05-sd",signature:"($x as xs:boolean, $y) as item()* external",description:" Equivalent to:\n declare %an:strictlydeterministic function local:test-05-sd($x as xs:boolean, $y)\n {\n if ($x)\n then $y\n else $x\n };\n",summary:"

Equivalent to:\n declare %an:strictlydeterministic function local:test-05-sd($x as xs:boolean, $y)\n {\n if ($x)\n then $y\n else $x\n };\n

",annotation_str:" %an:strictlydeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"strictlydeterministic",value:""}],updating:!1,parameters:[{name:"x",type:"xs:boolean",occurrence:null,description:'
as described above
'},{name:"y",type:null,occurrence:null,description:'
as described above
'}],returns:{type:"item()*",description:"as described above"},errors:[]},{isDocumented:!0,arity:0,name:"uuid",qname:"debug:uuid",signature:"() as string external",description:" This function is not deterministic despite the annotation\n",summary:"

This function is not deterministic despite the annotation\n

",annotation_str:" %an:deterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"deterministic",value:""}],updating:!1,parameters:[],returns:{type:"string",description:"a uuid"},errors:[]}],variables:[]},"http://zorba.io/modules/json-xml":{ns:"http://zorba.io/modules/json-xml",description:' Using this module, you can parse JSON data into XML, manipulate it like any\n other XML data using XQuery, and serialize the result back as JSON.

\n There are many ways to represent JSON data in XML, some loss-less ("round\n tripable") and some lossy ("one way"). Loss-less representations preserve\n the JSON data types boolean, number, and null; lossy\n representations convert all data to strings.\n

\n For a loss-less representation, this module implements that proposed by\n John Snelson.\n For example:\n

\n   {\n     "firstName" : "John",\n     "lastName" : "Smith",\n     "address" : {\n       "streetAddress" : "21 2nd Street",\n       "city" : "New York",\n       "state" : "NY",\n       "postalCode" : 10021\n     },\n     "phoneNumbers" : [ "212 732-1234", "646 123-4567" ]\n   }\n 
\n would be represented as:\n
\n   <json type="object">\n     <pair name="firstName" type="string">John</pair>\n     <pair name="lastName" type="string">Smith</pair>\n     <pair name="address" type="object">\n       <pair name="streetAddress" type="string">21 2nd Street</pair>\n       <pair name="city" type="string">New York</pair>\n       <pair name="state" type="string">NY</pair>\n       <pair name="postalCode" type="number">10021</pair>\n     </pair>\n     <pair name="phoneNumbers" type="array">\n       <item type="string">212 732-1234</item>\n       <item type="string">646 123-4567</item>\n     </pair>\n   </json>\n 
\n For a lossy representation, this module implements\n JsonML (the array form).\n For example:\n
\n   [ "person",\n     { "created" : "2006-11-11T19:23",\n       "modified" : "2006-12-31T23:59" },\n     [ "firstName", "Robert" ],\n     [ "lastName", "Smith" ],\n     [ "address",\n       { "type" : "home" },\n       [ "street", "12345 Sixth Ave" ],\n       [ "city", "Anytown" ],\n       [ "state", "CA" ],\n       [ "postalCode", "98765-4321" ]\n     ]\n   ]\n 
\n would be represented as:\n
\n   <person created="2006-11-11T19:23" modified="2006-12-31T23:59">\n     <firstName>Robert</firstName>\n     <lastName>Smith</lastName>\n     <address type="home">\n       <street>12345 Sixth Ave</street>\n       <city>Anytown</city>\n       <state>CA</state>\n       <postalCode>98765-4321</postalCode>\n     </address>\n   </person>\n 
\n',sees:[],authors:['Paul J. Lucas'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://zorba.io/modules/json-xml",prefix:"jx"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:1,name:"json-to-xml",qname:"jx:json-to-xml",signature:"($json as json-item()?) as element(*,xs:untyped)?",description:' Converts JSON data into an XDM instance using the Snelson representation\n described above.

\n',summary:"

Converts JSON data into an XDM instance using the Snelson representation\n described above.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"json",type:"json-item()",occurrence:"?",description:'
The JSON data.
'}],returns:{type:"element(*,xs:untyped)?",description:"said XDM instance."},errors:[]},{isDocumented:!0,arity:2,name:"json-to-xml",qname:"jx:json-to-xml",signature:"($json as json-item()?, $options as object()) as element(*,xs:untyped)?",description:' Converts JSON data into an XDM instance using one of the representations\n described above.

\n',summary:"

Converts JSON data into an XDM instance using one of the representations\n described above.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"json",type:"json-item()",occurrence:"?",description:'
The JSON data.
'},{name:"options",type:"object()",occurrence:null,description:'
The JSON conversion options, for example:
 { "json-format" : "JsonML-array" } 
'}],returns:{type:"element(*,xs:untyped)?",description:"said XDM instance."},errors:[]},{isDocumented:!0,arity:1,name:"xml-to-json",qname:"jx:xml-to-json",signature:"($xml as item()*) as json-item()*",description:' Converts XML data into a JSON item using the Snelson representation\n described above.

\n',summary:"

Converts XML data into a JSON item using the Snelson representation\n described above.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"xml",type:"item()",occurrence:"*",description:'
The XML data to convert.
'}],returns:{type:"json-item()*",description:"said JSON items."},errors:['zerr:ZJSE0001 if $xml is not a document or element node.','zerr:ZJSE0002 if $xml contains an element that is missing a required attribute.','zerr:ZJSE0003 if $xml contains an attribute having an illegal value.','zerr:ZJSE0004 if $xml contains an illegal element. type.','zerr:ZJSE0007 if $xml contains an element that is missing a required value.','zerr:ZJSE0008 if $xml contains an illegal value for a JSON type.']},{isDocumented:!0,arity:2,name:"xml-to-json",qname:"jx:xml-to-json",signature:"($xml as item()*, $options as object()) as json-item()*",description:' Converts XML data into a JSON item using one of the respresentations\n described above.

\n',summary:"

Converts XML data into a JSON item using one of the respresentations\n described above.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"xml",type:"item()",occurrence:"*",description:'
The XML data to convert.
'},{name:"options",type:"object()",occurrence:null,description:'
The conversion options, for example:
 { "json-format" : "JsonML-array" } 
'}],returns:{type:"json-item()*",description:"said JSON items."},errors:['zerr:ZJSE0001 if $xml is not a document or element node.','zerr:ZJSE0002 if $xml contains an element that is missing a required attribute.','zerr:ZJSE0003 if $xml contains an attribute having an illegal value.','zerr:ZJSE0004 if $xml contains an illegal element. type.','zerr:ZJSE0007 if $xml contains an element that is missing a required value.','zerr:ZJSE0008 if $xml contains an illegal value for a JSON type.']}],variables:[]},"http://www.zorba-xquery.com/modules/image/manipulation":{ns:"http://www.zorba-xquery.com/modules/image/manipulation",description:' This module provides functions to handle image manipulations like resizing, zooming,\n special effects etc.\n

The errors raised by functions of this module have the namespace\n http://www.zorba-xquery.com/modules/image/error (associated with prefix ierr).

\n',sees:[],authors:['Daniel Thomas'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://www.zorba-xquery.com/modules/image/error",prefix:"ierr"},{uri:"http://www.zorba-xquery.com/modules/image/image",prefix:"image"},{uri:"http://www.zorba-xquery.com/modules/image/manipulation",prefix:"man"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"add-noise",qname:"man:add-noise",signature:"($image as xs:base64Binary, $noise-type as xs:string) as xs:base64Binary",description:' Add noise to an image.\n Allowed noise types are:\n \n',summary:"

Add noise to an image.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"noise-type",type:"xs:string",occurrence:null,description:'
specifies the type of noise to add
'}],returns:{type:"xs:base64Binary",description:"A copy of $image with added noise"},errors:['ierr:IM001 passed image is invalid','err:FORG0001 unsupported noise type']},{isDocumented:!0,arity:3,name:"blur",qname:"man:blur",signature:"($image as xs:base64Binary, $radius as xs:int, $sigma as xs:int) as xs:base64Binary external",description:" Blur an image.\n",summary:"

Blur an image.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"radius",type:"xs:int",occurrence:null,description:'
is the radius of the Gaussian in pixels.
'},{name:"sigma",type:"xs:int",occurrence:null,description:'
is the standard deviation of the Laplacian in pixels.
'}],returns:{type:"xs:base64Binary",description:"A blured copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:3,name:"charcoal",qname:"man:charcoal",signature:"($image as xs:base64Binary, $radius as xs:double, $sigma as xs:double) as xs:base64Binary external",description:" Apply a charcoal effect to the image (looks like a charcoal sketch).\n",summary:"

Apply a charcoal effect to the image (looks like a charcoal sketch).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"radius",type:"xs:double",occurrence:null,description:'
radius of the Gaussian in pixels
'},{name:"sigma",type:"xs:double",occurrence:null,description:'
standard deviation of the Laplacian in pixels
'}],returns:{type:"xs:base64Binary",description:"A charcoaled copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:3,name:"chop",qname:"man:chop",signature:"($image as xs:base64Binary, $upper-left-x as xs:unsignedInt, $upper-left-y as xs:unsignedInt) as xs:base64Binary external",description:" Copy a part of a source image as new image.\n The copied part is all right of $upper-left-x and below $upper-left-y.\n",summary:"

Copy a part of a source image as new image.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
source image
'},{name:"upper-left-x",type:"xs:unsignedInt",occurrence:null,description:'
x position of the upper left corner of the part to copy
'},{name:"upper-left-y",type:"xs:unsignedInt",occurrence:null,description:'
y position of the upper left corner of the part to copy
'}],returns:{type:"xs:base64Binary",description:"A new image copied from a part of source image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"contrast",qname:"man:contrast",signature:"($image as xs:base64Binary, $sharpen as xs:double) as xs:base64Binary external",description:" Contrast an image (enhances image intensity differences) by a given value.\n",summary:"

Contrast an image (enhances image intensity differences) by a given value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"sharpen",type:"xs:double",occurrence:null,description:'
defines how much the image is contrasted.
'}],returns:{type:"xs:base64Binary",description:"A contrasted copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:3,name:"crop",qname:"man:crop",signature:"($image as xs:base64Binary, $lower-right-x as xs:unsignedInt, $lower-right-y as xs:unsignedInt) as xs:base64Binary external",description:" Copy a part of a source image as new image.\n The copied part is all left of $lower-right-x and above $lower-right-y.\n",summary:"

Copy a part of a source image as new image.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
source image
'},{name:"lower-right-x",type:"xs:unsignedInt",occurrence:null,description:'
x position of the lower right corner of the part to copy
'},{name:"lower-right-y",type:"xs:unsignedInt",occurrence:null,description:'
y position of the lower right corner of the part to copy
'}],returns:{type:"xs:base64Binary",description:"A new image copied from a part of source image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:1,name:"despeckle",qname:"man:despeckle",signature:"($image as xs:base64Binary) as xs:base64Binary external",description:" Despeckle an image.\n",summary:"

Despeckle an image.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'}],returns:{type:"xs:base64Binary",description:"A despeckled copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"edge",qname:"man:edge",signature:"($image as xs:base64Binary, $radius as xs:unsignedInt) as xs:base64Binary external",description:" Highlight edges in an image.\n",summary:"

Highlight edges in an image.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"radius",type:"xs:unsignedInt",occurrence:null,description:'
radius of the pixel neighborhood (0 for automatic selection)
'}],returns:{type:"xs:base64Binary",description:"An edged copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:3,name:"emboss",qname:"man:emboss",signature:"($image as xs:base64Binary, $radius as xs:double, $sigma as xs:double) as xs:base64Binary external",description:" Emboss an images (highlights edges with 3D effect).\n",summary:"

Emboss an images (highlights edges with 3D effect).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"radius",type:"xs:double",occurrence:null,description:'
radius of the Gaussian in pixels
'},{name:"sigma",type:"xs:double",occurrence:null,description:'
standard deviation of the Laplacian in pixels
'}],returns:{type:"xs:base64Binary",description:"An embossed copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:1,name:"enhance",qname:"man:enhance",signature:"($image as xs:base64Binary) as xs:base64Binary external",description:" Enhance an images (minimizes noise).\n",summary:"

Enhance an images (minimizes noise).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'}],returns:{type:"xs:base64Binary",description:"An enhanced copy of $image."},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:1,name:"equalize",qname:"man:equalize",signature:"($image as xs:base64Binary) as xs:base64Binary external",description:" Equalize an images (histogramm equalization).\n",summary:"

Equalize an images (histogramm equalization).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'}],returns:{type:"xs:base64Binary",description:"An equalized copy of $image."},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:1,name:"erase",qname:"man:erase",signature:"($image as xs:base64Binary) as xs:base64Binary external",description:" Set all pixels of the image to the current backround color.\n In most cases, this will result in all pixels to be set to white.\n",summary:"

Set all pixels of the image to the current backround color.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
image to erase
'}],returns:{type:"xs:base64Binary",description:"A copy of image with all pixels set to the current background color"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:1,name:"flip",qname:"man:flip",signature:"($image as xs:base64Binary) as xs:base64Binary external",description:" Flip an image (vertical rotation).\n",summary:"

Flip an image (vertical rotation).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
source image
'}],returns:{type:"xs:base64Binary",description:"A vertically rotated copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:1,name:"flop",qname:"man:flop",signature:"($image as xs:base64Binary) as xs:base64Binary external",description:" Flop an image (horizontal rotation).\n",summary:"

Flop an image (horizontal rotation).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
source image
'}],returns:{type:"xs:base64Binary",description:"A horizontally rotated copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"gamma",qname:"man:gamma",signature:"($image as xs:base64Binary, $gamma-value as xs:double) as xs:base64Binary external",description:" Gamma correct an image.\n Gamma values less than zero will erase the image.\n",summary:"

Gamma correct an image.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"gamma-value",type:"xs:double",occurrence:null,description:'
value for which to gamma correct the image
'}],returns:{type:"xs:base64Binary",description:"A gamma corrected copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:4,name:"gamma",qname:"man:gamma",signature:"($image as xs:base64Binary, $gamma-red as xs:double, $gamma-green as xs:double, $gamma-blue as xs:double) as xs:base64Binary external",description:" Gamma correct an image for every color channel seperately.\n Gamma values less than zero for any color will erase the corresponding color.\n",summary:"

Gamma correct an image for every color channel seperately.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"gamma-red",type:"xs:double",occurrence:null,description:'
value to gamma correct the red channel of the image
'},{name:"gamma-green",type:"xs:double",occurrence:null,description:'
value to gamma correct the green channel of the image
'},{name:"gamma-blue",type:"xs:double",occurrence:null,description:'
value to gamma correct the blue channel of the image
'}],returns:{type:"xs:base64Binary",description:"A gamma corrected copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"implode",qname:"man:implode",signature:"($image as xs:base64Binary, $factor as xs:double) as xs:base64Binary external",description:" Apply an implode effect to an image (a sort of special effect).\n",summary:"

Apply an implode effect to an image (a sort of special effect).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"factor",type:"xs:double",occurrence:null,description:'
factor to implode to
'}],returns:{type:"xs:base64Binary",description:"An imploded copy of $image."},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"oil-paint",qname:"man:oil-paint",signature:"($image as xs:base64Binary, $radius as xs:double) as xs:base64Binary external",description:" Apply an oil paint effect to an image (makes the image look as if it was\n an oil paint).\n",summary:"

Apply an oil paint effect to an image (makes the image look as if it was\n an oil paint).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"radius",type:"xs:double",occurrence:null,description:'
radius with which to oil paint
'}],returns:{type:"xs:base64Binary",description:"A oil-painted copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:5,name:"overlay",qname:"man:overlay",signature:"($image as xs:base64Binary, $overlay-image as xs:base64Binary, $overlay-upper-left-x as xs:unsignedInt, $overlay-upper-left-y as xs:unsignedInt, $operator as xs:string) as xs:base64Binary",description:' Overlay $image with $overlay-image at the specfied position.\n The $operator defines the details of the overlay and can have one of the\n following values:\n \n',summary:"

Overlay $image with $overlay-image at the specfied position.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
base image
'},{name:"overlay-image",type:"xs:base64Binary",occurrence:null,description:'
image to overlay.
'},{name:"overlay-upper-left-x",type:"xs:unsignedInt",occurrence:null,description:'
horizontal position within $image where the left upper edge of the $overlay-image is placed
'},{name:"overlay-upper-left-y",type:"xs:unsignedInt",occurrence:null,description:'
vertical position within $image where the left upper edge of the $overlay-image is placed
'},{name:"operator",type:"xs:string",occurrence:null,description:'
defines how the overlay image should be overlayed (see details in operator listing above)
'}],returns:{type:"xs:base64Binary",description:"A new image consisting of $image overlayed with $overlay-image."},errors:['ierr:IM001 passed image is invalid','err:FORG0001 unsupported operator']},{isDocumented:!0,arity:2,name:"reduce-noise",qname:"man:reduce-noise",signature:"($image as xs:base64Binary, $order as xs:double) as xs:base64Binary external",description:" Reduce noise of an image using a noise peak elemination filter.\n",summary:"

Reduce noise of an image using a noise peak elemination filter.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"order",type:"xs:double",occurrence:null,description:'
defines how much the noise is reduced
'}],returns:{type:"xs:base64Binary",description:"A copy of $image with reduced noise"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:3,name:"resize",qname:"man:resize",signature:"($image as xs:base64Binary, $width as xs:unsignedInt, $height as xs:unsignedInt) as xs:base64Binary external",description:" Get a copy of the passed image with changed width and height (without\n zooming the image's content).\n To change the size of the actual contents of an image, use the zoom function.\n More in detail: If the new dimensions are greater than the current dimensions\n the new image will have the passed image in the upper left corner and the rest\n will be filled with the current background color.\n If the passed dimensions are less than the current dimensions, the new image\n will contain the specified rectangle of the passed image beginning at the upper\n left corner.\n",summary:"

Get a copy of the passed image with changed width and height (without\n zooming the image's content).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
image to resize
'},{name:"width",type:"xs:unsignedInt",occurrence:null,description:'
new width
'},{name:"height",type:"xs:unsignedInt",occurrence:null,description:'
new height
'}],returns:{type:"xs:base64Binary",description:"resized copy of the source image"},errors:['ierr:IM001 passed image is invalid.']},{isDocumented:!0,arity:2,name:"rotate",qname:"man:rotate",signature:"($image as xs:base64Binary, $angle as xs:int) as xs:base64Binary external",description:" Get a new image as rotated copy of a passed source image (rotated by -360 to\n 360 degrees).\n The image is enlarged if this is required for containing the rotated image,\n but never shrunk even if the rotation would make a smaller image possible.\n",summary:"

Get a new image as rotated copy of a passed source image (rotated by -360 to\n 360 degrees).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
source image.
'},{name:"angle",type:"xs:int",occurrence:null,description:'
between -360 to 360 degrees. Other values will be adjusted by modulo 360
'}],returns:{type:"xs:base64Binary",description:"A rotated copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"solarize",qname:"man:solarize",signature:"($image as xs:base64Binary, $factor as xs:double) as xs:base64Binary external",description:" Apply a solarize effect to the image (similar to the effect seen when\n exposing a photographic film to light during the development process).\n",summary:"

Apply a solarize effect to the image (similar to the effect seen when\n exposing a photographic film to light during the development process).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"factor",type:"xs:double",occurrence:null,description:'
strength of the solarization (0 to 65535; 65535=100%)
'}],returns:{type:"xs:base64Binary",description:"A solarized copy of $image."},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"stereo",qname:"man:stereo",signature:"($left-image as xs:base64Binary, $right-image as xs:base64Binary) as xs:base64Binary external",description:" Make two passed images appear as stereo image when viewed with red-blue glasses.\n Both images should be same but from a slightly different angle for this to work.\n Both images should have the same size, if not, the size of the left image will\n be taken.\n",summary:"

Make two passed images appear as stereo image when viewed with red-blue glasses.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"left-image",type:"xs:base64Binary",occurrence:null,description:'
left image for the stereo image.
'},{name:"right-image",type:"xs:base64Binary",occurrence:null,description:'
right image for the stereo image.
'}],returns:{type:"xs:base64Binary",description:"A new image as combined stereo image of both source images"},errors:['ierr:IM001 one of the passed images is invalid']},{isDocumented:!0,arity:5,name:"sub-image",qname:"man:sub-image",signature:"($image as xs:base64Binary, $left-upper-x as xs:unsignedInt, $left-upper-y as xs:unsignedInt, $width as xs:unsignedInt, $height as xs:unsignedInt) as xs:base64Binary external",description:" Copy a part of the source image specified by a rectangle.\n If the passed parameters for the sub-image specify a rectangle that isn't\n entirely within the source image only the area that lies within the image\n boundaries will be returned.\n",summary:"

Copy a part of the source image specified by a rectangle.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the image from which to extract a sub-image
'},{name:"left-upper-x",type:"xs:unsignedInt",occurrence:null,description:'
is the x value of the upper left corner of the rectangle to cut out
'},{name:"left-upper-y",type:"xs:unsignedInt",occurrence:null,description:'
is the y value of the upper left corner of the rectangle to cut out.
'},{name:"width",type:"xs:unsignedInt",occurrence:null,description:'
width of the rectangle to cut out
'},{name:"height",type:"xs:unsignedInt",occurrence:null,description:'
height of the rectangle to cut out
'}],returns:{type:"xs:base64Binary",description:"A new image containing parts of the source image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"swirl",qname:"man:swirl",signature:"($image as xs:base64Binary, $degree as xs:double) as xs:base64Binary external",description:" Swirl an image (image pixels are rotated by degree).\n",summary:"

Swirl an image (image pixels are rotated by degree).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"degree",type:"xs:double",occurrence:null,description:'
degree to swirl image pixels
'}],returns:{type:"xs:base64Binary",description:"A swirled copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"transparent",qname:"man:transparent",signature:"($image as xs:base64Binary, $color as xs:string) as xs:base64Binary",description:" Make all pixels of the specfied color transparent.\n This works correctly only with image types supporting transparency\n (e.g GIF or PNG).\n",summary:"

Make all pixels of the specfied color transparent.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"color",type:"xs:string",occurrence:null,description:"
color to make transparent (e.g. '#FFFFFF')
"}],returns:{type:"xs:base64Binary",description:"A copy of $image with the specified color made transparent."},errors:['ierr:IM001 passed image is invalid','err:FORG0001 unsupported color']},{isDocumented:!0,arity:1,name:"trim",qname:"man:trim",signature:"($image as xs:base64Binary) as xs:base64Binary external",description:" Trim edges of the image's background color from the image.\n",summary:"

Trim edges of the image's background color from the image.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'}],returns:{type:"xs:base64Binary",description:"A trimmed copy of $image"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"watermark",qname:"man:watermark",signature:"($image as xs:base64Binary, $watermark as xs:base64Binary) as xs:base64Binary external",description:" Add a $watermark image to $image.\n",summary:"

Add a $watermark image to $image.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
the source image
'},{name:"watermark",type:"xs:base64Binary",occurrence:null,description:'
the watermark image
'}],returns:{type:"xs:base64Binary",description:"A watermarked copy of $image"},errors:['ierr:IM001 one of the passed images is invalid']},{isDocumented:!0,arity:2,name:"zoom-by-height",qname:"man:zoom-by-height",signature:"($image as xs:base64Binary, $height as xs:unsignedInt) as xs:base64Binary external",description:" Zoom the passed image to a given new height while keeping the ratio between\n width and height.\n So, the width is scaled accordingly.\n Important note: this function does not change the size information stored\n in the image (e.g. basic:width will not show a different value).\n",summary:"

Zoom the passed image to a given new height while keeping the ratio between\n width and height.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
image to resize
'},{name:"height",type:"xs:unsignedInt",occurrence:null,description:'
new height for the image in pixels
'}],returns:{type:"xs:base64Binary",description:"A copy of $image with given $height and width adjusted accordingly"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"zoom-by-width",qname:"man:zoom-by-width",signature:"($image as xs:base64Binary, $width as xs:unsignedInt) as xs:base64Binary external",description:" Zoom the passed image to a given new width while keeping the ratio between\n width and height.\n So, the height is scaled accordingly.\n Important note: this function does not change the size information stored\n in the image (e.g. basic:width will not show a different value).\n",summary:"

Zoom the passed image to a given new width while keeping the ratio between\n width and height.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
image to resize
'},{name:"width",type:"xs:unsignedInt",occurrence:null,description:'
new width for the image in pixels
'}],returns:{type:"xs:base64Binary",description:"A copy of $image with given $width and height changed accordingly"},errors:['ierr:IM001 passed image is invalid']},{isDocumented:!0,arity:2,name:"zoom",qname:"man:zoom",signature:"($image as xs:base64Binary, $ratio as xs:double) as xs:base64Binary external",description:" Zoom the passed image by the specified factor while keeping the ratio between\n width and height.\n A ratio of less than 1 will make the image smaller.\n A ratio of less or equal than 0 will not effect the image.\n Important note: this function does not change the size information stored in the\n image (e.g. basic:width will not show a different value).\n",summary:"

Zoom the passed image by the specified factor while keeping the ratio between\n width and height.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"image",type:"xs:base64Binary",occurrence:null,description:'
image to resize
'},{name:"ratio",type:"xs:double",occurrence:null,description:'
ratio to zoom width and height by
'}],returns:{type:"xs:base64Binary",description:"A copy of $image with resized content"},errors:['ierr:IM001 passed image is invalid']}],variables:[]},"http://zorba.io/modules/http-client-wrapper":{ns:"http://zorba.io/modules/http-client-wrapper",description:'

This module provides conversion functions between the\n XML Expath http-client request and response formats and the\n JSON http-client request and response formats used by the\n http://zorba.io/modules/http-client module.\n

\n

This module is reserved for internal use by the\n http://www.zorba-xquery.com/modules/http-client and the\n http://expath.org/ns/http-client modules.\n This module may be removed at any time. Method signature and\n semantics may change.\n

\n',sees:[],authors:['Federico Cavalieri'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://expath.org/ns/error",prefix:"error"},{uri:"http://expath.org/ns/http-client",prefix:"http-schema"},{uri:"http://zorba.io/modules/http-client-wrapper",prefix:"http-wrapper"},{uri:"http://jsoniq.org/functions",prefix:"jn"},{uri:"http://zorba.io/modules/http-client",prefix:"json-http"},{uri:"http://jsoniq.org/function-library",prefix:"libjn"},{uri:"http://www.w3.org/2010/xslt-xquery-serialization",prefix:"ser"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:3,name:"http-nondeterministic-request",qname:"http-wrapper:http-nondeterministic-request",signature:"($request as element(*)?, $href as xs:string?, $bodies as item()*) as item()+",description:'

This function sends an HTTP request and returns the corresponding response.\n This function is declared non-deterministic and should only be used to issue\n requests which do not change the state of the server.

\n

Its inputs, outputs, and behavior are identical to the\n EXPath http-client\'s\n send-request() function (except that HTML responses are not tidied\n into XML - see the note above). It\n is provided here for use in Zorba installations that do not have\n the EXPath module available. If you have the option of using the\n EXPath module instead of this function, please do so, as it will\n allow your application to be more interoperable between different\n XQuery engines.

\n

Full documentation of the $request parameter can be found in\n the EXPath\n specification.

\n',summary:"

This function sends an HTTP request and returns the corresponding response.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"request",type:"element(*)",occurrence:"?",description:'
Contains the various parameters of the request (see above).
'},{name:"href",type:"xs:string",occurrence:"?",description:'
The URL to which the request will be made (see note above). If this parameter is specified, it will override the "href" attribute of $request.
'},{name:"bodies",type:"item()",occurrence:"*",description:'
is the request body content, for HTTP methods that can contain a body in the request (i.e. POST and PUT). It is an error if this param is not the empty sequence for methods
'}],returns:{type:"item()+",description:'standard http-client return type.'},errors:['error:HC001 An HTTP error occurred.','error:HC002 Error parsing the response content as XML.','error:HC003 With a multipart response, the override-media-type must be either a multipart media type or application/octet-stream.','error:HC004 The src attribute on the body element is mutually exclusive with all other attribute (except the media-type).','error:HC005 The input request element is not valid.','error:HC006 A timeout occurred waiting for the response.','error:HCV02 Trying to follow a redirect of a POST, PUT, or DELETE request']},{isDocumented:!0,arity:3,name:"http-sequential-request",qname:"http-wrapper:http-sequential-request",signature:"($request as element(*)?, $href as xs:string?, $bodies as item()*) as item()+",description:'

This function sends an HTTP request and returns the corresponding response.\n This function is declared sequential and can be used to issue\n requests which change the state of the server.

\n

Its inputs, outputs, and behavior are identical to the\n EXPath http-client\'s\n send-request() function (except that HTML responses are not tidied\n into XML - see the note above). It\n is provided here for use in Zorba installations that do not have\n the EXPath module available. If you have the option of using the\n EXPath module instead of this function, please do so, as it will\n allow your application to be more interoperable between different\n XQuery engines.

\n

Full documentation of the $request parameter can be found in\n the EXPath\n specification.

\n',summary:"

This function sends an HTTP request and returns the corresponding response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"request",type:"element(*)",occurrence:"?",description:'
Contains the various parameters of the request (see above).
'},{name:"href",type:"xs:string",occurrence:"?",description:'
The URL to which the request will be made (see note above). If this parameter is specified, it will override the "href" attribute of $request.
'},{name:"bodies",type:"item()",occurrence:"*",description:'
is the request body content, for HTTP methods that can contain a body in the request (i.e. POST and PUT). It is an error if this param is not the empty sequence for methods
'}],returns:{type:"item()+",description:'standard http-client return type.'},errors:['error:HC001 An HTTP error occurred.','error:HC002 Error parsing the response content as XML.','error:HC003 With a multipart response, the override-media-type must be either a multipart media type or application/octet-stream.','error:HC004 The src attribute on the body element is mutually exclusive with all other attribute (except the media-type).','error:HC005 The input request element is not valid.','error:HC006 A timeout occurred waiting for the response.','error:HCV02 Trying to follow a redirect of a POST, PUT, or DELETE request']}],variables:[]},"http://www.28msec.com/modules/cloudsearch":{ns:"http://www.28msec.com/modules/cloudsearch",description:'

This module offers functionality to search, add, update and remove documents in\n an Amazon CloudSearch domain.

\n

For each functionality two methods are provided\n

\n

\n

Important Notice Regarding Function Determinism

\n

The search functions (search#1 and\n search#2) are declared deterministic, which means that\n their results could be cached when invoked multiple times with the same arguments\n in the same query execution.

\n

To not use cached results you can use two alternative search functions\n (search-nondeterministic#1 and\n search-nondeterministic#2), which have\n been declared as being non deterministic.

\n

Search options

\n

The search settings are specified by means of an object whose form\n is described in the following. The two most important fields are the\n "q" and "bq" fields. At least one of them must be specified. If the "bq"\n field is specified in conjunction with the "q" parameter, the values\n are joined with a top-level AND.\n

\n

\n

Additional documentation on the format of the query and boolean query strings can\n be found at:\n \n Expression Syntax for Boolean Queries.

\n

The following additional optional parameters can be specified.\n

\n For additional details on the search parameters you can refer to the\n \n Amazon CloudSearch search requests documentation.

\n

Search Results

\n

The format of the returned object is the following:\n

\n {\n   "rank" : "-text_relevance",\n   "match-expr" : "(label \'star wars\')",\n   "hits" :\n   {\n     "found" : 2,\n     "start" : 0,\n     "hit" :\n     [\n       {\n         "id" : "tt1185834",\n         "data" :\n         {\n           "actor" : ["Abercrombie, Ian","Baker, Dee","Burton, Corey"],\n           "title" : ["Star Wars: The Clone Wars"]\n         }\n       },\n       {\n         "id" :"tt0121766",\n         "data" :\n         {\n           "actor" : ["Bai, Ling","Bryant, Gene","Castle-Hughes, Keisha"],\n           "title" : ["Star Wars: Episode III - Revenge of the Sith"]\n         }\n       }\n     ]\n   },\n   "info" :\n   {\n     "rid" : "b7c167f6c2da6d93531b9a7b314ad030b3a74803b4b7797edb905ba5a6a08",\n     "time-ms" : 2,\n     "cpu-time-ms" : 0\n   }\n }\n 
\n

\n

The returned object fields have the following meaning:\n

\n

\n',sees:[],authors:['Federico Cavalieri'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.28msec.com/modules/cloudsearch",prefix:"cloudsearch"},{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://zorba.io/modules/http-client",prefix:"http"}],functions:[{isDocumented:!0,arity:1,name:"add-document",qname:"cloudsearch:add-document",signature:"($options as object()) as object()",description:'

Adds or replaces a document in the default Amazon CloudSearch domain.

\n

An add operation is applied only if a document with the same id is not\n present or if the version number specified in the operation is greater than\n the existing document\'s version number.

\n

The document to add or replace is specified through an object with\n the following form:\n

\n {\n   "id" : "tt0484562",\n   "version" : 1,\n   "lang" : "en",\n   "fields" :\n   {\n     "title" : "The Seeker: The Dark Is Rising",\n     "genre" : ["Adventure","Drama","Fantasy","Thriller"]\n   }\n }\n 
\n

\n

Specifically, the fields in the request object have the following meaning:\n

\n

\n

The returned object lists all warnings that were generated.\n

\n {\n   "status" : "success",\n   "warning" :\n   [\n     {"message" : "Warning message."}\n   ]\n }\n 
\n

\n

Specifically, the fields in the response object have the following meaning:\n

\n

\n

Example, specifying endpoint URI:\n

\n cloudsearch:add-document(\n anyURI("http://doc-movies-h2pc7ftfnsdlqh6pqqawbftrhu.us-east-1.cloudsearch.amazonaws.com"),\n {\n   "id" : "tt0484562",\n   "version" : 1,\n   "lang" : "en",\n   "fields" :\n   {\n     "title" : "The Seeker: The Dark Is Rising",\n     "genre" : ["Adventure","Drama","Fantasy","Thriller"]\n   }\n });\n 
\n

\n

Example, using stored credentials:\n

\n cloudsearch:add-document("movies",\n {\n   "id" : "tt0484562",\n   "version" : 1,\n   "lang" : "en",\n   "fields" :\n   {\n     "title" : "The Seeker: The Dark Is Rising",\n     "genre" : ["Adventure","Drama","Fantasy","Thriller"]\n   }\n });\n 
\n

\n',summary:"

Adds or replaces a document in the default Amazon CloudSearch domain.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"options",type:"object()",occurrence:null,description:'
An object specifying the request options
'}],returns:{type:"object()",description:"The request response"},errors:['cloudsearch:ENDPOINT if the default credentials endpoint is invalid or not present','cloudsearch:AUTHORIZATION if the request was unauthorized','cloudsearch:HTTP if an HTTP error has occurred','cloudsearch:REQUEST if the request is malformed','cloudsearch:RESOURCES if the server storage or bandwidth resources are insufficient to execute the request','cloudsearch:INTERNAL if an internal server error occurred','cloudsearch:RESPONSE if the CloudSearch response cannot be parsed']},{isDocumented:!0,arity:2,name:"add-document",qname:"cloudsearch:add-document",signature:"($endpoint as atomic, $options as object()) as object()",description:'

Adds or replaces a document in the specified Amazon CloudSearch domain.

\n

An add operation is applied only if a document with the same id is not\n present or if the version number specified in the operation is greater than\n the existing document\'s version number.

\n

The document to add or replace is specified through an object with\n the following form:\n

\n {\n   "id" : "tt0484562",\n   "version" : 1,\n   "lang" : "en",\n   "fields" :\n   {\n     "title" : "The Seeker: The Dark Is Rising",\n     "genre" : ["Adventure","Drama","Fantasy","Thriller"]\n   }\n }\n 
\n

\n

Specifically, the fields in the request object have the following meaning:\n

\n

\n

The returned object lists all warnings that were generated.\n

\n {\n   "status" : "success",\n   "warning" :\n   [\n     {"message" : "Warning message."}\n   ]\n }\n 
\n

\n

Specifically, the fields in the response object have the following meaning:\n

\n

\n

Example, specifying endpoint URI:\n

\n cloudsearch:add-document(\n anyURI("http://doc-movies-h2pc7ftfnsdlqh6pqqawbftrhu.us-east-1.cloudsearch.amazonaws.com"),\n {\n   "id" : "tt0484562",\n   "version" : 1,\n   "lang" : "en",\n   "fields" :\n   {\n     "title" : "The Seeker: The Dark Is Rising",\n     "genre" : ["Adventure","Drama","Fantasy","Thriller"]\n   }\n });\n 
\n

\n

Example, using stored credentials:\n

\n cloudsearch:add-document("movies",\n {\n   "id" : "tt0484562",\n   "version" : 1,\n   "lang" : "en",\n   "fields" :\n   {\n     "title" : "The Seeker: The Dark Is Rising",\n     "genre" : ["Adventure","Drama","Fantasy","Thriller"]\n   }\n });\n 
\n

\n',summary:"

Adds or replaces a document in the specified Amazon CloudSearch domain.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint",type:"atomic",occurrence:null,description:'
The endpoint URI or the name of a stored CloudSearch credentials
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying the request options
'}],returns:{type:"object()",description:"The request response"},errors:['cloudsearch:ENDPOINT if the specified endpoint is invalid','cloudsearch:AUTHORIZATION if the request was unauthorized','cloudsearch:HTTP if an HTTP error has occurred','cloudsearch:REQUEST if the request is malformed','cloudsearch:RESOURCES if the server storage or bandwidth resources are insufficient to execute the request','cloudsearch:INTERNAL if an internal server error occurred','cloudsearch:RESPONSE if the CloudSearch response cannot be parsed']},{isDocumented:!0,arity:1,name:"batch-document",qname:"cloudsearch:batch-document",signature:"($options as array()) as object()",description:'

Adds, replaces or removes one or more documents from the default Amazon\n CloudSearch domain.

\n

An add or delete operation is only applied to an existing document if the\n version number specified in the operation is greater than the existing document\n version number.\n If multiple add or delete operations for the same document are specified, the\n operation with the highest version number is applied. If multiple operations in\n a batch specify the same document and version number, the document service\n arbitrarily picks which one to apply.

\n

The documents to add, replace or delete can be specified through an array with\n the following form:\n

\n [\n   {\n     "type" : "add",\n     "id" :   "tt0484562",\n     "version" : 1,\n     "lang" : "en",\n     "fields" :\n     {\n       "title" : "The Seeker: The Dark Is Rising",\n       "genre" : ["Adventure","Drama","Fantasy","Thriller"],\n     }\n   },\n   {\n     "type" : "delete",\n     "id" :   "tt0484575",\n     "version" : 2\n   }\n ]\n 
\n

\n

Specifically, the fields in the request array have the following meaning:\n

\n

\n

The response body lists any warning that was generated.\n

\n {\n   "status" : "success",\n   "adds" : 1,\n   "deletes: 1,\n   "warning" :\n   [\n     {"message" : "Warning message."}\n   ]\n }\n 
\n

\n

Specifically, the fields in the response object have the following meaning:\n

\n

\n

Example, using specified endpoint URI:\n

\n cloudsearch:batch-document(\n anyURI("http://doc-movies-h2pc7ftfnsdlqh6pqqawbftrhu.us-east-1.cloudsearch.amazonaws.com"),\n [\n   {\n     "type" : "add",\n     "id" :   "tt0484562",\n     "version" : 1,\n     "lang" : "en",\n     "fields" :\n     {\n       "title" : "The Seeker: The Dark Is Rising",\n       "genre" : ["Adventure","Drama","Fantasy","Thriller"],\n     }\n   },\n   {\n     "type" : "delete",\n     "id" :   "tt0484575",\n     "version" : 2\n   }\n ]);\n 
\n

\n

Example, using specified endpoint URI:\n

\n cloudsearch:batch-document("movies",\n [\n   {\n     "type" : "add",\n     "id" :   "tt0484562",\n     "version" : 1,\n     "lang" : "en",\n     "fields" :\n     {\n       "title" : "The Seeker: The Dark Is Rising",\n       "genre" : ["Adventure","Drama","Fantasy","Thriller"],\n     }\n   },\n   {\n     "type" : "delete",\n     "id" :   "tt0484575",\n     "version" : 2\n   }\n ]);\n 
\n

\n',summary:"

Adds, replaces or removes one or more documents from the default Amazon\n CloudSearch domain.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"options",type:"array()",occurrence:null,description:'
An object specifying the request options
'}],returns:{type:"object()",description:"The request response"},errors:['cloudsearch:ENDPOINT if the default credentials endpoint is invalid or not present','cloudsearch:AUTHORIZATION if the request was unauthorized','cloudsearch:HTTP if an HTTP error has occurred','cloudsearch:REQUEST if the request is malformed','cloudsearch:RESOURCES if the server storage or bandwidth resources are insufficient to execute the request','cloudsearch:INTERNAL if an internal server error occurred','cloudsearch:RESPONSE if the CloudSearch response cannot be parsed']},{isDocumented:!0,arity:2,name:"batch-document",qname:"cloudsearch:batch-document",signature:"($endpoint as atomic, $options as array()) as object()",description:'

Adds, replaces or removes one or more documents from the specified Amazon\n CloudSearch domain.

\n

An add or delete operation is only applied to an existing document if the\n version number specified in the operation is greater than the existing document\n version number.\n If multiple add or delete operations for the same document are specified, the\n operation with the highest version number is applied. If multiple operations in\n a batch specify the same document and version number, the document service\n arbitrarily picks which one to apply.

\n

The documents to add, replace or delete can be specified through an array with\n the following form:\n

\n [\n   {\n     "type" : "add",\n     "id" :   "tt0484562",\n     "version" : 1,\n     "lang" : "en",\n     "fields" :\n     {\n       "title" : "The Seeker: The Dark Is Rising",\n       "genre" : ["Adventure","Drama","Fantasy","Thriller"],\n     }\n   },\n   {\n     "type" : "delete",\n     "id" :   "tt0484575",\n     "version" : 2\n   }\n ]\n 
\n

\n

Specifically, the fields in the request array have the following meaning:\n

\n

\n

The response body lists any warning that was generated.\n

\n {\n   "status" : "success",\n   "adds" : 1,\n   "deletes: 1,\n   "warning" :\n   [\n     {"message" : "Warning message."}\n   ]\n }\n 
\n

\n

Specifically, the fields in the response object have the following meaning:\n

\n

\n

Example, using specified endpoint URI:\n

\n cloudsearch:batch-document(\n anyURI("http://doc-movies-h2pc7ftfnsdlqh6pqqawbftrhu.us-east-1.cloudsearch.amazonaws.com"),\n [\n   {\n     "type" : "add",\n     "id" :   "tt0484562",\n     "version" : 1,\n     "lang" : "en",\n     "fields" :\n     {\n       "title" : "The Seeker: The Dark Is Rising",\n       "genre" : ["Adventure","Drama","Fantasy","Thriller"],\n     }\n   },\n   {\n     "type" : "delete",\n     "id" :   "tt0484575",\n     "version" : 2\n   }\n ]);\n 
\n

\n

Example, using specified endpoint URI:\n

\n cloudsearch:batch-document("movies",\n [\n   {\n     "type" : "add",\n     "id" :   "tt0484562",\n     "version" : 1,\n     "lang" : "en",\n     "fields" :\n     {\n       "title" : "The Seeker: The Dark Is Rising",\n       "genre" : ["Adventure","Drama","Fantasy","Thriller"],\n     }\n   },\n   {\n     "type" : "delete",\n     "id" :   "tt0484575",\n     "version" : 2\n   }\n ]);\n 
\n

\n',summary:"

Adds, replaces or removes one or more documents from the specified Amazon\n CloudSearch domain.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint",type:"atomic",occurrence:null,description:'
The endpoint URI or the name of a stored CloudSearch credentials
'},{name:"options",type:"array()",occurrence:null,description:'
An object specifying the request options
'}],returns:{type:"object()",description:"The request response"},errors:['cloudsearch:ENDPOINT if the specified endpoint is invalid','cloudsearch:AUTHORIZATION if the request was unauthorized','cloudsearch:HTTP if an HTTP error has occurred','cloudsearch:REQUEST if the request is malformed','cloudsearch:RESOURCES if the server storage or bandwidth resources are insufficient to execute the request','cloudsearch:INTERNAL if an internal server error occurred','cloudsearch:RESPONSE if the CloudSearch response cannot be parsed']},{isDocumented:!0,arity:1,name:"delete-document",qname:"cloudsearch:delete-document",signature:"($options as object()) as object()",description:'

Deletes a document from the default Amazon CloudSearch domain.

\n

A delete operation is only applied to an existing document if the\n version number specified in the operation is greater than the existing\n document\'s version number.

\n

The document to remove is specified through an object with the\n following form:\n

\n {\n   "id" : "tt0484562",\n   "version" : 2\n }\n 
\n

\n

Specifically, the fields in the request object have the following meaning:\n

\n

\n

The response body lists any warning that was generated.\n

\n {\n   "status" : "success",\n   "warning" :\n   [\n     {"message" : "Warning message."}\n   ]\n }\n 
\n

\n

Specifically, the fields in the response object have the following meaning:\n

\n

\n

Example, using specified endpoint URI:\n

\n cloudsearch:delete-document(\n anyURI("http://doc-movies-h2pc7ftfnsdlqh6pqqawbftrhu.us-east-1.cloudsearch.amazonaws.com"),\n {\n   "id" : "tt0484562",\n   "version" : 2\n });\n 
\n

\n

Example, using specified stored endpoing:\n

\n cloudsearch:delete-document("movies",\n {\n   "id" : "tt0484562",\n   "version" : 2\n });\n 
\n

\n',summary:"

Deletes a document from the default Amazon CloudSearch domain.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"options",type:"object()",occurrence:null,description:'
An object specifying the request options
'}],returns:{type:"object()",description:"The request response"},errors:['cloudsearch:ENDPOINT if the default credentials endpoint is invalid or not present','cloudsearch:AUTHORIZATION if the request was unauthorized','cloudsearch:HTTP if an HTTP error has occurred','cloudsearch:REQUEST if the request is malformed','cloudsearch:RESOURCES if the server storage or bandwidth resources are insufficient to execute the request','cloudsearch:INTERNAL if an internal server error occurred','cloudsearch:RESPONSE if the CloudSearch response cannot be parsed']},{isDocumented:!0,arity:2,name:"delete-document",qname:"cloudsearch:delete-document",signature:"($endpoint as atomic, $options as object()) as object()",description:'

Deletes a document from the specified Amazon CloudSearch domain.

\n

A delete operation is only applied to an existing document if the\n version number specified in the operation is greater than the existing\n document\'s version number.

\n

The document to remove is specified through an object with the\n following form:\n

\n {\n   "id" : "tt0484562",\n   "version" : 2\n }\n 
\n

\n

Specifically, the fields in the request object have the following meaning:\n

\n

\n

The response body lists any warning that was generated.\n

\n {\n   "status" : "success",\n   "warning" :\n   [\n     {"message" : "Warning message."}\n   ]\n }\n 
\n

\n

Specifically, the fields in the response object have the following meaning:\n

\n

\n

Example, using specified endpoint URI:\n

\n cloudsearch:delete-document(\n anyURI("http://doc-movies-h2pc7ftfnsdlqh6pqqawbftrhu.us-east-1.cloudsearch.amazonaws.com"),\n {\n   "id" : "tt0484562",\n   "version" : 2\n });\n 
\n

\n

Example, using specified stored endpoing:\n

\n cloudsearch:delete-document("movies",\n {\n   "id" : "tt0484562",\n   "version" : 2\n });\n 
\n

\n',summary:"

Deletes a document from the specified Amazon CloudSearch domain.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"endpoint",type:"atomic",occurrence:null,description:'
The endpoint URI or the name of a stored CloudSearch credentials
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying the request options
'}],returns:{type:"object()",description:"The request response"},errors:['cloudsearch:ENDPOINT if the specified endpoint is invalid','cloudsearch:AUTHORIZATION if the request was unauthorized','cloudsearch:HTTP if an HTTP error has occurred','cloudsearch:REQUEST if the request is malformed','cloudsearch:RESOURCES if the server storage or bandwidth resources are insufficient to execute the request','cloudsearch:INTERNAL if an internal server error occurred','cloudsearch:RESPONSE if the CloudSearch response cannot be parsed']},{isDocumented:!0,arity:1,name:"search-nondeterministic",qname:"cloudsearch:search-nondeterministic",signature:"($options as object()) as object()",description:'

Searches the documents in the default Amazon CloudSearch domain.

\n

This function has the same semantics as search#1,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Searches the documents in the default Amazon CloudSearch domain.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"options",type:"object()",occurrence:null,description:'
The search options object
'}],returns:{type:"object()",description:'The search results object'},errors:['cloudsearch:ENDPOINT if the default credentials endpoint is invalid or not present','cloudsearch:AUTHORIZATION if the request was unauthorized','cloudsearch:HTTP if an HTTP error has occurred','cloudsearch:REQUEST if the request is malformed','cloudsearch:INTERNAL if an internal server error occurred','cloudsearch:RESPONSE if the CloudSearch response cannot be parsed']},{isDocumented:!0,arity:2,name:"search-nondeterministic",qname:"cloudsearch:search-nondeterministic",signature:"($endpoint as atomic, $options as object()) as object()",description:'

Searches the documents in the specified Amazon CloudSearch domain.

\n

This function has the same semantics as search#2,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Searches the documents in the specified Amazon CloudSearch domain.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"endpoint",type:"atomic",occurrence:null,description:'
The endpoint URI or the name of a stored CloudSearch credentials
'},{name:"options",type:"object()",occurrence:null,description:'
The search options object
'}],returns:{type:"object()",description:'The search results object'},errors:['cloudsearch:ENDPOINT if the specified endpoint is invalid','cloudsearch:AUTHORIZATION if the request was unauthorized','cloudsearch:HTTP if an HTTP error has occurred','cloudsearch:REQUEST if the request is malformed','cloudsearch:INTERNAL if an internal server error occurred','cloudsearch:RESPONSE if the CloudSearch response cannot be parsed']},{isDocumented:!0,arity:1,name:"search",qname:"cloudsearch:search",signature:"($options as object()) as object()",description:'

Searches the documents in the default Amazon CloudSearch domain.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The format of the search options object and\n of the search results object is documented in\n the module introduction.

\n

Example:\n

\n cloudsearch:search({"q" : "star+wars", "return-fields" : "title"})\n 
\n

\n

Example returned object:\n

\n {\n   "rank" : "-text_relevance",\n   "match-expr" : "(label \'star wars\')",\n   "hits" :\n   {\n     "found" : 2,\n     "start" : 0,\n     "hit" :\n     [\n       {\n         "id" : "tt1185834",\n         "data" :\n         {\n           "actor" : ["Abercrombie, Ian","Baker, Dee","Burton, Corey"],\n           "title" : ["Star Wars: The Clone Wars"]\n         }\n       },\n       {\n         "id" :"tt0121766",\n         "data" :\n         {\n           "actor" : ["Bai, Ling","Bryant, Gene","Castle-Hughes, Keisha"],\n           "title" : ["Star Wars: Episode III - Revenge of the Sith"]\n         }\n       }\n     ]\n   },\n   "info" :\n   {\n     "rid" : "b7c167f6c2da6d93531b9a7b314ad030b3a74803b4b7797edb905ba5a6a08",\n     "time-ms" : 2,\n     "cpu-time-ms" : 0\n   }\n }\n 
\n

\n',summary:"

Searches the documents in the default Amazon CloudSearch domain.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"options",type:"object()",occurrence:null,description:'
The search options object
'}],returns:{type:"object()",description:'The search results object'},errors:['cloudsearch:ENDPOINT if the default credentials endpoint is invalid or not present','cloudsearch:AUTHORIZATION if the request was unauthorized','cloudsearch:HTTP if an HTTP error has occurred','cloudsearch:REQUEST if the request is malformed','cloudsearch:INTERNAL if an internal server error occurred','cloudsearch:RESPONSE if the CloudSearch response cannot be parsed']},{isDocumented:!0,arity:2,name:"search",qname:"cloudsearch:search",signature:"($endpoint as atomic, $options as object()) as object()",description:'

Searches the documents in the specified Amazon CloudSearch domain.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The format of the search options object and\n of the search results object is documented in\n the module introduction.

\n

The following examples performs a simple text search for all documents\n containing both the word "star" and "trek" and returns the matching document\n title field.

\n

Example, using specified endpoint URI:\n

\n cloudsearch:search(\n anyURI("http://doc-movies-h2pc7ftfnsdlqh6pqqawbftrhu.us-east-1.cloudsearch.amazonaws.com"),\n {"q" : "star+wars", "return-fields" : "title"})\n 
\n

\n

Example, using a stored endpoint:\n

\n cloudsearch:search("movies",\n {"q" : "star+wars", "return-fields" : "title"})\n 
\n

\n',summary:"

Searches the documents in the specified Amazon CloudSearch domain.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"endpoint",type:"atomic",occurrence:null,description:'
The endpoint URI or the name of a stored CloudSearch credentials
'},{name:"options",type:"object()",occurrence:null,description:'
The search options object
'}],returns:{type:"object()",description:'The search results object'},errors:['cloudsearch:ENDPOINT if the specified endpoint is invalid','cloudsearch:AUTHORIZATION if the request was unauthorized','cloudsearch:HTTP if an HTTP error has occurred','cloudsearch:REQUEST if the request is malformed','cloudsearch:INTERNAL if an internal server error occurred','cloudsearch:RESPONSE if the CloudSearch response cannot be parsed']}],variables:[]},"http://zorba.io/modules/store/static/indexes/ddl":{ns:"http://zorba.io/modules/store/static/indexes/ddl",description:' This modules defines a set of functions for managing indexes that are\n declared in the prolog of a module.\n

\n This module is part of\n Zorba\'s XQuery Data Definition Facility.\n All the indexes managed by this module have to be pre-declared in the prolog\n of a module.\n Please refer to the\n general documentation\n for more information and examples.\n',sees:['Data Lifecycle','XQuery Data Definition Facility','http://zorba.io/modules/store/static/indexes/dml','http://zorba.io/modules/store/static/collections/dml','http://zorba.io/modules/store/static/collections/ddl','http://zorba.io/modules/store/static/integrity-constraints/ddl','http://zorba.io/modules/store/static/integrity-constraints/dml','http://zorba.io/errors'],authors:['Nicolae Brinza, Matthias Brantner, David Graf, Till Westmann, Markos Zaharioudakis'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/store/static/indexes/ddl",prefix:"iddl"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:0,name:"available-indexes",qname:"iddl:available-indexes",signature:"() as xs:QName* external",description:" Gets the available indexes.\n",summary:"

Gets the available indexes.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence of QNames, one for each available index, or an empty sequence if none are."},errors:[]},{isDocumented:!0,arity:1,name:"create",qname:"iddl:create",signature:"($name as xs:QName) external",description:" Creates an index.\n",summary:"

Creates an index.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the index to create.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, creates the index with the given name."},errors:['zerr:ZDDY0021 if $name is not equal to the name of any resource in the statically known indexes.','zerr:ZDDY0022 if an index with $name already exists.']},{isDocumented:!0,arity:0,name:"declared-indexes",qname:"iddl:declared-indexes",signature:"() as xs:QName* external",description:" Gets a sequence of QNames representing the indexes that have been declared\n in the prolog of the static context.\n",summary:"

Gets a sequence of QNames representing the indexes that have been declared\n in the prolog of the static context.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence of QNames, one for each created collection, or an emtpy sequence."},errors:[]},{isDocumented:!0,arity:1,name:"delete",qname:"iddl:delete",signature:"($name as xs:QName) external",description:" Deletes an index.\n",summary:"

Deletes an index.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the index to delete.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, deletes the index with the given name."},errors:['zerr:ZDDY0009 if the index does not exist.']},{isDocumented:!0,arity:1,name:"is-available-index",qname:"iddl:is-available-index",signature:"($name as xs:QName) as xs:boolean external",description:" Gets whether an index exists.\n",summary:"

Gets whether an index exists.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the index that is being checked.
'}],returns:{type:"xs:boolean",description:"true if the index is available; false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"is-declared-index",qname:"iddl:is-declared-index",signature:"($name as xs:QName) as xs:boolean external",description:" Gets whether an index has been declared in the prolog of the static context.\n",summary:"

Gets whether an index has been declared in the prolog of the static context.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the index that is being checked.
'}],returns:{type:"xs:boolean",description:"true if the index was declared; false otherwise."},errors:[]}],variables:[]},"http://zorba.io/modules/excel/datetime":{ns:"http://zorba.io/modules/excel/datetime",description:" This is a library module offering the same set of functions\n defined by Microsoft Excel.\n",sees:['Excel Documentation: Datetime Functions'],authors:['Sorin Nasoi'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/excel/datetime",prefix:"excel-datetime"},{uri:"http://zorba.io/modules/excel/errors",prefix:"excel-err"},{uri:"http://zorba.io/modules/excel/text",prefix:"excel-text"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:3,name:"date",qname:"excel-datetime:date",signature:"($year as xs:integer, $month as xs:integer, $day as xs:integer) as xs:date?",description:" Constructs a date given the hours, months and days.\n",summary:"

Constructs a date given the hours, months and days.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"year",type:"xs:integer",occurrence:null,description:'
the year
'},{name:"month",type:"xs:integer",occurrence:null,description:'
the month
'},{name:"day",type:"xs:integer",occurrence:null,description:'
the day
'}],returns:{type:"xs:date?",description:"A date given the hours, months and days"},errors:[]},{isDocumented:!0,arity:1,name:"day",qname:"excel-datetime:day",signature:"($date as xs:date) as xs:integer?",description:" Returns the day of a $date, represented by a serial number.\n",summary:"

Returns the day of a $date, represented by a serial number.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:date",occurrence:null,description:'
the date.
'}],returns:{type:"xs:integer?",description:"The day of a $date, represented by a serial number. The day is given as an integer ranging from 1 to 31."},errors:[]},{isDocumented:!0,arity:2,name:"days360",qname:"excel-datetime:days360",signature:"($start_date as xs:date, $end_date as xs:date) as xs:integer",description:" Returns the number of days between two dates based on a 360-day year.\n",summary:"

Returns the number of days between two dates based on a 360-day year.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"start_date",type:"xs:date",occurrence:null,description:'
the start date.
'},{name:"end_date",type:"xs:date",occurrence:null,description:'
the end date.
'}],returns:{type:"xs:integer",description:'The number of days between two dates based on a 360-day year (twelve 30-day months), which is used in some accounting calculations.

Use this function to help compute payments if your accounting system is based on twelve 30-day months.

The metod used is U.S. (NASD). If the starting date is the last day of a month, it becomes equal to the 30th of the same month.

If the ending date is the last day of a month and the starting date is earlier than the 30th of a month, the ending date becomes equal to the 1st of the next month; otherwise the ending date becomes equal to the 30th of the same month.'},errors:[]},{isDocumented:!0,arity:3,name:"days360",qname:"excel-datetime:days360",signature:"($start_date as xs:date, $end_date as xs:date, $method as xs:boolean) as xs:integer",description:" Returns the number of days between two dates based on a 360-day year.\n",summary:"

Returns the number of days between two dates based on a 360-day year.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"start_date",type:"xs:date",occurrence:null,description:'
the start date.
'},{name:"end_date",type:"xs:date",occurrence:null,description:'
the end date.
'},{name:"method",type:"xs:boolean",occurrence:null,description:'
if false then US/NASD Method is used, otherwise the European Method is used.
'}],returns:{type:"xs:integer",description:'The number of days between two dates based on a 360-day year (twelve 30-day months), which is used in some accounting calculations. Use this function to help compute payments if your accounting system is based on twelve 30-day months.

The European Method (30E/360)

- If either date A or B falls on the 31st of the month, that date will be changed to the 30th;

- Where date B falls on the last day of February, the actual date B will be used.

The US/NASD Method (30US/360)

- If both date A and B fall on the last day of February, then date B will be changed to the 30th.

- If date A falls on the 31st of a month or last day of February, then date A will be changed to the 30th.

- If date A falls on the 30th of a month after applying (2) above and date B falls on the 31st of a month, then date B will be changed to the 30th.'},errors:[]},{isDocumented:!0,arity:1,name:"hour",qname:"excel-datetime:hour",signature:"($time as xs:time) as xs:integer?",description:" Returns the hour of a time value.\n",summary:"

Returns the hour of a time value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"time",type:"xs:time",occurrence:null,description:'
the time.
'}],returns:{type:"xs:integer?",description:"The hour of a time value. The hour is as an integer, ranging from 0 (12:00 A.M.) to 23 (11:00 P.M.)."},errors:[]},{isDocumented:!0,arity:1,name:"minute",qname:"excel-datetime:minute",signature:"($time as xs:time) as xs:integer?",description:" Returns the minutes of a time value.\n",summary:"

Returns the minutes of a time value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"time",type:"xs:time",occurrence:null,description:'
the time.
'}],returns:{type:"xs:integer?",description:"The minutes of a time value. The minute is given as an integer, ranging from 0 to 59."},errors:[]},{isDocumented:!0,arity:1,name:"month",qname:"excel-datetime:month",signature:"($date as xs:date) as xs:integer?",description:" Returns the month of a $date.\n",summary:"

Returns the month of a $date.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:date",occurrence:null,description:'
the date.
'}],returns:{type:"xs:integer?",description:"the month of a $date. The month is given as an integer, ranging from 1 (January) to 12 (December)."},errors:[]},{isDocumented:!0,arity:2,name:"networkdays",qname:"excel-datetime:networkdays",signature:"($start_date as xs:date, $end_date as xs:date) as xs:integer*",description:" Returns the number of whole working days between $start_date and $end_date.\n",summary:"

Returns the number of whole working days between $start_date and $end_date.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"start_date",type:"xs:date",occurrence:null,description:'
the start date.
'},{name:"end_date",type:"xs:date",occurrence:null,description:'
the end date.
'}],returns:{type:"xs:integer*",description:'The number of whole working days between start_date and end_date.

Working days exclude weekends and any dates identified in holidays.

Use NETWORKDAYS to calculate employee benefits that accrue based on the number of days worked during a specific term.'},errors:[]},{isDocumented:!0,arity:3,name:"networkdays",qname:"excel-datetime:networkdays",signature:"($start_date as xs:date, $end_date as xs:date, $holidays as xs:date*) as xs:integer*",description:" Returns the number of whole working days between $start_date and $end_date.\n",summary:"

Returns the number of whole working days between $start_date and $end_date.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"start_date",type:"xs:date",occurrence:null,description:'
the start date.
'},{name:"end_date",type:"xs:date",occurrence:null,description:'
the end date.
'},{name:"holidays",type:"xs:date",occurrence:"*",description:'
one or more dates to exclude from the working calendar, such as state and federal holidays and floating holidays.
'}],returns:{type:"xs:integer*",description:'The number of whole working days between start_date and end_date.

Working days exclude weekends and any dates identified in holidays.

Use NETWORKDAYS to calculate employee benefits that accrue based on the number of days worked during a specific term.'},errors:[]},{isDocumented:!0,arity:0,name:"now",qname:"excel-datetime:now",signature:"() as xs:dateTime?",description:" Returns the current date and time.\n",summary:"

Returns the current date and time.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:dateTime?",description:"The current date and time."},errors:[]},{isDocumented:!0,arity:1,name:"second",qname:"excel-datetime:second",signature:"($time as xs:time) as xs:decimal?",description:" Returns the seconds of a $time value.\n",summary:"

Returns the seconds of a $time value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"time",type:"xs:time",occurrence:null,description:'
the time.
'}],returns:{type:"xs:decimal?",description:"The seconds of a $time value. The second is given as an integer in the range 0 (zero) to 59."},errors:[]},{isDocumented:!0,arity:3,name:"time",qname:"excel-datetime:time",signature:"($hour as xs:integer, $minute as xs:integer, $second as xs:integer) as xs:time?",description:" Constructs a time given the hours, minutes and seconds.\n",summary:"

Constructs a time given the hours, minutes and seconds.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"hour",type:"xs:integer",occurrence:null,description:'
the hour.
'},{name:"minute",type:"xs:integer",occurrence:null,description:'
the minute.
'},{name:"second",type:"xs:integer",occurrence:null,description:'
the second.
'}],returns:{type:"xs:time?",description:"A time given the hours, minutes and seconds."},errors:[]},{isDocumented:!0,arity:0,name:"today",qname:"excel-datetime:today",signature:"() as xs:date?",description:" Returns the current date.\n",summary:"

Returns the current date.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:date?",description:"The current date."},errors:[]},{isDocumented:!0,arity:1,name:"weekday",qname:"excel-datetime:weekday",signature:"($date as xs:date) as xs:integer?",description:" Returns the day of the week corresponding to a $date.\n",summary:"

Returns the day of the week corresponding to a $date.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:date",occurrence:null,description:'
the date.
'}],returns:{type:"xs:integer?",description:"The day of the week corresponding to a $date. The day is given as an integer, ranging from 1 (Sunday) to 7 (Saturday)."},errors:[]},{isDocumented:!0,arity:2,name:"weekday",qname:"excel-datetime:weekday",signature:"($date as xs:date, $return_type as xs:integer) as xs:integer?",description:" Returns the day of the week corresponding to a $date depending on $return_type.\n",summary:"

Returns the day of the week corresponding to a $date depending on $return_type.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:date",occurrence:null,description:'
the date.
'},{name:"return_type",type:"xs:integer",occurrence:null,description:'
1 for Numbers 1 (Sunday) through 7 (Saturday). 2 for Numbers 1 (Monday) through 7 (Sunday). 3 for Numbers 0 (Monday) through 6 (Sunday).
'}],returns:{type:"xs:integer?",description:"The day of the week corresponding to a $date depending on $return_type."},errors:['excel-err:Value if $return_type is outside the range [1,3].']},{isDocumented:!0,arity:1,name:"year",qname:"excel-datetime:year",signature:"($date as xs:date) as xs:integer?",description:" Returns the year corresponding to a date.\n",summary:"

Returns the year corresponding to a date.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:date",occurrence:null,description:'
the date.
'}],returns:{type:"xs:integer?",description:"The year corresponding to a date."},errors:[]}],variables:[]},"http://xbrl.io/modules/bizql/profiles/sec/filings":{ns:"http://xbrl.io/modules/bizql/profiles/sec/filings",description:'

This module provides functionality for querying financial reports (filings)\n submitted to the SEC.

\n

SEC Filings are nothing else than XBRL archives. For XBRL-generic requests on archives,\n use the generic archives module.

\n

With this module, you can access a number of properties of an SEC filing, such as\n its document type. You can also retrieve an SEC filing given an SEC company (or its CIK).

\n

You can also access SEC filings statistics (the number of SEC Networks, of SEC Axes, etc).

\n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"http://xbrl.io/modules/bizql/archives",prefix:"archives"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/companies",prefix:"companies"},{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://zorba.io/modules/datetime",prefix:"datetime"},{uri:"http://xbrl.io/modules/bizql/facts",prefix:"facts"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/filings",prefix:"filings"},{uri:"http://www.28msec.com/modules/mongodb",prefix:"mongo"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/core",prefix:"sec"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"acceptance-dateTimes",qname:"filings:acceptance-dateTimes",signature:"($filings-or-ids as item()*) as dateTime*",description:'

Retrieves the acceptance date of filings.

\n',summary:"

Retrieves the acceptance date of filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:"item()",occurrence:"*",description:'
a sequence of filings or their IDs.
'}],returns:{type:"dateTime*",description:"the acceptance dateTimes."},errors:[]},{isDocumented:!0,arity:1,name:"document-types",qname:"filings:document-types",signature:"($filings-or-ids as item()*) as string?",description:'

Retrieves the document type of the filings.

\n',summary:"

Retrieves the document type of the filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:"item()",occurrence:"*",description:'
a sequence of filings or their ids.
'}],returns:{type:"string?",description:"the document types (10-K, 10-Q)."},errors:[]},{isDocumented:!0,arity:1,name:"filing-dates",qname:"filings:filing-dates",signature:"($filings-or-ids as item()*) as date*",description:'

Retrieves the submission date of filings.

\n',summary:"

Retrieves the submission date of filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:"item()",occurrence:"*",description:'
a sequence of filings or their IDs.
'}],returns:{type:"date*",description:"the submission dates."},errors:[]},{isDocumented:!0,arity:1,name:"filings-for-companies",qname:"filings:filings-for-companies",signature:"($companies-or-ciks as item()*) as object()*",description:'

Return all filings submitted by the supplied companies.

\n',summary:"

Return all filings submitted by the supplied companies.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"companies-or-ciks",type:"item()",occurrence:"*",description:'
arbitrary number of company objects or CIKs.
'}],returns:{type:"object()*",description:"all filings submitted by these companies."},errors:[]},{isDocumented:!0,arity:1,name:"generators",qname:"filings:generators",signature:"($filings-or-ids as item()*) as string*",description:'

Retrieves the generators of filings.

\n',summary:"

Retrieves the generators of filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:"item()",occurrence:"*",description:'
a sequence of filings or their IDs.
'}],returns:{type:"string*",description:"the generators used."},errors:[]},{isDocumented:!0,arity:1,name:"num-abstracts",qname:"filings:num-abstracts",signature:"($filings-or-ids) as integer*",description:" Return the number of (distinct) abstracts in each of the given filings.\n",summary:"

Return the number of (distinct) abstracts in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of abstracts"},errors:[]},{isDocumented:!0,arity:1,name:"num-axes",qname:"filings:num-axes",signature:"($filings-or-ids) as integer*",description:" Return the number of (distinct) axes in each of the given filings.\n",summary:"

Return the number of (distinct) axes in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of axes"},errors:[]},{isDocumented:!0,arity:1,name:"num-concepts",qname:"filings:num-concepts",signature:"($filings-or-ids) as integer*",description:" Return the number of (distinct) concepts in each of the given filings.\n",summary:"

Return the number of (distinct) concepts in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of concepts"},errors:[]},{isDocumented:!0,arity:1,name:"num-extension-abstracts",qname:"filings:num-extension-abstracts",signature:"($filings-or-ids) as integer*",description:" Return the number of extension abstracts in each of the given filings.\n",summary:"

Return the number of extension abstracts in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of abstracts"},errors:[]},{isDocumented:!0,arity:1,name:"num-extension-concepts",qname:"filings:num-extension-concepts",signature:"($filings-or-ids) as integer*",description:" Return the number of extension concepts in each of the given filings.\n",summary:"

Return the number of extension concepts in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of concepts"},errors:[]},{isDocumented:!0,arity:1,name:"num-extension-facts",qname:"filings:num-extension-facts",signature:"($filings-or-ids) as integer*",description:" Return the number of extension facts in each of the given filings.\n",summary:"

Return the number of extension facts in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of facts"},errors:[]},{isDocumented:!0,arity:1,name:"num-facts",qname:"filings:num-facts",signature:"($filings-or-ids) as integer*",description:" Return the number of facts in each of the given filings.\n",summary:"

Return the number of facts in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of facts"},errors:[]},{isDocumented:!0,arity:1,name:"num-footnotes",qname:"filings:num-footnotes",signature:"($filings-or-ids) as integer*",description:" Return the number of footnotes in each of the given filings.\n",summary:"

Return the number of footnotes in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of facts"},errors:[]},{isDocumented:!0,arity:1,name:"num-line-items",qname:"filings:num-line-items",signature:"($filings-or-ids) as integer*",description:" Return the number of (distinct) line items in each of the given filings.\n",summary:"

Return the number of (distinct) line items in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of line items"},errors:[]},{isDocumented:!0,arity:1,name:"num-members",qname:"filings:num-members",signature:"($filings-or-ids) as integer*",description:" Return the number of (distinct) members in each of the given filings.\n",summary:"

Return the number of (distinct) members in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of members"},errors:[]},{isDocumented:!0,arity:1,name:"num-networks",qname:"filings:num-networks",signature:"($filings-or-ids) as integer*",description:" Return the number of networks in each of the given filings.\n",summary:"

Return the number of networks in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of networks"},errors:[]},{isDocumented:!0,arity:1,name:"num-report-elements",qname:"filings:num-report-elements",signature:"($filings-or-ids) as integer*",description:" Return the number of (distinct) report elements in each of the given filings.\n",summary:"

Return the number of (distinct) report elements in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of report elements"},errors:[]},{isDocumented:!0,arity:1,name:"num-tables",qname:"filings:num-tables",signature:"($filings-or-ids) as integer*",description:" Return the number of tables in each of the given filings.\n",summary:"

Return the number of tables in each of the given filings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filings-or-ids",type:null,occurrence:null,description:'
list of filings or IDs
'}],returns:{type:"integer*",description:"the said number of tables"},errors:[]}],variables:[]},"http://zorba.io/modules/string":{ns:"http://zorba.io/modules/string",description:'

This module provides string related functions.

\n

Mostly, the functions in this module provide primitives\n to work with streamable strings. For example, it allows to\n check whether a given string is streamable or seekable.

\n',sees:[],authors:['Matthias Brantner'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/string",prefix:"string"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"analyze-string",qname:"string:analyze-string",signature:"($input as xs:string?, $pattern as xs:string) as array()",description:' Analyzes a string using a regular expression, returning sequence of JSON\n objects that identify which parts of the input string matched or failed to\n match the regular expression; and in the case of matched substrings, which\n substrings matched each capturing group in the regular expression.\n

\n This function behaves like\n fn:analyze-string\n but returns a JSON array rather than an XML element.\n',summary:"

Analyzes a string using a regular expression, returning sequence of JSON\n objects that identify which parts of the input string matched or failed to\n match the regular expression; and in the case of matched substrings, which\n substrings matched each capturing group in the regular expression.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"input",type:"xs:string",occurrence:"?",description:'
The string to analyze. If the empty sequence, the function behaves as if $input were a zero-length string.
'},{name:"pattern",type:"xs:string",occurrence:null,description:'
The regular expression.
'}],returns:{type:"array()",description:'a JSON array of objects where each object contains a single key/value pair. Each key is either match or non-match. For non-match, the value is a string that is the part of $input that did not match; for match, the value is either a string that is the part of $input that matched (when $pattern contains no capturing groups) or an array containing values for both capturing groups and other matches.

Capturing group matches are themselves arrays where the first element is the group number (1-based) and subsequent elements are either a string that is the part of $input that matched or sub-arrays for nested capturing groups.'},errors:[]},{isDocumented:!0,arity:3,name:"analyze-string",qname:"string:analyze-string",signature:"($input as xs:string?, $pattern as xs:string, $flags as xs:string) as array() external",description:' Analyzes a string using a regular expression, returning sequence of JSON\n objects that identify which parts of the input string matched or failed to\n match the regular expression; and in the case of matched substrings, which\n substrings matched each capturing group in the regular expression.\n

\n This function behaves like\n fn:analyze-string\n but returns a JSON array rather than an XML element.\n',summary:"

Analyzes a string using a regular expression, returning sequence of JSON\n objects that identify which parts of the input string matched or failed to\n match the regular expression; and in the case of matched substrings, which\n substrings matched each capturing group in the regular expression.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"input",type:"xs:string",occurrence:"?",description:'
The string to analyze. If the empty sequence, the function behaves as if $input were a zero-length string.
'},{name:"pattern",type:"xs:string",occurrence:null,description:'
The regular expression.
'},{name:"flags",type:"xs:string",occurrence:null,description:'
The argument is interpreted in the same way as for the fn:matches function.
'}],returns:{type:"array()",description:'a JSON array of objects where each object contains a single key/value pair. Each key is either match or non-match. For non-match, the value is a string that is the part of $input that did not match; for match, the value is either a string that is the part of $input that matched (when $pattern contains no capturing groups) or an array containing values for both capturing groups and other matches.

Capturing group matches are themselves arrays where the first element is the group number (1-based) and subsequent elements are either a string that is the part of $input that matched or sub-arrays for nested capturing groups.'},errors:[]},{isDocumented:!0,arity:1,name:"is-seekable",qname:"string:is-seekable",signature:"($s as string) as boolean external",description:'

This function checks whether a given string item is a\n seekable stream string.

\n

For example, a seekable streamable string is returned by the\n file module.

\n',summary:"

This function checks whether a given string item is a\n seekable stream string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"string",occurrence:null,description:'
the string to check
'}],returns:{type:"boolean",description:"true if the given item is a seekable stream string or false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"is-streamable",qname:"string:is-streamable",signature:"($s as string) as boolean external",description:'

This function checks whether a given string item is implemented by a\n streamable string.

\n

A streamable string is produced by some functions of a module.\n It\'s an optimized implementation of an string to handle arbitrary\n sized data. The drawback is that its value can only be consumed once.\n That is, only one function can access the value of a streamable string\n item.

\n',summary:"

This function checks whether a given string item is implemented by a\n streamable string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"string",occurrence:null,description:'
the string to check
'}],returns:{type:"boolean",description:"true if the given item is implemented using a streamable string or false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"materialize",qname:"string:materialize",signature:"($s as string) as string external",description:'

This function materializes a streamable string.

\n

The drawback of a streamable (non-seekable) string is that\n its value can only be consumed once. That is, only one function\n can access the value of a streamable string item.

\n

In order to remedy this situation, this function can be used to\n convert a streamable string into its non-streamable counterpart. As a\n result, the string returned by this function has the same value as its\n input but is materialized and, hence, can be consumed multiple times.

\n',summary:"

This function materializes a streamable string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"string",occurrence:null,description:'
the streamable string item to materialize
'}],returns:{type:"string",description:"a materialized string of its input or the input if the input item was not a streamable string."},errors:[]},{isDocumented:!0,arity:2,name:"split",qname:"string:split",signature:"($s as string, $separator as string) as string* external",description:'

Returns a sequence of strings constructed by splitting the input wherever\n the given separator is found.

\n

The function is different from tokenize. It doesn\'t allow\n the separator to be a regular expression. This restriction allows for more\n performant implementation. Specifically, the function processes\n streamable strings as input in a streamable way which is particularly useful\n to tokenize huge strings.

\n',summary:"

Returns a sequence of strings constructed by splitting the input wherever\n the given separator is found.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"string",occurrence:null,description:'
the input string to split
'},{name:"separator",type:"string",occurrence:null,description:'
the separator used for splitting the input string $s
'}],returns:{type:"string*",description:"a sequence of strings constructed by splitting the input"},errors:[]}],variables:[]},"http://www.28msec.com/modules/store":{ns:"http://www.28msec.com/modules/store",description:" This module provides functions to perform MongoDB query operations\n (i.e. find and aggregate) on the database associated with the\n project.\n

The module is always imported so you don't need to import it explicitly.\n Also, you don't need to fully qualify the function if you want to invoke it.

\n",sees:[],authors:['28msec'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.28msec.com/modules/mongodb/types",prefix:"mongo"},{uri:"http://www.28msec.com/modules/store",prefix:"store"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"aggregate",qname:"store:aggregate",signature:"($collection as string, $pipeline as array()) as object() external",description:' Performs a MongoDB aggregation framework job on the given collection.\n The $pipeline parameter needs to specify a valid aggregation\n framework pipeline. For example,\n
\n  [\n    { $project : {\n       author : 1,\n       tags : 1,\n    } },\n    { $unwind : "$tags" },\n    { $group : {\n       _id : { tags : "$tags" },\n       authors : { $addToSet : "$author" }\n    } }\n ]\n 
\n The function returns the result as one object. The object contains\n the field named "ok" with value 0 if the execution failed or 1 if\n it succeeded. If it succeeded, the result is contained as an array\n in the result field. Otherwise, the errmsg field contains the description\n of the error. For exampl,e\n
\n {\n   "result" : [ ... ],\n   "ok" : 1\n }\n 
\n',summary:"

Performs a MongoDB aggregation framework job on the given collection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"collection",type:"string",occurrence:null,description:'
the name of the collection to execute the job on
'},{name:"pipeline",type:"array()",occurrence:null,description:'
the specification of the pipeline to execute
'}],returns:{type:"object()",description:"an object with the result or the error message."},errors:[]},{isDocumented:!1,arity:1,name:"clear-if",qname:"store:clear-if",signature:"($cond as boolean) as integer",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"cond",type:"boolean",occurrence:null,description:""}],returns:{type:"integer",description:""},errors:[]},{isDocumented:!1,arity:0,name:"clear",qname:"store:clear",signature:"() as integer external",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:"integer",description:""},errors:[]},{isDocumented:!1,arity:1,name:"collection-chunk-specs",qname:"store:collection-chunk-specs",signature:"($name as string) as object()*",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:""}],returns:{type:"object()*",description:""},errors:[]},{isDocumented:!1,arity:2,name:"collection-chunk-specs",qname:"store:collection-chunk-specs",signature:"($name as string, $chunk-size as integer) as object()* external",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:""},{name:"chunk-size",type:"integer",occurrence:null,description:""}],returns:{type:"object()*",description:""},errors:[]},{isDocumented:!1,arity:2,name:"collection-chunk",qname:"store:collection-chunk",signature:"($name as string, $chunk as object()) as item()* external",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"string",occurrence:null,description:""},{name:"chunk",type:"object()",occurrence:null,description:""}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"find",qname:"store:find",signature:"($coll as string, $query as object()) as object()*",description:" Performs a MongoDB query operation on the given collection and\n returns all matches.\n",summary:"

Performs a MongoDB query operation on the given collection and\n returns all matches.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"coll",type:"string",occurrence:null,description:""},{name:"query",type:"object()",occurrence:null,description:'
the query operation to perform
'}],returns:{type:"object()*",description:"all matches returned by the given query operation"},errors:['zerr:ZSTR0009 if the given collection does not exist']},{isDocumented:!0,arity:3,name:"find",qname:"store:find",signature:"($coll as string, $query as object(), $options as object()) as object()* external",description:' Performs a MongoDB query operation on the given collection and\n returns all matches.\n Available options:\n \n',summary:"

Performs a MongoDB query operation on the given collection and\n returns all matches.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"coll",type:"string",occurrence:null,description:'
the name of the collection
'},{name:"query",type:"object()",occurrence:null,description:'
the query operation to perform
'},{name:"options",type:"object()",occurrence:null,description:'
the options for this operation
'}],returns:{type:"object()*",description:"all matches returned by the given query operation"},errors:['zerr:ZSTR0009 if the given collection does not exist']},{isDocumented:!1,arity:1,name:"flush-if",qname:"store:flush-if",signature:"($cond as boolean) as empty-sequence()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"cond",type:"boolean",occurrence:null,description:""}],returns:{type:"empty-sequence()",description:""},errors:[]},{isDocumented:!1,arity:0,name:"flush",qname:"store:flush",signature:"() as empty-sequence() external",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:"empty-sequence()",description:""},errors:[]}],variables:[]},"http://zorba.io/modules/hash":{ns:"http://zorba.io/modules/hash",description:" This module provides functions that perform different hash operations.\n For example, they compute MD5 and various SHA functions on either\n strings or binary. The result is the base64 encoded value of the hash.\n",sees:[],authors:['Gabriel Petrovay, Markus Pilman, Matthias Brantner'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/hash",prefix:"hash"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"hash-binary",qname:"hash:hash-binary",signature:"($value as xs:base64Binary, $alg as xs:string) as xs:base64Binary external",description:" This function computes a hash value of the binary form of the given\n base64Binary item, i.e. the item is base64-decoded before hashing.\n",summary:"

This function computes a hash value of the binary form of the given\n base64Binary item, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:base64Binary",occurrence:null,description:'
The binary item to be hashed.
'},{name:"alg",type:"xs:string",occurrence:null,description:'
The algorithm to use for this hashing operation. Supported algorithms are "md5", "sha1", and "sha256".
'}],returns:{type:"xs:base64Binary",description:"The hash as xs:base64Binary of the provided binary"},errors:['hash:UNSUPPORTED-ALGORITHM if the given hash algorithm is not supported']},{isDocumented:!0,arity:2,name:"hash",qname:"hash:hash",signature:"($value as xs:string, $alg as xs:string) as xs:base64Binary external",description:" This function computes a hash value of the string provided as parameter.\n The function expects the hash algorithm to be used as parameter.\n",summary:"

This function computes a hash value of the string provided as parameter.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:string",occurrence:null,description:'
The string to be hashed.
'},{name:"alg",type:"xs:string",occurrence:null,description:'
The algorithm to use for this hashing operation. Supported algorithms are "md5", "sha1", and "sha256".
'}],returns:{type:"xs:base64Binary",description:"The hash as xs:base64binary of the provided string"},errors:['hash:UNSUPPORTED-ALGORITHM if the given hash algorithm is not supported']},{isDocumented:!0,arity:1,name:"md5-binary",qname:"hash:md5-binary",signature:"($value as xs:base64Binary) as xs:base64Binary",description:" This function computes the MD5 hash value of the binary form of the given\n base64Binary item, i.e. the item is base64-decoded before hashing.\n",summary:"

This function computes the MD5 hash value of the binary form of the given\n base64Binary item, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:base64Binary",occurrence:null,description:'
The binary item to hash.
'}],returns:{type:"xs:base64Binary",description:"The MD5 hash of the provided binary."},errors:[]},{isDocumented:!0,arity:1,name:"md5",qname:"hash:md5",signature:"($value as xs:string) as xs:base64Binary",description:" Computes the MD5 hash of the string provided as parameter.\n",summary:"

Computes the MD5 hash of the string provided as parameter.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:string",occurrence:null,description:'
The string to hash
'}],returns:{type:"xs:base64Binary",description:"The MD5 hash as xs:base64Binary"},errors:[]},{isDocumented:!0,arity:1,name:"sha1-binary",qname:"hash:sha1-binary",signature:"($value as xs:base64Binary) as xs:base64Binary",description:" This function computes the SHA1 hash value of the binary form of the given\n base64Binary item, i.e. the item is base64-decoded before hashing.\n",summary:"

This function computes the SHA1 hash value of the binary form of the given\n base64Binary item, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:base64Binary",occurrence:null,description:'
The binary item to hash.
'}],returns:{type:"xs:base64Binary",description:"The base64 encoded SHA1 hash of the provided binary."},errors:[]},{isDocumented:!0,arity:1,name:"sha1",qname:"hash:sha1",signature:"($value as xs:string) as xs:base64Binary",description:" Computes the SHA1 hash of the string provided as parameter.\n",summary:"

Computes the SHA1 hash of the string provided as parameter.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:string",occurrence:null,description:'
The string to hash.
'}],returns:{type:"xs:base64Binary",description:"The SHA1 hash as xs:base64Binary"},errors:[]}],variables:[]},"http://zorba.io/modules/xsl-fo":{ns:"http://zorba.io/modules/xsl-fo",description:' This module converts XSL-FO documents\n to various formats such as PDF, EPS, PCL, AFP, Text, PNG, Postscript, RTF, and TIFF.\n For instance, the following example converts a simple XSL-FO document to PDF:\n

\n

import module namespace fop = "http://zorba.io/modules/xsl-fo";\n import module namespace file = "http://expath.org/ns/file";\n declare namespace fo = "http://www.w3.org/1999/XSL/Format";\n let $xsl-fo := <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">\n   <fo:layout-master-set>\n     <fo:simple-page-master master-name="my-page">\n       <fo:region-body margin="1in"/>\n     </fo:simple-page-master>\n   </fo:layout-master-set>\n   <fo:page-sequence master-reference="my-page">\n     <fo:flow flow-name="xsl-region-body">\n       <fo:block>Hello, world!</fo:block>\n     </fo:flow>\n   </fo:page-sequence>\n  </fo:root>\n let $pdf := fop:generator($fop:PDF, $xsl-fo)\n return file:write-binary("simple.pdf", $pdf)
\n

\n This module uses Apache-FOP to generate content from an XSL-FO document.\n See the Apache FOP documentation for further information.\n

\n Note for Windows users: On Windows, this module won\'t work out of the box, since\n this module uses Java. But the Java VM dll is not in the system path by default. To make\n this module work, you need to add the directory where the jvm.dll is located to the\n system path. This dll is located at JRE_DIR\\bin\\client. On a standard installation, this would\n be something a path like "C:\\Program Files\\Java\\jre6\\bin\\client".\n',sees:['http://xmlgraphics.apache.org/fop/'],authors:['Markus Pilman'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://www.zorba-xquery.com/modules/util-jvm",prefix:"util-jvm"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/modules/xsl-fo",prefix:"xsl-fo"}],functions:[{isDocumented:!0,arity:2,name:"generator",qname:"xsl-fo:generator",signature:"($output-format as xs:string, $xsl-fo-document as node()) as xs:base64Binary",description:' The generator function takes an XSL-FO document as input and generates output\n in the format given as input.\n The output format can be given as a MIME type - for example "application/pdf"\n - or one of the predefined variables can be used - like $xsl-fo:PDF. Please\n refer to the Apache FOP documentation for\n supported output formats.\n Apache FOP does not support 100% of the XSL-FO standard.\n Please consult the official\n documentation for further information.\n This function tries to find the needed Java libraries itself.

\n On a Mac OS X computer, it should be sufficient to install Apache FOP via Mac\n Ports.

\n On Ubuntu it should be sufficient to install the fop packages via apt-get.

\n On Windows, the classpath needs to be set manually using\n generator#3.

\n This function tries to find the jar files via environment variables. The user can set the\n variable FOP_HOME to the root directory of an Apache FOP distribution. If you have all\n JAR files in the same directory, you can set the environment variable FOP_LIB_DIR to this\n directory.\n',summary:"

The generator function takes an XSL-FO document as input and generates output\n in the format given as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"output-format",type:"xs:string",occurrence:null,description:'
The mime of the output format, to tell Apache FOP which kind of document it should create.
'},{name:"xsl-fo-document",type:"node()",occurrence:null,description:'
The XSL-FO document from which the output should be generated.
'}],returns:{type:"xs:base64Binary",description:"The generated output document."},errors:['xsl-fo:JVM-NOT-STARTED If zorba was unable to start the JVM.','xsl-fo:JAVA-EXCEPTION If Apache FOP throws an exception - i.e. if the input format is not correct/supported.','xsl-fo:JAR-NOT-FOUND If a needed Java library could not be found.']}],variables:[{name:"xsl-fo:AFP",type:"xs:string",description:" The mime type of IBMs AFP format (application/x-afp).\n"},{name:"xsl-fo:EPS",type:"xs:string",description:" The mime type of the EPS format (application/postscript).\n"},{name:"xsl-fo:PCL",type:"xs:string",description:" The mime type of the PCL format (application/x-pcl).\n"},{name:"xsl-fo:PDF",type:"xs:string",description:" The mime type of the PDF format (application/pdf).\n"},{name:"xsl-fo:PLAIN_TEXT",type:"xs:string",description:" The mime type for plain text files (text/plain).\n"},{name:"xsl-fo:PNG",type:"xs:string",description:" The mime type of the PNG format (image/png).\n"},{name:"xsl-fo:POSTSCRIPT",type:"xs:string",description:" The mime type of the postscript format (application/postscript).\n"},{name:"xsl-fo:RTF",type:"xs:string",description:" The mime type of the RTF format (application/rtf).\n"},{name:"xsl-fo:TIFF",type:"xs:string",description:" The mime type of TIFF format (application/tiff).\n"}]},"http://zorba.io/warnings":{ns:"http://zorba.io/warnings",description:" This module contains one variable declaration for each diagnostic of the\n http://zorba.io/warnings namespace.\n The variables serves as documentation for the errors but can also\n be used in the code. For example, one useful scenario is to compare\n an error caught in the catch clause of a try-catch expression with one of\n the variables.\n",sees:[],authors:['Carlos Lopez'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/warnings",prefix:"zwarn"}],functions:[],variables:[{name:"zwarn:NS",type:"item()*",description:""},{name:"zwarn:ZWST0002",type:"xs:QName",description:" This warning is reported if the declaration of a function, variable,\n collection, or index contains an annotation that is not in the\n http://zorba.io/annotations namespace and Zorba doesn't know how to\n handle.\n"},{name:"zwarn:ZWST0003",type:"item()*",description:""},{name:"zwarn:ZWST0004",type:"item()*",description:""},{name:"zwarn:ZWST0005",type:"xs:QName",description:" This warning is raised if the user explicitly enables caching\n of function results (using the %an:cache or %an:strictlydeterministic\n annotation) but the function cannot be cached.\n For %an:cache this happens if the function is updating or variadic.\n For %an:strictlydeterministic this happens if the function is updating,\n variadic or sequential.\n"},{name:"zwarn:ZWST0006",type:"xs:QName",description:" This warning is raised if the user explicitly enables caching\n of function results (using the %an:cache annotation) and the function\n is annotated as sequential or nondeterministic.\n"},{name:"zwarn:ZWST0007",type:"item()*",description:""},{name:"zwarn:ZWST0008",type:"item()*",description:""},{name:"zwarn:ZWST0009",type:"xs:QName",description:' This warning is enabled when the "common-language" option is employed. It will raise warnings\n for language features that are not supported by both XQuery and JSONiq grammars.\n'}]},"http://www.28msec.com/modules/sparql":{ns:"http://www.28msec.com/modules/sparql",description:' This module contains functions to interact with a SPARQL endpoint.\n Requests to an endpoint are made using HTTP.\n Specifically, this module allows SELECT, ASK, CONSTRUCT and DESCRIBE queries. Additionally, it also allows for UPDATE statements.\n Various result formats are supported (e.g. XML, JSON, CSV)\n

Configuration

\n For this module you may use a preconfigured default or named datasource of the SPARQL category.\n You can also provide a configuration object directly.\n

As config parameter you can either pass a string that will be interpreted as a SPARQL endpoint datasource name or\n an object with the following properties:\n

\n

\n

Options

\n

The options object that can be passed to plenty of the functions in this module. It may have the following properties:\n

\n

All those properties are optional.

\n

\n',sees:[],authors:['Alexander.Kreutz@28msec.com'],version:null,encoding:"utf-8",namespaces:[{uri:"",prefix:"an"},{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://zorba.io/modules/http-client",prefix:"http-client"},{uri:"http://www.w3.org/1999/02/22-rdf-syntax-ns#",prefix:"rdf"},{uri:"http://www.w3.org/2005/sparql-results#",prefix:"s"},{uri:"http://www.28msec.com/modules/sparql",prefix:"sparql"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"ask",qname:"sparql:ask",signature:"($query as string) as xs:boolean",description:'

\n This function sends a SPARQL ASK query to an endpoint and returns the result as boolean value.\n The default datasource for SPARQL will be used.\n

\n',summary:"

\n This function sends a SPARQL ASK query to an endpoint and returns the result as boolean value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query",type:"string",occurrence:null,description:'
A SPARQL ASK query as string.
'}],returns:{type:"xs:boolean",description:"The boolean ASK query result."},errors:[]},{isDocumented:!0,arity:2,name:"ask",qname:"sparql:ask",signature:"($query as string, $options as object()?) as xs:boolean",description:'

\n This function sends a SPARQL ASK query to an endpoint and returns the result as boolean value.\n The default datasource for SPARQL will be used.\n

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL ASK query to an endpoint and returns the result as boolean value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query",type:"string",occurrence:null,description:'
A SPARQL ASK query as string.
'},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"xs:boolean",description:"The boolean ASK query result."},errors:[]},{isDocumented:!0,arity:3,name:"ask",qname:"sparql:ask",signature:"($config as item()?, $query as string, $options as object()?) as xs:boolean",description:'

\n This function sends a SPARQL ASK query to an endpoint and returns the result as boolean value.\n

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL ASK query to an endpoint and returns the result as boolean value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"config",type:"item()",occurrence:"?",description:'
The name of the credentials to use as string or a config object as described in the module description.
'},{name:"query",type:"string",occurrence:null,description:'
A SPARQL ASK query as string.
'},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"xs:boolean",description:"The boolean ASK query result."},errors:['sparql:INVALID-RESPONSE-TYPE if the response format cannot be handled by this function','sparql:ERROR if any http or endpoint error occurs','sparql:INVALID-PARAMETER invalid option specification','sparql:CREDENTIALS-NOT-FOUND credential information not found','sparql:CREDENTIALS-INVALID credential information not valid']},{isDocumented:!0,arity:1,name:"query-json",qname:"sparql:query-json",signature:"($query as string) as object()",description:'

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL JSON format object.\n If the endpoint fails to deliver SPARQL JSON result format this function will try to convert the results to JSON if possible.\n The default datasource for SPARQL will be used.\n

\n

Link to the specification of the result format at W3C: SPARQL 1.1 Query Results JSON Format

\n',summary:"

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL JSON format object.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query",type:"string",occurrence:null,description:'
A SPARQL SELECT or ASK query as string.
'}],returns:{type:"object()",description:"The query result in SPARQL JSON format."},errors:[]},{isDocumented:!0,arity:2,name:"query-json",qname:"sparql:query-json",signature:"($query as string, $options as object()?) as object()",description:'

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL JSON format object.\n If the endpoint fails to deliver SPARQL JSON result format this function will try to convert the results to JSON if possible.\n The default datasource for SPARQL will be used.\n

\n

Link to the specification of the result format at W3C: SPARQL 1.1 Query Results JSON Format

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL JSON format object.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query",type:"string",occurrence:null,description:'
A SPARQL SELECT or ASK query as string.
'},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"object()",description:"The query result in SPARQL JSON format."},errors:[]},{isDocumented:!0,arity:3,name:"query-json",qname:"sparql:query-json",signature:"($config as item()?, $query as string, $options as object()?) as object()",description:'

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL JSON format object.\n If the endpoint fails to deliver SPARQL JSON result format this function will try to convert the results to JSON if possible.\n

\n

Link to the specification of the result format at W3C: SPARQL 1.1 Query Results JSON Format

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL JSON format object.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"config",type:"item()",occurrence:"?",description:'
The name of the credentials to use as string or a config object as described in the module description.
'},{name:"query",type:"string",occurrence:null,description:'
A SPARQL SELECT or ASK query as string.
'},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"object()",description:"The query result in SPARQL JSON format."},errors:['sparql:INVALID-RESPONSE-TYPE if the response format cannot be handled by this function','sparql:ERROR if any http or endpoint error occurs','sparql:INVALID-PARAMETER invalid option specification','sparql:CREDENTIALS-NOT-FOUND credential information not found','sparql:CREDENTIALS-INVALID credential information not valid']},{isDocumented:!0,arity:1,name:"query-rdf",qname:"sparql:query-rdf",signature:"($query as string) as element(rdf:RDF)",description:'

\n This function sends a SPARQL CONSTRUCT or DESCRIBE query to an endpoint and returns the query response as RDF.\n The default datasource for SPARQL will be used.\n

\n

Link to the specification of the result format at W3C: RDF/XML Syntax Specification

\n',summary:"

\n This function sends a SPARQL CONSTRUCT or DESCRIBE query to an endpoint and returns the query response as RDF.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query",type:"string",occurrence:null,description:'
A SPARQL CONSTRUCT or DESCRIBE query as string.
'}],returns:{type:"element(rdf:RDF)",description:"The query result as RDF XML element."},errors:[]},{isDocumented:!0,arity:2,name:"query-rdf",qname:"sparql:query-rdf",signature:"($query as string, $options as object()?) as element(rdf:RDF)",description:'

\n This function sends a SPARQL CONSTRUCT or DESCRIBE query to an endpoint and returns the query response as RDF.\n The default datasource for SPARQL will be used.\n

\n

Link to the specification of the result format at W3C: RDF/XML Syntax Specification

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL CONSTRUCT or DESCRIBE query to an endpoint and returns the query response as RDF.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query",type:"string",occurrence:null,description:'
A SPARQL CONSTRUCT or DESCRIBE query as string.
'},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"element(rdf:RDF)",description:"The query result as RDF XML element."},errors:[]},{isDocumented:!0,arity:3,name:"query-rdf",qname:"sparql:query-rdf",signature:"($config as item()?, $query as string, $options as object()?) as element(rdf:RDF)",description:'

\n This function sends a SPARQL CONSTRUCT or DESCRIBE query to an endpoint and returns the query response as RDF.\n

\n

Link to the specification of the result format at W3C: RDF/XML Syntax Specification

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL CONSTRUCT or DESCRIBE query to an endpoint and returns the query response as RDF.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"config",type:"item()",occurrence:"?",description:'
The name of the credentials to use as string or a config object as described in the module description.
'},{name:"query",type:"string",occurrence:null,description:'
A SPARQL CONSTRUCT or DESCRIBE query as string.
'},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"element(rdf:RDF)",description:"The query result as RDF XML element."},errors:['sparql:INVALID-RESPONSE-TYPE if the response format cannot be handled by this function','sparql:ERROR if any http or endpoint error occurs','sparql:INVALID-PARAMETER invalid option specification','sparql:CREDENTIALS-NOT-FOUND credential information not found','sparql:CREDENTIALS-INVALID credential information not valid']},{isDocumented:!0,arity:1,name:"query-xml",qname:"sparql:query-xml",signature:"($query as string) as element(s:sparql)",description:'

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL XML format element.\n If the endpoint fails to deliver SPARQL XML result format this function will try to convert the results to XML if possible.\n The default datasource for SPARQL will be used.\n

\n

Link to the specification of the result format at W3C: SPARQL Query Results XML Format

\n',summary:"

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL XML format element.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query",type:"string",occurrence:null,description:'
A SPARQL SELECT or ASK query as string.
'}],returns:{type:"element(s:sparql)",description:"The query result in SPARQL XML format."},errors:[]},{isDocumented:!0,arity:2,name:"query-xml",qname:"sparql:query-xml",signature:"($query as string, $options as object()?) as element(s:sparql)",description:'

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL XML format element.\n If the endpoint fails to deliver SPARQL XML result format this function will try to convert the results to XML if possible.\n The default datasource for SPARQL will be used.\n

\n

Link to the specification of the result format at W3C: SPARQL Query Results XML Format

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL XML format element.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query",type:"string",occurrence:null,description:'
A SPARQL SELECT or ASK query as string.
'},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"element(s:sparql)",description:"The query result in SPARQL XML format."},errors:[]},{isDocumented:!0,arity:3,name:"query-xml",qname:"sparql:query-xml",signature:"($config as item()?, $query as string, $options as object()?) as element(s:sparql)",description:'

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL XML format element.\n If the endpoint fails to deliver SPARQL XML result format this function will try to convert the results to XML if possible.\n

\n

Link to the specification of the result format at W3C: SPARQL Query Results XML Format

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL SELECT or ASK query to an endpoint and returns the query response as SPARQL XML format element.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"config",type:"item()",occurrence:"?",description:'
The name of the credentials to use as string or a config object as described in the module description.
'},{name:"query",type:"string",occurrence:null,description:'
A SPARQL SELECT or ASK query as string.
'},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"element(s:sparql)",description:"The query result in SPARQL XML format."},errors:['sparql:INVALID-RESPONSE-TYPE if the response format cannot be handled by this function','sparql:ERROR if any http or endpoint error occurs','sparql:INVALID-PARAMETER invalid option specification','sparql:CREDENTIALS-NOT-FOUND credential information not found','sparql:CREDENTIALS-INVALID credential information not valid']},{isDocumented:!0,arity:1,name:"query",qname:"sparql:query",signature:"($query as string) as object()",description:'

\n This function sends a SPARQL query to an endpoint and directly returns the corresponding HTTP response.\n The default datasource for SPARQL will be used.\n

\n',summary:"

\n This function sends a SPARQL query to an endpoint and directly returns the corresponding HTTP response.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query",type:"string",occurrence:null,description:'
A SPARQL query as string. May be any kind of query but not an update.
'}],returns:{type:"object()",description:"The endpoints response. This function returns the plain response object from the http-client."},errors:[]},{isDocumented:!0,arity:2,name:"query",qname:"sparql:query",signature:"($query as string, $options as object()?) as object()",description:'

\n This function sends a SPARQL query to an endpoint and directly returns the corresponding HTTP response.\n The default datasource for SPARQL will be used.\n

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL query to an endpoint and directly returns the corresponding HTTP response.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query",type:"string",occurrence:null,description:'
A SPARQL query as string. May be any kind of query but not an update.
'},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"object()",description:"The endpoints response. This function returns the plain response object from the http-client."},errors:[]},{isDocumented:!0,arity:3,name:"query",qname:"sparql:query",signature:"($config as item()?, $query as string, $options as object()?) as object()",description:'

\n This function sends a SPARQL query to an endpoint and directly returns the corresponding HTTP response.\n

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL query to an endpoint and directly returns the corresponding HTTP response.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"config",type:"item()",occurrence:"?",description:'
The name of the credentials to use as string or a config object as described in the module description.
'},{name:"query",type:"string",occurrence:null,description:'
A SPARQL query as string. May be any kind of query but not an update.
'},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"object()",description:"The endpoints response. This function returns the plain response object from the http-client."},errors:['sparql:INVALID-PARAMETER invalid option specification','sparql:CREDENTIALS-NOT-FOUND credential information not found','sparql:CREDENTIALS-INVALID credential information not valid']},{isDocumented:!0,arity:1,name:"update",qname:"sparql:update",signature:"($update-statement as string) as object()",description:'

\n This function sends a SPARQL update statement to an endpoint and directly returns the corresponding HTTP response.\n The default datasource for SPARQL will be used.\n

\n',summary:"

\n This function sends a SPARQL update statement to an endpoint and directly returns the corresponding HTTP response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"update-statement",type:"string",occurrence:null,description:""}],returns:{type:"object()",description:"The endpoints response. This function returns the plain response object from the http-client."},errors:[]},{isDocumented:!0,arity:2,name:"update",qname:"sparql:update",signature:"($update-statement as string, $options as object()?) as object()",description:'

\n This function sends a SPARQL update statement to an endpoint and directly returns the corresponding HTTP response.\n The default datasource for SPARQL will be used.\n

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL update statement to an endpoint and directly returns the corresponding HTTP response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"update-statement",type:"string",occurrence:null,description:""},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"object()",description:"The endpoints response. This function returns the plain response object from the http-client."},errors:[]},{isDocumented:!0,arity:3,name:"update",qname:"sparql:update",signature:"($config as item()?, $update-statement as string, $options as object()?) as object()",description:'

\n This function sends a SPARQL update statement to an endpoint and directly returns the corresponding HTTP response.\n

\n

\n

\n

\n',summary:"

\n This function sends a SPARQL update statement to an endpoint and directly returns the corresponding HTTP response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"config",type:"item()",occurrence:"?",description:'
The name of the credentials to use as string or a config object as described in the module description.
'},{name:"update-statement",type:"string",occurrence:null,description:""},{name:"options",type:"object()",occurrence:"?",description:'
An optional options object as described in the module description.
'}],returns:{type:"object()",description:"The endpoints response. This function returns the plain response object from the http-client."},errors:['sparql:INVALID-PARAMETER invalid option specification','sparql:CREDENTIALS-NOT-FOUND credential information not found','sparql:CREDENTIALS-INVALID credential information not valid']}],variables:[{name:"sparql:CREDENTIALS-CATEGORY",type:"string",description:" This variable represents the category of the datasource.\n"},{name:"sparql:METHOD-GET",type:"string",description:' This variable represents the request method using HTTP GET requests. May be used for the method property of the options object.\n'},{name:"sparql:METHOD-POST-URLENCODED",type:"string",description:' This variable represents the request method using HTTP POST with URL-encoded parameters. May be used for the method property of the options object.\n'},{name:"sparql:METHOD-POST-SPARQL",type:"string",description:' This variable represents the request method using HTTP POST with the application/sparql-query content type. May be used for the method property of the options object.\n'},{name:"sparql:FORMAT-XML",type:"string",description:' This variable represents the SPARQL XML result format.May be used for the format property of the options object.\n'},{name:"sparql:FORMAT-JSON",type:"string",description:' This variable represents the SPARQL JSON result format.May be used for the format property of the options object.\n'},{name:"sparql:FORMAT-RDF",type:"string",description:' This variable represents the RDF+XML result format.May be used for the format property of the options object.\n'},{name:"sparql:FORMAT-CSV",type:"string",description:' This variable represents the CSV result format.May be used for the format property of the options object.\n'},{name:"sparql:FORMAT-TSV",type:"string",description:' This variable represents the TSV result format.May be used for the format property of the options object.\n'},{name:"sparql:FORMAT-ANY",type:"string",description:' This variable represents any result format. May be used for the format property of the options object to not specify a requested format.\n'}]},"http://api.28.io/dispatcher":{ns:"http://api.28.io/dispatcher",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"",prefix:"an"},{uri:"http://api.28.io/browserview",prefix:"browserview"},{uri:"http://api.28.io/csvview",prefix:"csvview"},{uri:"http://api.28.io/dispatcher",prefix:"dispatcher"},{uri:"http://api.28.io/functions",prefix:"functions"},{uri:"http://api.28.io/model",prefix:"model"},{uri:"http://zorba.io/modules/xml",prefix:"parse-xml"},{uri:"http://www.zorba-xquery.com/schemas/pul",prefix:"pul"},{uri:"http://www.28msec.com/modules/http/request",prefix:"req"},{uri:"http://www.28msec.com/modules/http/response",prefix:"response"},{uri:"http://www.zorba-xquery.com/schemas/xdm",prefix:"xdm"},{uri:"http://api.28.io/xdmview",prefix:"xdmview"}],functions:[{isDocumented:!0,arity:0,name:"restapi",qname:"dispatcher:restapi",signature:"()",description:" Main function for the collection browser. May be called from a handler function.\n Uses the call URL to determine which page needs to be returned.\n The URL for the initial page needs to end with /index\n",summary:"

Main function for the collection browser.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:"the requested page of the collection browser"},errors:[]}],variables:[]},"http://zorba.io/modules/store/static/collections/ddl":{ns:"http://zorba.io/modules/store/static/collections/ddl",description:' This modules defines a set of functions for managing collections that are\n declared in the prolog of a module.\n For example, it provides functions to create, delete, or introspect\n collections.\n

\n This module is part of Zorba\'s XQuery Data\n Definition Facility. All the collections managed by this module\n have to be pre-declared in the prolog of a module. Please refer to the\n general documentation\n for more information and examples.\n',sees:['Data Lifecycle','XQuery Data Definition Facility','http://zorba.io/modules/store/static/collections/dml','http://zorba.io/modules/store/static/indexes/ddl','http://zorba.io/modules/store/static/indexes/dml','http://zorba.io/modules/store/static/integrity-constraints/ddl','http://zorba.io/modules/store/static/integrity-constraints/dml','http://zorba.io/errors'],authors:['Nicolae Brinza, Matthias Brantner, David Graf, Till Westmann, Markos Zaharioudakis'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/store/static/collections/ddl",prefix:"cddl"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:0,name:"available-collections",qname:"cddl:available-collections",signature:"() as xs:QName* external",description:" Gets the QNames of the collections that have been statically declared and\n are available, if any.\n",summary:"

Gets the QNames of the collections that have been statically declared and\n are available, if any.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence comprising one QName for each statically declared and available collection or an emtpy sequence if no such collections are available."},errors:[]},{isDocumented:!0,arity:1,name:"create",qname:"cddl:create",signature:"($name as xs:QName) external",description:" Creates a collection.\n",summary:"

Creates a collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The of the collection to create.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, creates a collection with the given name."},errors:['zerr:ZDDY0001 if $name is not equal to any of the declared collections in the static context.','zerr:ZDDY0002 if a collection with $name already exists.']},{isDocumented:!0,arity:2,name:"create",qname:"cddl:create",signature:"($name as xs:QName, $content as item()*) external",description:" Creates a collection and adds the given sequence as content to the new\n collection.\n",summary:"

Creates a collection and adds the given sequence as content to the new\n collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to create.
'},{name:"content",type:"item()",occurrence:"*",description:'
The sequences of items (nodes or JSON items) to be added to the new collection.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, creates a collection with the given name and inserts the given items into it."},errors:['zerr:ZDDY0001 if $name is not equal to any of the declared collections in the static context.','zerr:ZDDY0002 if a collection with $name already exists.','zerr:ZDTY0001 if $content does not match the expected type declared by the collection according to the rules for SequenceType Matching.']},{isDocumented:!0,arity:0,name:"declared-collections",qname:"cddl:declared-collections",signature:"() as xs:QName* external",description:" Gets the collections that have been declared in the prolog of the static\n context.\n",summary:"

Gets the collections that have been declared in the prolog of the static\n context.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence of QNames, one for each collection created in the static context, or an emtpy sequence."},errors:[]},{isDocumented:!0,arity:1,name:"delete",qname:"cddl:delete",signature:"($name as xs:QName) external",description:" Deletes a collection.\n",summary:"

Deletes a collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The collection to delete.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, deletes the collection with the given name."},errors:['zerr:ZDDY0001 if $name is not equal to any of the declared collections in the static context.','zerr:ZDDY0003 if the collection identified by $name is not available.','zerr:ZDDY0013 if the domain or key expression of any of the available indexes access the collection having $name.','zerr:ZDDY0015 if any of the in-scope variables references an item that belongs to the collection having $name']},{isDocumented:!0,arity:1,name:"is-available-collection",qname:"cddl:is-available-collection",signature:"($name as xs:QName) as xs:boolean external",description:" Gets whether a collection is statically declared and available.\n",summary:"

Gets whether a collection is statically declared and available.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to check.
'}],returns:{type:"xs:boolean",description:"true if the collection was statically declared and is available; false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"is-declared-collection",qname:"cddl:is-declared-collection",signature:"($name as xs:QName) as xs:boolean external",description:" Gers whether a collection was declared in the prolog of the static context.\n",summary:"

Gers whether a collection was declared in the prolog of the static context.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to check.
'}],returns:{type:"xs:boolean",description:"true if the collection was declared; false otherwise."},errors:[]}],variables:[]},"http://www.28msec.com/modules/math":{ns:"http://www.28msec.com/modules/math",description:' The functions in this module perform trigonometric and other mathematical\n calculations on double values.\n For a more detailed description of the semantics of each function, please\n refer to \n Trigonometric and exponential functions.\n',sees:[],authors:[],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/2005/xpath-functions/math",prefix:"fnmath"},{uri:"http://www.28msec.com/modules/math",prefix:"math"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"acos",qname:"math:acos",signature:"($arg as double?) as double?",description:" Returns the arc cosine of the argument, the result being in the range zero to +π radians.\n",summary:"

Returns the arc cosine of the argument, the result being in the range zero to +π radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"double",occurrence:"?",description:""}],returns:{type:"double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"asin",qname:"math:asin",signature:"($arg as double?) as double?",description:" Returns the arc sine of the argument, the result being in the range -π/2 to +π/2 radians.\n",summary:"

Returns the arc sine of the argument, the result being in the range -π/2 to +π/2 radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"double",occurrence:"?",description:""}],returns:{type:"double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"atan",qname:"math:atan",signature:"($arg as double?) as double?",description:" Returns the arc tangent of the argument, the result being in the range -π/2 to +π/2 radians.\n",summary:"

Returns the arc tangent of the argument, the result being in the range -π/2 to +π/2 radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"double",occurrence:"?",description:""}],returns:{type:"double?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"atan2",qname:"math:atan2",signature:"($y as double, $x as double) as double",description:" Returns the angle in radians subtended at the origin by the point on a plane with\n coordinates (x, y) and the positive x-axis, the result being in the range -π to +π.\n",summary:"

Returns the angle in radians subtended at the origin by the point on a plane with\n coordinates (x, y) and the positive x-axis, the result being in the range -π to +π.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"y",type:"double",occurrence:null,description:""},{name:"x",type:"double",occurrence:null,description:""}],returns:{type:"double",description:""},errors:[]},{isDocumented:!0,arity:1,name:"cos",qname:"math:cos",signature:"($theta as double?) as double?",description:" Returns the cosine of the argument, expressed in radians.\n",summary:"

Returns the cosine of the argument, expressed in radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"theta",type:"double",occurrence:"?",description:""}],returns:{type:"double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"exp",qname:"math:exp",signature:"($arg as double?) as double?",description:" Returns the value of ex.\n",summary:"

Returns the value of ex.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"double",occurrence:"?",description:""}],returns:{type:"double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"exp10",qname:"math:exp10",signature:"($arg as double?) as double?",description:" Returns the value of 10x.\n",summary:"

Returns the value of 10x.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"double",occurrence:"?",description:""}],returns:{type:"double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"log",qname:"math:log",signature:"($arg as double?) as double?",description:" Returns the natural logarithm of the argument.\n",summary:"

Returns the natural logarithm of the argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"double",occurrence:"?",description:""}],returns:{type:"double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"log10",qname:"math:log10",signature:"($arg as double?) as double?",description:" Returns the base-ten logarithm of the argument.\n",summary:"

Returns the base-ten logarithm of the argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"double",occurrence:"?",description:""}],returns:{type:"double?",description:""},errors:[]},{isDocumented:!0,arity:0,name:"pi",qname:"math:pi",signature:"() as double",description:" Returns an approximation to the mathematical constant π.\n",summary:"

Returns an approximation to the mathematical constant π.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"double",description:""},errors:[]},{isDocumented:!0,arity:2,name:"pow",qname:"math:pow",signature:"($x as double?, $y) as double?",description:" Returns the result of raising the first argument to the power of the second.\n",summary:"

Returns the result of raising the first argument to the power of the second.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"x",type:"double",occurrence:"?",description:""},{name:"y",type:null,occurrence:null,description:""}],returns:{type:"double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"sin",qname:"math:sin",signature:"($theta as double?) as double?",description:" Returns the sine of the argument, expressed in radians.\n",summary:"

Returns the sine of the argument, expressed in radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"theta",type:"double",occurrence:"?",description:""}],returns:{type:"double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"sqrt",qname:"math:sqrt",signature:"($arg as double?) as double?",description:" Returns the non-negative square root of the argument.\n",summary:"

Returns the non-negative square root of the argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"double",occurrence:"?",description:""}],returns:{type:"double?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"tan",qname:"math:tan",signature:"($theta as double?) as double?",description:" Returns the tangent of the argument, expressed in radians.\n",summary:"

Returns the tangent of the argument, expressed in radians.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"theta",type:"double",occurrence:"?",description:""}],returns:{type:"double?",description:""},errors:[]}],variables:[]},"http://zorba.io/modules/data-cleaning/normalization":{ns:"http://zorba.io/modules/data-cleaning/normalization",description:'

This library module provides data normalization functions for processing calendar dates,\n temporal values, currency values, units of measurement, location names and postal addresses.\n These functions are particularly useful for converting different data representations into cannonical formats.

\n

The logic contained in this module is not specific to any particular XQuery implementation.

\n',sees:[],authors:['Bruno Martins and Diogo Simões'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.zorba-xquery.com/modules/http-client",prefix:"http"},{uri:"http://zorba.io/modules/data-cleaning/normalization",prefix:"normalization"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"normalize-address",qname:"normalization:normalize-address",signature:"($addr as xs:string*) as xs:string*",description:'

Uses an address normalization Web service to convert a postal address given as input into a\n cannonical representation format.

\n',summary:"

Uses an address normalization Web service to convert a postal address given as input into a\n cannonical representation format.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"addr",type:"xs:string",occurrence:"*",description:'
A sequence of strings encoding an address, where each string in the sequence corresponds to a different component (e.g., street, city, country, etc.) of the address.
'}],returns:{type:"xs:string*",description:"A sequence of strings with the address encoded in a cannonical format, where each string in the sequence corresponds to a different component (e.g., street, city, country, etc.) of the address."},errors:[]},{isDocumented:!0,arity:1,name:"normalize-phone",qname:"normalization:normalize-phone",signature:"($addr as xs:string*) as xs:string*",description:'

Uses an phone number normalization Web service to convert a phone number given as input into a\n cannonical representation.

\n',summary:"

Uses an phone number normalization Web service to convert a phone number given as input into a\n cannonical representation.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"addr",type:"xs:string",occurrence:"*",description:""}],returns:{type:"xs:string*",description:'A strings with the phone number encoded in a cannonical format.

Attention : This function is still not implemented.

'},errors:[]},{isDocumented:!0,arity:2,name:"to-date",qname:"normalization:to-date",signature:"($sd as xs:string, $format as xs:string?) as xs:string",description:'

Converts a given string representation of a date value into a date representation valid according\n to the corresponding XML Schema type.

\n',summary:"

Converts a given string representation of a date value into a date representation valid according\n to the corresponding XML Schema type.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sd",type:"xs:string",occurrence:null,description:'
The string representation for the date
'},{name:"format",type:"xs:string",occurrence:"?",description:"
An optional parameter denoting the format used to represent the date in the string, according to a sequence of conversion specifications. In the format string, a conversion specification is introduced by '%', usually followed by a single letter or 'O' or 'E' and then a single letter. Any character in the format string that is not part of a conversion specification is interpreted literally, and the string '%%' gives '%'. The supported conversion specifications are as follows:
 '%b' Abbreviated month name in the current locale. '%B' Full month name in the current locale. '%d' Day of the month as decimal number (01-31). '%m' Month as decimal number (01-12). '%x' Date, locale-specific. '%y' Year without century (00-99). '%Y' Year with century. '%C' Century (00-99): the integer part of the year divided by 100. '%D' Locale-specific date format such as '%m/%d/%y'. '%e' Day of the month as decimal number (1-31), with a leading pace for a single-digit number. '%F' Equivalent to %Y-%m-%d (the ISO 8601 date format). '%h' Equivalent to '%b'. 
"}],returns:{type:"xs:string",description:"The date value resulting from the conversion."},errors:[]},{isDocumented:!0,arity:2,name:"to-dateTime",qname:"normalization:to-dateTime",signature:"($sd as xs:string, $format as xs:string?) as xs:string",description:'

Converts a given string representation of a dateTime value into a dateTime representation\n valid according to the corresponding XML Schema type.

\n',summary:"

Converts a given string representation of a dateTime value into a dateTime representation\n valid according to the corresponding XML Schema type.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sd",type:"xs:string",occurrence:null,description:'
The string representation for the dateTime.
'},{name:"format",type:"xs:string",occurrence:"?",description:"
An optional parameter denoting the format used to represent the dateTime in the string, according to a sequence of conversion specifications. In the format string, a conversion specification is introduced by '%', usually followed by a single letter or 'O' or 'E' and then a single letter. Any character in the format string that is not part of a conversion specification is interpreted literally, and the string '%%' gives '%'. The supported conversion specifications are as follows:

 '%b' Abbreviated month name in the current locale. '%B' Full month name in the current locale. '%c' Date and time, locale-specific. '%C' Century (00-99): the integer part of the year divided by 100. '%d' Day of the month as decimal number (01-31). '%H' Hours as decimal number (00-23). '%I' Hours as decimal number (01-12). '%j' Day of year as decimal number (001-366). '%m' Month as decimal number (01-12). '%M' Minute as decimal number (00-59). '%p' AM/PM indicator in the locale. Used in conjunction with '%I' and *not* with '%H'. '%S' Second as decimal number (00-61), allowing for up to two leap-seconds. '%x' Date, locale-specific. '%X' Time, locale-specific. '%y' Year without century (00-99). '%Y' Year with century. '%z' Offset from Greenwich, so '-0900' is 9 hours west of Greenwich. '%Z' Time zone as a character string. '%D' Locale-specific date format such as '%m/%d/%y': ISO C99 says it should be that exact format. '%e' Day of the month as decimal number (1-31), with a leading pace for a single-digit number. '%F' Equivalent to %Y-%m-%d (the ISO 8601 date format). '%g' The last two digits of the week-based year (see '%V'). '%G' The week-based year (see '%V') as a decimal number. '%h' Equivalent to '%b'. '%k' The 24-hour clock time with single digits preceded by a blank. '%l' The 12-hour clock time with single digits preceded by a blank. '%r' The 12-hour clock time (using the locale's AM or PM). '%R' Equivalent to '%H:%M'. '%T' Equivalent to '%H:%M:%S'. 
"}],returns:{type:"xs:string",description:"The dateTime value resulting from the conversion."},errors:['normalization:NOTSUPPORTED if the dateTime type is not known to the service.']},{isDocumented:!0,arity:2,name:"to-time",qname:"normalization:to-time",signature:"($sd as xs:string, $format as xs:string?) as xs:string?",description:'

Converts a given string representation of a time value into a time representation valid according to\n the corresponding XML Schema type.

\n',summary:"

Converts a given string representation of a time value into a time representation valid according to\n the corresponding XML Schema type.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sd",type:"xs:string",occurrence:null,description:'
The string representation for the time.
'},{name:"format",type:"xs:string",occurrence:"?",description:"
An optional parameter denoting the format used to represent the time in the string, according to a sequence of conversion specifications. In the format string, a conversion specification is introduced by '%', usually followed by a single letter or 'O' or 'E' and then a single letter. Any character in the format string that is not part of a conversion specification is interpreted literally, and the string '%%' gives '%'. The supported conversion specifications are as follows:

 '%H' Hours as decimal number (00-23). '%I' Hours as decimal number (01-12). '%M' Minute as decimal number (00-59). '%p' AM/PM indicator in the locale. Used in conjunction with '%I' and *not* with '%H'. '%S' Second as decimal number (00-61), allowing for up to two leap-seconds. '%X' Time, locale-specific. '%z' Offset from Greenwich, so '-0900' is 9 hours west of Greenwich. '%Z' Time zone as a character string. '%k' The 24-hour clock time with single digits preceded by a blank. '%l' The 12-hour clock time with single digits preceded by a blank. '%r' The 12-hour clock time (using the locale's AM or PM). '%R' Equivalent to '%H:%M'. '%T' Equivalent to '%H:%M:%S'. 
"}],returns:{type:"xs:string?",description:"The time value resulting from the conversion."},errors:['normalization:NOTSUPPORTED if the date type is not known to the service.']}],variables:[]},"http://zorba.io/modules/excel/engineering":{ns:"http://zorba.io/modules/excel/engineering",description:" This is a library module offering the same set of functions\n defined by Microsoft Excel, under Engineering Functions.\n",sees:['Excel Documentation: Engineering Functions'],authors:['Sorin Nasoi'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/excel/engineering",prefix:"excel-engineering"},{uri:"http://zorba.io/modules/excel/errors",prefix:"excel-err"},{uri:"http://zorba.io/modules/excel/math",prefix:"excel-math"},{uri:"http://zorba.io/modules/excel/text",prefix:"excel-text"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"bin2dec",qname:"excel-engineering:bin2dec",signature:"($arg as xs:anyAtomicType) as xs:integer",description:" Converts a binary number to decimal.\n",summary:"

Converts a binary number to decimal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'}],returns:{type:"xs:integer",description:"A decimal representation of a number given it's binary representation."},errors:['excel-err:Value if provided value for $arg is not a binary representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.']},{isDocumented:!0,arity:1,name:"bin2hex",qname:"excel-engineering:bin2hex",signature:"($arg as xs:anyAtomicType) as xs:string",description:" Converts a binary number to hexadecimal.\n",summary:"

Converts a binary number to hexadecimal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'}],returns:{type:"xs:string",description:"A hexadecimal representation of a number given it's binary representation."},errors:['excel-err:Value if provided value for $arg is not a binary representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.']},{isDocumented:!0,arity:2,name:"bin2hex",qname:"excel-engineering:bin2hex",signature:"($arg as xs:anyAtomicType, $places as xs:anyAtomicType) as xs:string",description:" Converts a binary number to hexadecimal.\n",summary:"

Converts a binary number to hexadecimal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'},{name:"places",type:"xs:anyAtomicType",occurrence:null,description:'
is the number of characters to use. Places is useful for padding the return value with leading 0s (zeros).
'}],returns:{type:"xs:string",description:"A hexadecimal representation of a number given it's binary representation."},errors:['excel-err:Value if provided value for $arg is not a binary representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.','excel-err:Value if provided value for $places is not numeric.','excel-err:Num if provided value for $places is zero or negative.','excel-err:Num if provided value for $places is too small.']},{isDocumented:!0,arity:1,name:"bin2oct",qname:"excel-engineering:bin2oct",signature:"($arg as xs:anyAtomicType) as xs:string",description:" Converts a binary number to octal.\n",summary:"

Converts a binary number to octal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'}],returns:{type:"xs:string",description:"A octal representation of a number given it's binary representation."},errors:['excel-err:Value if provided value for $arg is not a binary representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.']},{isDocumented:!0,arity:2,name:"bin2oct",qname:"excel-engineering:bin2oct",signature:"($arg as xs:anyAtomicType, $places as xs:anyAtomicType) as xs:string",description:" Converts a binary number to octal.\n",summary:"

Converts a binary number to octal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'},{name:"places",type:"xs:anyAtomicType",occurrence:null,description:'
is the number of characters to use. Places is useful for padding the return value with leading 0s (zeros).
'}],returns:{type:"xs:string",description:"A octal representation of a number given it's binary representation."},errors:['excel-err:Value if provided value for $arg is not a binary representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.','excel-err:Value if provided value for $places is not numeric.','excel-err:Num if provided value for $places is zero or negative.','excel-err:Num if provided value for $places is too small.']},{isDocumented:!0,arity:1,name:"dec2bin",qname:"excel-engineering:dec2bin",signature:"($arg as xs:anyAtomicType) as xs:string",description:" Converts a decimal number to binary.\n",summary:"

Converts a decimal number to binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'}],returns:{type:"xs:string",description:"A binary representation of a number given it's decimal representation."},errors:['excel-err:Value if provided value for $arg is not numeric.','excel-err:Num if provided value for $arg is smaller than -512 or bigger than 511.']},{isDocumented:!0,arity:2,name:"dec2bin",qname:"excel-engineering:dec2bin",signature:"($arg as xs:anyAtomicType, $places as xs:anyAtomicType) as xs:string",description:" Converts a decimal number to binary.\n",summary:"

Converts a decimal number to binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'},{name:"places",type:"xs:anyAtomicType",occurrence:null,description:'
is the number of characters to use. Places is useful for padding the return value with leading 0s (zeros).
'}],returns:{type:"xs:string",description:"A binary representation of a number given it's decimal representation."},errors:['excel-err:Value if provided value for $arg is not numeric.','excel-err:Value if provided value for $places is not numeric.','excel-err:Num if provided value for $places is zero or negative.','excel-err:Num if provided value for $places is too small.','excel-err:Num if provided value for $arg is smaller than -512 or bigger than 511.']},{isDocumented:!0,arity:1,name:"dec2hex",qname:"excel-engineering:dec2hex",signature:"($arg as xs:anyAtomicType) as xs:string",description:" Converts a decimal number to hexadecimal.\n",summary:"

Converts a decimal number to hexadecimal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'}],returns:{type:"xs:string",description:"A hexadecimal representation of a number given it's decimal representation."},errors:['excel-err:Value if provided value for $arg is not numeric.','excel-err:Num if provided value for $arg is smaller than -549755813888 or bigger than 549755813887']},{isDocumented:!0,arity:2,name:"dec2hex",qname:"excel-engineering:dec2hex",signature:"($arg as xs:anyAtomicType, $places as xs:anyAtomicType) as xs:string",description:" Converts a decimal number to hexadecimal.\n",summary:"

Converts a decimal number to hexadecimal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'},{name:"places",type:"xs:anyAtomicType",occurrence:null,description:'
is the number of characters to use. Places is useful for padding the return value with leading 0s (zeros).
'}],returns:{type:"xs:string",description:"A hexadecimal representation of a number given it's decimal representation."},errors:['excel-err:Value if provided value for $arg is not numeric.','excel-err:Value if provided value for $places is not numeric.','excel-err:Num if provided value for $places is zero or negative.','excel-err:Num if provided value for $places is too small.','excel-err:Num if provided value for $arg is smaller than -549755813888 or bigger than 549755813887.']},{isDocumented:!0,arity:1,name:"dec2oct",qname:"excel-engineering:dec2oct",signature:"($arg as xs:anyAtomicType) as xs:string",description:" Converts a decimal number to octal.\n",summary:"

Converts a decimal number to octal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'}],returns:{type:"xs:string",description:"An octal representation of a number given it's decimal representation."},errors:['excel-err:Value if provided value for $arg is not numeric.','excel-err:Num if provided value for $arg is smaller than -536870912 or bigger than 536870911.']},{isDocumented:!0,arity:2,name:"dec2oct",qname:"excel-engineering:dec2oct",signature:"($arg as xs:anyAtomicType, $places as xs:anyAtomicType) as xs:string",description:" Converts a decimal number to octal.\n",summary:"

Converts a decimal number to octal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number
'},{name:"places",type:"xs:anyAtomicType",occurrence:null,description:'
is the number of characters to use. Places is useful for padding the return value with leading 0s (zeros).
'}],returns:{type:"xs:string",description:"An octal representation of a number given it's decimal representation."},errors:['excel-err:Value if provided value for $arg is not numeric','excel-err:Value if provided value for $places is not numeric','excel-err:Num if provided value for $places is zero or negative','excel-err:Num if provided value for $places is too small','excel-err:Num if provided value for $arg is smaller than -536870912 or bigger than 536870911']},{isDocumented:!0,arity:1,name:"hex2bin",qname:"excel-engineering:hex2bin",signature:"($arg as xs:anyAtomicType) as xs:string",description:" Converts a hexadecimal number to binary.\n",summary:"

Converts a hexadecimal number to binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'}],returns:{type:"xs:string",description:"A binary representation of a number given it's hexadecimal representation."},errors:['excel-err:Value if provided value for $arg is not a hexadecimal representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.']},{isDocumented:!0,arity:2,name:"hex2bin",qname:"excel-engineering:hex2bin",signature:"($arg as xs:anyAtomicType, $places as xs:anyAtomicType) as xs:string",description:" Converts a hexadecimal number to binary.\n",summary:"

Converts a hexadecimal number to binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'},{name:"places",type:"xs:anyAtomicType",occurrence:null,description:'
is the number of characters to use. Places is useful for padding the return value with leading 0s (zeros).
'}],returns:{type:"xs:string",description:"A binary representation of a number given it's hexadecimal representation."},errors:['excel-err:Value if provided value for $arg is not a hexadecimal representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.','excel-err:Value if provided value for $places is not numeric.','excel-err:Num if provided value for $places is zero or negative.','excel-err:Num if provided value for $places is too small.']},{isDocumented:!0,arity:1,name:"hex2dec",qname:"excel-engineering:hex2dec",signature:"($arg as xs:string) as xs:integer",description:" Converts a hexadecimal number to decimal.\n",summary:"

Converts a hexadecimal number to decimal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:null,description:'
the number.
'}],returns:{type:"xs:integer",description:"A decimal representation of a number given it's hexadecimal representation."},errors:['excel-err:Value if provided value for $arg is not a hexadecimal representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.']},{isDocumented:!0,arity:1,name:"hex2oct",qname:"excel-engineering:hex2oct",signature:"($arg as xs:anyAtomicType) as xs:string",description:" Converts a hexadecimal number to octal.\n",summary:"

Converts a hexadecimal number to octal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'}],returns:{type:"xs:string",description:"A octal representation of a number given it's hexadecimal representation."},errors:['excel-err:Value if provided value for $arg is not a hexadecimal representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.']},{isDocumented:!0,arity:2,name:"hex2oct",qname:"excel-engineering:hex2oct",signature:"($arg as xs:anyAtomicType, $places as xs:anyAtomicType) as xs:string",description:" Converts a hexadecimal number to octal.\n",summary:"

Converts a hexadecimal number to octal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'},{name:"places",type:"xs:anyAtomicType",occurrence:null,description:'
is the number of characters to use. Places is useful for padding the return value with leading 0s (zeros).
'}],returns:{type:"xs:string",description:"A octal representation of a number given it's hexadecimal representation."},errors:['excel-err:Value if provided value for $arg is not a hexadecimal representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.','excel-err:Value if provided value for $places is not numeric.','excel-err:Num if provided value for $places is zero or negative.','excel-err:Num if provided value for $places is too small.']},{isDocumented:!0,arity:1,name:"oct2bin",qname:"excel-engineering:oct2bin",signature:"($arg as xs:anyAtomicType) as xs:string",description:" Converts an octal number to binary.\n",summary:"

Converts an octal number to binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'}],returns:{type:"xs:string",description:"A binary representation of a number given it's octal representation."},errors:['excel-err:Value if provided value for $arg is not an octal representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.']},{isDocumented:!0,arity:2,name:"oct2bin",qname:"excel-engineering:oct2bin",signature:"($arg as xs:anyAtomicType, $places as xs:anyAtomicType) as xs:string",description:" Converts an octal number to binary.\n",summary:"

Converts an octal number to binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'},{name:"places",type:"xs:anyAtomicType",occurrence:null,description:'
is the number of characters to use. Places is useful for padding the return value with leading 0s (zeros).
'}],returns:{type:"xs:string",description:"A binary representation of a number given it's octal representation."},errors:['excel-err:Value if provided value for $arg is not an octal representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.','excel-err:Value if provided value for $places is not numeric.','excel-err:Num if provided value for $places is zero or negative.','excel-err:Num if provided value for $places is too small.']},{isDocumented:!0,arity:1,name:"oct2dec",qname:"excel-engineering:oct2dec",signature:"($arg as xs:anyAtomicType) as xs:integer",description:" Converts an octal number to decimal.\n",summary:"

Converts an octal number to decimal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'}],returns:{type:"xs:integer",description:"A decimal representation of a number given it's octal representation."},errors:['excel-err:Value if provided value for $arg is not an octal representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.']},{isDocumented:!0,arity:1,name:"oct2hex",qname:"excel-engineering:oct2hex",signature:"($arg as xs:anyAtomicType) as xs:string",description:" Converts an octal number to hexadecimal.\n",summary:"

Converts an octal number to hexadecimal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'}],returns:{type:"xs:string",description:"A hexadecimal representation of a number given it's octal representation."},errors:['excel-err:Value if provided value for $arg is not an octal representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.']},{isDocumented:!0,arity:2,name:"oct2hex",qname:"excel-engineering:oct2hex",signature:"($arg as xs:anyAtomicType, $places as xs:anyAtomicType) as xs:string",description:" Converts an octal number to hexadecimal.\n",summary:"

Converts an octal number to hexadecimal.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:anyAtomicType",occurrence:null,description:'
the number.
'},{name:"places",type:"xs:anyAtomicType",occurrence:null,description:'
is the number of characters to use. Places is useful for padding the return value with leading 0s (zeros).
'}],returns:{type:"xs:string",description:"A hexadecimal representation of a number given it's octal representation."},errors:['excel-err:Value if provided value for $arg is not an octal representation of a number.','excel-err:Value if provided value for $arg contains more than 10 characters.','excel-err:Value if provided value for $places is not numeric.','excel-err:Num if provided value for $places is zero or negative.','excel-err:Num if provided value for $places is too small.']}],variables:[]},"http://www.zorba-xquery.com/modules/util-jvm":{ns:"http://www.zorba-xquery.com/modules/util-jvm",description:' This module provides common functionality for modules that use java\n implementations.\n
\n
\n Modules using java implementations must import this module\n to specify the dependency.\n
\n
\n Note: Since this module has a Java library dependency a JVM is required\n to be installed on the system. For Windows: jvm.dll is required on the system\n path (usually located in "C:\\Program Files\\Java\\jre\\bin\\client").\n',sees:[],authors:['Cezar Andrei'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.zorba-xquery.com/modules/util-jvm",prefix:"util-jvm"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[],variables:[]},"http://www.28msec.com/modules/asynchronous-jobs":{ns:"http://www.28msec.com/modules/asynchronous-jobs",description:'

This module provides functionality for executing asynchronous jobs.\n There are three kinds of jobs: (1) a job for executing a (public or private)\n query of your project, (2) a job for mapping an input\n collection into an output collection, and (3) a job for shuffling the items\n of an input collection to several output collections.\n Map and Shuffle jobs are mostly used within\n the parallelism framework and are not meant to be created directly.

\n

Jobs that have been scheduled for execution can be referred to by\n an opaque identifier being returned by the corresponding scheduling\n function (e.g. job:execute or job:map). Specifically,\n the job\'s identifier can be used to retrieve the status of a job\n (e.g. job:status) or the names of its input and output collections.

\n',sees:[],authors:['Ghislain Fourny','Julien Ribon','Matthias Brantner'],version:null,encoding:"utf-8",namespaces:[{uri:"",prefix:"an"},{uri:"http://zorba.io/modules/base64",prefix:"base64"},{uri:"http://zorba.io/modules/fetch",prefix:"fetch"},{uri:"http://www.zorba-xquery.com/modules/http-client",prefix:"http-client"},{uri:"http://www.28msec.com/modules/asynchronous-jobs",prefix:"job"},{uri:"http://www.28msec.com/modules/project",prefix:"project"},{uri:"http://zorba.io/modules/random",prefix:"rand"},{uri:"http://www.28msec.com/modules/http/request",prefix:"request"},{uri:"http://www.28msec.com/modules/store",prefix:"store"}],functions:[{isDocumented:!0,arity:2,name:"build-map-shuffle",qname:"job:build-map-shuffle",signature:"($input-collection as xs:string, $options as object()?) as object()",description:'

Builds an object describing an asynchronous job (map or shuffle).

\n

This object can then be sent to the scheduler.

\n

The $options parameter allows for the specification of properties for\n the shuffle job. Allowed options are:\n

\n

\n',summary:"

Builds an object describing an asynchronous job (map or shuffle).

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"input-collection",type:"xs:string",occurrence:null,description:'
The name of the collection that the job processes.
'},{name:"options",type:"object()",occurrence:"?",description:'
An object specifying above options for the asynchronous job.
'}],returns:{type:"object()",description:"the id of the scheduled job, which can be used to pull for the status and results."},errors:['err:XPTY0004 if the type of a supplied option is incorrect.','job:JBDY0005 if the supplied function does not have a name.','job:JBDY0006 if the supplied function is in the local namespace.','job:JBDY0008 if the supplied input collection is not available.']},{isDocumented:!0,arity:1,name:"error",qname:"job:error",signature:"($id as xs:string) as object()?",description:'

Returns the error object output by an asynchronous job, in case of a failed job.

\n',summary:"

Returns the error object output by an asynchronous job, in case of a failed job.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"id",type:"xs:string",occurrence:null,description:'
the id of the asynchronous job to query.
'}],returns:{type:"object()?",description:"the error object output by the corresponding asynchronous job."},errors:[]},{isDocumented:!0,arity:1,name:"execute",qname:"job:execute",signature:"($query as xs:string) as xs:string",description:'

Schedules an asynchronous job executing the given (public or private)\n query from your project.

\n

The result of the query will be stored in a collection withing the\n MongoDB database associated with the project. The name of the collection\n is randomly generated and starts with _28.temporary.

\n',summary:"

Schedules an asynchronous job executing the given (public or private)\n query from your project.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"query",type:"xs:string",occurrence:null,description:'
The path of the query to execute, which must begin with /public or /private. (examples: /public/query.xq, /private/query.jq).
'}],returns:{type:"xs:string",description:"The id of the scheduled job."},errors:['job:JBDY0003 if the supplied query path does not begin with /public or /private.','job:JBDY0004 if the supplied query path cannot be resolved.']},{isDocumented:!0,arity:2,name:"execute",qname:"job:execute",signature:"($query as xs:string, $options as object()?) as xs:string",description:'

Schedules an asynchronous job executing the given (public or private)\n query from your project.

\n

The $options parameter allows for the specification of properties for\n the asynchronously executed job. Allowed options are:\n

\n

\n',summary:"

Schedules an asynchronous job executing the given (public or private)\n query from your project.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"query",type:"xs:string",occurrence:null,description:'
The path of the query to execute, which must begin with /public or /private. (examples: /public/query.xq, /private/query.jq).
'},{name:"options",type:"object()",occurrence:"?",description:'
An object specifying above options for the asynchronous job.
'}],returns:{type:"xs:string",description:"The id of the scheduled job."},errors:['err:XPTY0004 if the type of a supplied option is incorrect.','job:JBDY0003 if the supplied query path does not begin with /public or /private.','job:JBDY0004 if the supplied query path cannot be resolved.']},{isDocumented:!0,arity:1,name:"function",qname:"job:function",signature:"($id as xs:string) as xs:string?",description:'

Returns the name of the map or shuffle function used by an asynchronous job.

\n',summary:"

Returns the name of the map or shuffle function used by an asynchronous job.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"id",type:"xs:string",occurrence:null,description:'
the id of the asynchronous job to query.
'}],returns:{type:"xs:string?",description:"the name of the map or shuffle function of the corresponding asynchronous job."},errors:[]},{isDocumented:!0,arity:1,name:"get",qname:"job:get",signature:"($id as xs:string) as object()*",description:'

Returns the asynchronous job associated with the supplied asynchronous job id,\n or the asynchronous jobs associated with the supplied parallel job id.

\n

This function is internal and should only be used by the parallelism module.

\n',summary:"

Returns the asynchronous job associated with the supplied asynchronous job id,\n or the asynchronous jobs associated with the supplied parallel job id.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"id",type:"xs:string",occurrence:null,description:'
the id of the asynchronous or parallel job to query.
'}],returns:{type:"object()*",description:"the objects describing the asynchronous jobs."},errors:[]},{isDocumented:!0,arity:1,name:"input-collection",qname:"job:input-collection",signature:"($id as xs:string) as xs:string?",description:'

Returns the name of the input collection of a mapping asynchronous job.

\n',summary:"

Returns the name of the input collection of a mapping asynchronous job.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"id",type:"xs:string",occurrence:null,description:'
the id of the asynchronous job to query.
'}],returns:{type:"xs:string?",description:"the name of the input collection of the corresponding asynchronous job."},errors:[]},{isDocumented:!0,arity:0,name:"jobs",qname:"job:jobs",signature:"() as object()*",description:'

Returns the ids of all jobs created by this project.

\n',summary:"

Returns the ids of all jobs created by this project.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"",name:"nondeterministic",value:""}],updating:!1,parameters:[],returns:{type:"object()*",description:"the sequence of the ids of all jobs created so far."},errors:[]},{isDocumented:!0,arity:1,name:"kind",qname:"job:kind",signature:"($id as xs:string) as xs:string?",description:'

Returns the kind of the asynchronous job.

\n',summary:"

Returns the kind of the asynchronous job.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"id",type:"xs:string",occurrence:null,description:'
the id of the asynchronous job to query.
'}],returns:{type:"xs:string?",description:"the kind of the asynchronous job."},errors:[]},{isDocumented:!0,arity:2,name:"map",qname:"job:map",signature:"($input-collection as xs:string, $map-function as function (item()*) as item()*) as xs:string",description:'

Schedules an asynchronous job mapping the input collection\n to an output collection with the specified function.

\n

The name of the output collection is randomly generated and\n starts with _28.temporary.

\n',summary:"

Schedules an asynchronous job mapping the input collection\n to an output collection with the specified function.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"input-collection",type:"xs:string",occurrence:null,description:'
The name of the collection that the job processes.
'},{name:"map-function",type:"function (item()*) as item()*",occurrence:null,description:'
The function which is run on the input collection\'s contents.
'}],returns:{type:"xs:string",description:"The id of the scheduled job, which can be used to pull for the status and results."},errors:['job:JBDY0005 if the supplied function does not have a name.','job:JBDY0006 if the supplied function is in the local namespace.','job:JBDY0008 if the supplied input collection does not exist.']},{isDocumented:!0,arity:3,name:"map",qname:"job:map",signature:"($input-collection as xs:string, $map-function as function (item()*) as item()*, $options as object()?) as xs:string",description:'

Schedules an asynchronous job mapping the input collection\n to an output collection with the specified function.

\n

The $options parameter allows for the specification of properties for\n the map job. Allowed options are:\n

\n

\n',summary:"

Schedules an asynchronous job mapping the input collection\n to an output collection with the specified function.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"input-collection",type:"xs:string",occurrence:null,description:'
The name of the collection that the job processes.
'},{name:"map-function",type:"function (item()*) as item()*",occurrence:null,description:'
The function which is run on the collection\'s contents.
'},{name:"options",type:"object()",occurrence:"?",description:'
An object specifying above options for the asynchronous job.
'}],returns:{type:"xs:string",description:"the id of the scheduled job, which can be used to pull for the status and results."},errors:['err:XPTY0004 if the type of a supplied option is incorrect.','job:JBDY0005 if the supplied function does not have a name.','job:JBDY0006 if the supplied function is in the local namespace.','job:JBDY0008 if the supplied input collection does not exist.']},{isDocumented:!0,arity:1,name:"output-collection",qname:"job:output-collection",signature:"($id as xs:string) as xs:string?",description:'

Returns the name of the output collection of a mapping or executing asynchronous job.

\n',summary:"

Returns the name of the output collection of a mapping or executing asynchronous job.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"id",type:"xs:string",occurrence:null,description:'
the id of the asynchronous job to query.
'}],returns:{type:"xs:string?",description:"the name of the output collection of the corresponding asynchronous job."},errors:[]},{isDocumented:!0,arity:1,name:"output-collections",qname:"job:output-collections",signature:"($id as xs:string) as xs:string*",description:" Returns the name of the output collections of a shuffle asynchronous job.\n",summary:"

Returns the name of the output collections of a shuffle asynchronous job.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"id",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string*",description:"the name of the output collections of the corresponding asynchronous job."},errors:[]},{isDocumented:!0,arity:1,name:"properties",qname:"job:properties",signature:"($id as xs:string) as object()",description:'

Returns the properties of an asynchronous job as an object with the following\n fields:

\n \n',summary:"

Returns the properties of an asynchronous job as an object with the following\n fields: \n \n accessed : the time at which the job was last accessed.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"id",type:"xs:string",occurrence:null,description:'
the id of the asynchronous job to query.
'}],returns:{type:"object()",description:"the time at which the corresponding asynchronous job was last accessed."},errors:[]},{isDocumented:!0,arity:1,name:"query-name",qname:"job:query-name",signature:"($id as xs:string) as xs:string?",description:'

Returns the name of the query executed by an executing asynchronous job.

\n',summary:"

Returns the name of the query executed by an executing asynchronous job.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"id",type:"xs:string",occurrence:null,description:'
the id of the asynchronous job to query.
'}],returns:{type:"xs:string?",description:"the name of the query executed by the corresponding asynchronous job."},errors:[]},{isDocumented:!0,arity:1,name:"schedule",qname:"job:schedule",signature:"($jobs as object()*) as object()*",description:'

Sends jobs to the job queue.

\n

This function is internal and should only be used by this and the parallelism module.

\n',summary:"

Sends jobs to the job queue.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"jobs",type:"object()",occurrence:"*",description:'
The job to send, as generated by job:build-map-shuffle().
'}],returns:{type:"object()*",description:"Objects containing the new ids."},errors:[]},{isDocumented:!0,arity:3,name:"shuffle",qname:"job:shuffle",signature:"($input-collection as xs:string, $shuffle-function as function (item()) as xs:integer, $options as object()?) as xs:string",description:'

Schedules an asynchronous job shuffling the items of the input collections to output collections\n using the specified shuffle function.

\n

The $options parameter allows for the specification of properties for\n the shuffle job. Allowed options are:\n

\n

\n',summary:"

Schedules an asynchronous job shuffling the items of the input collections to output collections\n using the specified shuffle function.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"input-collection",type:"xs:string",occurrence:null,description:'
The name of the collection that the job processes.
'},{name:"shuffle-function",type:"function (item()) as xs:integer",occurrence:null,description:""},{name:"options",type:"object()",occurrence:"?",description:'
An object specifying above options for the asynchronous job.
'}],returns:{type:"xs:string",description:"the id of the scheduled job, which can be used to pull for the status and results."},errors:['err:XPTY0004 if the type of a supplied option is incorrect.','job:JBDY0005 if the supplied function does not have a name.','job:JBDY0006 if the supplied function is in the local namespace.','job:JBDY0008 if the supplied input collection does not exist.']}],variables:[]},"http://www.28msec.com/modules/datetime":{ns:"http://www.28msec.com/modules/datetime",description:" This modules contains function that operate on items of type date, time,\n dateTime, and duration.\n

The module is always imported so you don't need to import it explicitly.\n Also, you don't need to fully qualify a function to invoke it.

\n",sees:[],authors:[],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.28msec.com/modules/datetime",prefix:"datetime"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"adjust-date-to-timezone",qname:"datetime:adjust-date-to-timezone",signature:"($arg as date?) as date?",description:" Adjusts a date value to the implicit timezone.\n",summary:"

Adjusts a date value to the implicit timezone.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"date",occurrence:"?",description:""}],returns:{type:"date?",description:'the date in the implicit timezone that contains the starting instant of the supplied date. For a detailed description of the semantics of this function, please see adjust-date-to-timezone.'},errors:[]},{isDocumented:!0,arity:2,name:"adjust-date-to-timezone",qname:"datetime:adjust-date-to-timezone",signature:"($arg as date?, $timezone as dayTimeDuration?) as date?",description:" Adjusts a date value to a specific timezone, or to no timezone at all.\n",summary:"

Adjusts a date value to a specific timezone, or to no timezone at all.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"date",occurrence:"?",description:""},{name:"timezone",type:"dayTimeDuration",occurrence:"?",description:""}],returns:{type:"date?",description:'the date in the target timezone that contains the starting instant of the supplied date. For a detailed description of the semantics of this function, please see adjust-date-to-timezone'},errors:[]},{isDocumented:!0,arity:1,name:"adjust-dateTime-to-timezone",qname:"datetime:adjust-dateTime-to-timezone",signature:"($arg as dateTime?) as dateTime",description:" Adjusts a dateTime value to the implicit timezone.\n",summary:"

Adjusts a dateTime value to the implicit timezone.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"dateTime",occurrence:"?",description:""}],returns:{type:"dateTime",description:'the dateTime in the implicit timezone. For a detailed description of the semantics of this function, please see adjust-dateTime-to-timezone'},errors:[]},{isDocumented:!0,arity:2,name:"adjust-dateTime-to-timezone",qname:"datetime:adjust-dateTime-to-timezone",signature:"($arg as dateTime?, $timezone as dayTimeDuration?) as dateTime",description:" Adjusts a dateTime value to the specified timezone, or to no timezone at all.\n",summary:"

Adjusts a dateTime value to the specified timezone, or to no timezone at all.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"dateTime",occurrence:"?",description:""},{name:"timezone",type:"dayTimeDuration",occurrence:"?",description:""}],returns:{type:"dateTime",description:"the dateTime in the specified timezone. For a detailed description of the semantics of this function, please see adjust-dateTime-to-timezone"},errors:[]},{isDocumented:!0,arity:1,name:"adjust-time-to-timezone",qname:"datetime:adjust-time-to-timezone",signature:"($arg as time?) as time?",description:" Adjusts a time value to an implicit timezone.\n",summary:"

Adjusts a time value to an implicit timezone.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"time",occurrence:"?",description:""}],returns:{type:"time?",description:'the time in the implicit timezone. For a detailed description of the semantics of this function, please see adjust-time-to-timezone'},errors:[]},{isDocumented:!0,arity:2,name:"adjust-time-to-timezone",qname:"datetime:adjust-time-to-timezone",signature:"($arg as time?, $timezone as dayTimeDuration?) as time?",description:" Adjusts a time value to a specific timezone, or to no timezone at all.\n",summary:"

Adjusts a time value to a specific timezone, or to no timezone at all.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"time",occurrence:"?",description:""},{name:"timezone",type:"dayTimeDuration",occurrence:"?",description:""}],returns:{type:"time?",description:'the time in the specified timezone. For a detailed description of the semantics of this function, please see adjust-time-to-timezone'},errors:[]},{isDocumented:!0,arity:0,name:"current-date",qname:"datetime:current-date",signature:"() as date external",description:' Returns the current date.\n For a detailed description of the semantics of this function, please see\n current-date\n',summary:"

Returns the current date.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"date",description:""},errors:[]},{isDocumented:!0,arity:0,name:"current-dateTime",qname:"datetime:current-dateTime",signature:"() as dateTimeStamp external",description:' Returns the current dateTime.\n For a detailed description of the semantics of this function, please see\n current-dateTime\n',summary:"

Returns the current dateTime.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"dateTimeStamp",description:""},errors:[]},{isDocumented:!0,arity:0,name:"current-time",qname:"datetime:current-time",signature:"() as time external",description:' Returns the current time.\n For a detailed description of the semantics of this function, please see\n current-time\n',summary:"

Returns the current time.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"time",description:""},errors:[]},{isDocumented:!0,arity:2,name:"dateTime",qname:"datetime:dateTime",signature:"($arg1 as date?, $arg2 as time?) as dateTime?",description:" Returns a dateTime value created by combining a date and a time.\n",summary:"

Returns a dateTime value created by combining a date and a time.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"date",occurrence:"?",description:""},{name:"arg2",type:"time",occurrence:"?",description:""}],returns:{type:"dateTime?",description:'the dateTime value created by combinding the given date and time. For a detailed description of the semantics of this function, please see dateTime'},errors:[]},{isDocumented:!0,arity:1,name:"day-from-date",qname:"datetime:day-from-date",signature:"($arg as date?) as integer?",description:" Returns the day component of a date.\n",summary:"

Returns the day component of a date.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"date",occurrence:"?",description:""}],returns:{type:"integer?",description:'the day component of the given date. For a detailed description of the semantics of this function, please see day-from-date'},errors:[]},{isDocumented:!0,arity:1,name:"day-from-dateTime",qname:"datetime:day-from-dateTime",signature:"($arg as dateTime?) as integer?",description:" Returns the day component of a dateTime.\n",summary:"

Returns the day component of a dateTime.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"dateTime",occurrence:"?",description:""}],returns:{type:"integer?",description:'the day component of the given dateTime. For a detailed description of the semantics of this function, please see day-from-dateTime'},errors:[]},{isDocumented:!0,arity:1,name:"days-from-duration",qname:"datetime:days-from-duration",signature:"($arg as duration?) as integer?",description:" Returns the number of days in a duration.\n",summary:"

Returns the number of days in a duration.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"duration",occurrence:"?",description:""}],returns:{type:"integer?",description:'the number of days in the given duration. For a detailed description of the semantics of this function, please see days-from-duration'},errors:[]},{isDocumented:!0,arity:2,name:"format-date",qname:"datetime:format-date",signature:"($value as date?, $picture as string) as string?",description:" Returns a string containing a date value formatted for display.\n",summary:"

Returns a string containing a date value formatted for display.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"date",occurrence:"?",description:""},{name:"picture",type:"string",occurrence:null,description:""}],returns:{type:"string?",description:'the string formatted according to the given picture. The following examples assume let $d := date("2002-12-31") and the Gregorian calendar as the default calendar. For a detailed description of the semantics of this function, please see format-date'},errors:[]},{isDocumented:!0,arity:5,name:"format-date",qname:"datetime:format-date",signature:"($value as date?, $picture as string, $language as string?, $calendar as string?, $place as string?) as string?",description:" Returns a string containing a date value formatted for display.\n",summary:"

Returns a string containing a date value formatted for display.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"date",occurrence:"?",description:""},{name:"picture",type:"string",occurrence:null,description:""},{name:"language",type:"string",occurrence:"?",description:""},{name:"calendar",type:"string",occurrence:"?",description:""},{name:"place",type:"string",occurrence:"?",description:""}],returns:{type:"string?",description:'the string formatted according to the given picture. The following examples assume let $d := date("2002-12-31") and the Gregorian calendar as the default calendar. For a detailed description of the semantics of this function, please see format-date'},errors:[]},{isDocumented:!0,arity:2,name:"format-dateTime",qname:"datetime:format-dateTime",signature:"($value as dateTime?, $picture as string) as string?",description:" Returns a string containing a dateTime value formatted for display.\n",summary:"

Returns a string containing a dateTime value formatted for display.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"dateTime",occurrence:"?",description:""},{name:"picture",type:"string",occurrence:null,description:""}],returns:{type:"string?",description:'the string formatted according to the given picture. The following examples assume let $dt := dateTime("2002-12-31T15:58:45") and the Gregorian calendar as the default calendar. For a detailed description of the semantics of this function, please see format-dateTime'},errors:[]},{isDocumented:!0,arity:5,name:"format-dateTime",qname:"datetime:format-dateTime",signature:"($value as dateTime?, $picture as string, $language as string?, $calendar as string?, $place as string?) as string?",description:" Returns a string containing a dateTime value formatted for display.\n",summary:"

Returns a string containing a dateTime value formatted for display.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"dateTime",occurrence:"?",description:""},{name:"picture",type:"string",occurrence:null,description:""},{name:"language",type:"string",occurrence:"?",description:""},{name:"calendar",type:"string",occurrence:"?",description:""},{name:"place",type:"string",occurrence:"?",description:""}],returns:{type:"string?",description:'the string formatted according to the given picture. For a detailed description of the semantics of this function, please see format-dateTime'},errors:[]},{isDocumented:!0,arity:1,name:"hours-from-dateTime",qname:"datetime:hours-from-dateTime",signature:"($arg as dateTime?) as integer?",description:" Returns the hours component of a dateTime.\n",summary:"

Returns the hours component of a dateTime.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"dateTime",occurrence:"?",description:""}],returns:{type:"integer?",description:'the hours component of the given dateTime. For a detailed description of the semantics of this function, please see hours-from-dateTime'},errors:[]},{isDocumented:!0,arity:1,name:"hours-from-duration",qname:"datetime:hours-from-duration",signature:"($arg as duration?) as integer?",description:" Returns the number of hours in a duration.\n",summary:"

Returns the number of hours in a duration.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"duration",occurrence:"?",description:""}],returns:{type:"integer?",description:'the number of hours in the given duration. For a detailed description of the semantics of this function, please see hours-from-duration'},errors:[]},{isDocumented:!0,arity:1,name:"hours-from-time",qname:"datetime:hours-from-time",signature:"($arg as time?) as integer?",description:" Returns the hours component of a time.\n",summary:"

Returns the hours component of a time.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"time",occurrence:"?",description:""}],returns:{type:"integer?",description:'the hours component of the given time. For a detailed description of the semantics of this function, please see hours-from-time'},errors:[]},{isDocumented:!0,arity:0,name:"implicit-timezone",qname:"datetime:implicit-timezone",signature:"() as dayTimeDuration",description:" Returns the value of the implicit timezone property set in the platform.\n",summary:"

Returns the value of the implicit timezone property set in the platform.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"dayTimeDuration",description:'the implicit timezone property. For a detailed description of the semantics of this function, please see implicit-timezone'},errors:[]},{isDocumented:!0,arity:1,name:"minutes-from-dateTime",qname:"datetime:minutes-from-dateTime",signature:"($arg as dateTime?) as integer?",description:" Returns the minute component of a dateTime.\n",summary:"

Returns the minute component of a dateTime.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"dateTime",occurrence:"?",description:""}],returns:{type:"integer?",description:'the minute component of the given dateTime. For a detailed description of the semantics of this function, please see minutes-from-dateTime'},errors:[]},{isDocumented:!0,arity:1,name:"minutes-from-duration",qname:"datetime:minutes-from-duration",signature:"($arg as duration?) as integer?",description:" Returns the number of minutes in a duration.\n",summary:"

Returns the number of minutes in a duration.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"duration",occurrence:"?",description:""}],returns:{type:"integer?",description:'the number of minutes of the given duration. For a detailed description of the semantics of this function, please see minutes-from-duration'},errors:[]},{isDocumented:!0,arity:1,name:"minutes-from-time",qname:"datetime:minutes-from-time",signature:"($arg as time?) as integer?",description:" Returns the minutes component of a time.\n",summary:"

Returns the minutes component of a time.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"time",occurrence:"?",description:""}],returns:{type:"integer?",description:'the minutes component of the given time. For a detailed description of the semantics of this function, please see minutes-from-time'},errors:[]},{isDocumented:!0,arity:1,name:"month-from-date",qname:"datetime:month-from-date",signature:"($arg as date?) as integer?",description:" Returns the month component of a date.\n",summary:"

Returns the month component of a date.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"date",occurrence:"?",description:""}],returns:{type:"integer?",description:'the month component of the given date. For a detailed description of the semantics of this function, please see month-from-date'},errors:[]},{isDocumented:!0,arity:1,name:"month-from-dateTime",qname:"datetime:month-from-dateTime",signature:"($arg as dateTime?) as integer?",description:" Returns the month component of a dateTime.\n",summary:"

Returns the month component of a dateTime.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"dateTime",occurrence:"?",description:""}],returns:{type:"integer?",description:'the month component of the given dateTime. For a detailed description of the semantics of this function, please see month-from-dateTime'},errors:[]},{isDocumented:!0,arity:1,name:"months-from-duration",qname:"datetime:months-from-duration",signature:"($arg as duration?) as integer?",description:" Returns the number of months in a duration.\n",summary:"

Returns the number of months in a duration.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"duration",occurrence:"?",description:""}],returns:{type:"integer?",description:'the number of months in the given duration. For a detailed description of the semantics of this function, please see months-from-duration'},errors:[]},{isDocumented:!0,arity:1,name:"seconds-from-dateTime",qname:"datetime:seconds-from-dateTime",signature:"($arg as dateTime?) as decimal?",description:" Returns the seconds component of a dateTime.\n",summary:"

Returns the seconds component of a dateTime.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"dateTime",occurrence:"?",description:""}],returns:{type:"decimal?",description:'the seconds component of the given dateTime. For a detailed description of the semantics of this function, please see seconds-from-dateTime'},errors:[]},{isDocumented:!0,arity:1,name:"seconds-from-duration",qname:"datetime:seconds-from-duration",signature:"($arg as duration?) as decimal?",description:" Returns the number of seconds in a duration.\n",summary:"

Returns the number of seconds in a duration.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"duration",occurrence:"?",description:""}],returns:{type:"decimal?",description:'the number of seconds in the given duration. For a detailed description of the semantics of this function, please see seconds-from-duration'},errors:[]},{isDocumented:!0,arity:1,name:"seconds-from-time",qname:"datetime:seconds-from-time",signature:"($arg as time?) as decimal?",description:" Returns the seconds component of a time.\n",summary:"

Returns the seconds component of a time.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"time",occurrence:"?",description:""}],returns:{type:"decimal?",description:'the seconds component of the given time. For a detailed description of the semantics of this function, please see seconds-from-time'},errors:[]},{isDocumented:!0,arity:1,name:"timezone-from-date",qname:"datetime:timezone-from-date",signature:"($arg as date?) as dayTimeDuration?",description:" Returns the timezone component of a date.\n",summary:"

Returns the timezone component of a date.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"date",occurrence:"?",description:""}],returns:{type:"dayTimeDuration?",description:'the timezone component of the given date. For a detailed description of the semantics of this function, please see timezone-from-date'},errors:[]},{isDocumented:!0,arity:1,name:"timezone-from-dateTime",qname:"datetime:timezone-from-dateTime",signature:"($arg as dateTime?) as dayTimeDuration?",description:" Returns the timezone component of a dateTime.\n",summary:"

Returns the timezone component of a dateTime.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"dateTime",occurrence:"?",description:""}],returns:{type:"dayTimeDuration?",description:'the timezone component of the given dateTime. For a detailed description of the semantics of this function, please see timezone-from-dateTime'},errors:[]},{isDocumented:!0,arity:1,name:"timezone-from-time",qname:"datetime:timezone-from-time",signature:"($arg as time?) as dayTimeDuration?",description:" Returns the timezone component of a time.\n",summary:"

Returns the timezone component of a time.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"time",occurrence:"?",description:""}],returns:{type:"dayTimeDuration?",description:'the timezone component of the given time. For a detailed description of the semantics of this function, please see timezone-from-time'},errors:[]},{isDocumented:!0,arity:1,name:"year-from-date",qname:"datetime:year-from-date",signature:"($arg as date?) as integer?",description:" Returns the year component of a date.\n",summary:"

Returns the year component of a date.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"date",occurrence:"?",description:""}],returns:{type:"integer?",description:'the year component of the given date. For a detailed description of the semantics of this function, please see year-from-date'},errors:[]},{isDocumented:!0,arity:1,name:"year-from-dateTime",qname:"datetime:year-from-dateTime",signature:"($arg as dateTime?) as integer?",description:" Returns the year component of a dateTime.\n",summary:"

Returns the year component of a dateTime.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"dateTime",occurrence:"?",description:""}],returns:{type:"integer?",description:'the year component of the given dateTime. For a detailed description of the semantics of this function, please see year-from-dateTime'},errors:[]},{isDocumented:!0,arity:1,name:"years-from-duration",qname:"datetime:years-from-duration",signature:"($arg as duration?) as integer?",description:" Returns the number of years in a duration.\n",summary:"

Returns the number of years in a duration.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"duration",occurrence:"?",description:""}],returns:{type:"integer?",description:'the number of years in the given duration. For a detailed description of the semantics of this function, please see years-from-duration'},errors:[]}],variables:[]},"http://api.28.io/jdbc":{ns:"http://api.28.io/jdbc",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"",prefix:"an"},{uri:"http://api.28.io/jdbc",prefix:"api"},{uri:"http://www.28msec.com/modules/jdbc",prefix:"jdbc"},{uri:"http://www.28msec.com/modules/http/request",prefix:"req"},{uri:"http://www.28msec.com/modules/http/response",prefix:"res"},{uri:"http://www.28msec.com/modules/store",prefix:"store"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!1,arity:0,name:"dispatch",qname:"api:dispatch",signature:"()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:0,name:"import",qname:"api:import",signature:"()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:0,name:"tables",qname:"api:tables",signature:"()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]}],variables:[]},"http://zorba.io/modules/excel/information":{ns:"http://zorba.io/modules/excel/information",description:" This is a library module offering the same set of functions\n defined by Microsoft Excel, under Information Functions.\n",sees:['Excel Documentation: Information Functions'],authors:['Sorin Nasoi'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/excel/errors",prefix:"excel-err"},{uri:"http://zorba.io/modules/excel/information",prefix:"excel-information"},{uri:"http://zorba.io/modules/excel/math",prefix:"excel-math"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"is-blank",qname:"excel-information:is-blank",signature:"($value as xs:anyAtomicType?) as xs:boolean",description:" Test if the passed argument is empty of not.\n",summary:"

Test if the passed argument is empty of not.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the value.
'}],returns:{type:"xs:boolean",description:"If the value of $arg is the empty sequence, the function returns true, otherwise the function returns false."},errors:[]},{isDocumented:!0,arity:1,name:"is-even",qname:"excel-information:is-even",signature:"($value as xs:anyAtomicType?) as xs:boolean",description:" Test is a number is even.\n",summary:"

Test is a number is even.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the value.
'}],returns:{type:"xs:boolean",description:"TRUE if number is even, FALSE if number is odd."},errors:['excel-err:Value if provided value is not a number.']},{isDocumented:!0,arity:1,name:"is-odd",qname:"excel-information:is-odd",signature:"($value as xs:anyAtomicType?) as xs:boolean",description:" Test is a number is odd.\n",summary:"

Test is a number is odd.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the value.
'}],returns:{type:"xs:boolean",description:"TRUE if number is odd, FALSE if number is even."},errors:['excel-err:Value if provided value is not a number.']},{isDocumented:!0,arity:1,name:"islogical",qname:"excel-information:islogical",signature:"($value as xs:anyAtomicType?) as xs:boolean",description:" Tests if the passed $value is a logical value.\n",summary:"

Tests if the passed $value is a logical value.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the value.
'}],returns:{type:"xs:boolean",description:"TRUE if $value refers to a logical value."},errors:[]},{isDocumented:!0,arity:1,name:"isnumber",qname:"excel-information:isnumber",signature:"($value as xs:anyAtomicType?) as xs:boolean",description:" Tests if the passed $value is a number.\n",summary:"

Tests if the passed $value is a number.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the value.
'}],returns:{type:"xs:boolean",description:"TRUE if $value refers to a number."},errors:[]},{isDocumented:!0,arity:1,name:"istext",qname:"excel-information:istext",signature:"($value as xs:anyAtomicType?) as xs:boolean",description:" Tests if the passed $value is a string.\n",summary:"

Tests if the passed $value is a string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the value.
'}],returns:{type:"xs:boolean",description:"TRUE if $value refers to text."},errors:[]},{isDocumented:!0,arity:1,name:"n",qname:"excel-information:n",signature:"($value as xs:anyAtomicType?) as xs:anyAtomicType",description:" Converts a $value to a number.\n",summary:"

Converts a $value to a number.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the value.
'}],returns:{type:"xs:anyAtomicType",description:"A $value converted to a number."},errors:[]},{isDocumented:!0,arity:0,name:"na",qname:"excel-information:na",signature:"() as xs:anyAtomicType",description:" Raises the error value #N/A.\n",summary:"

Raises the error value #N/A.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:anyAtomicType",description:'The error value #N/A. #N/A is the error value that means "no value is available."'},errors:['excel-err:NA the purpose of this function is to raise this error']}],variables:[]},"http://www.zorba-xquery.com/modules/image/animation":{ns:"http://www.zorba-xquery.com/modules/image/animation",description:" This module provides functions to create animated GIF images.\n",sees:[],authors:['Daniel Thomas'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.zorba-xquery.com/modules/image/animation",prefix:"anim"},{uri:"http://www.zorba-xquery.com/modules/image/error",prefix:"ierr"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:3,name:"create-animated-gif",qname:"anim:create-animated-gif",signature:"($images as xs:base64Binary+, $delay as xs:unsignedInt, $iterations as xs:unsignedInt) as xs:base64Binary external",description:" Creates an animated GIF image.\n The resulting animated GIF shows the passed images consecutively.\n It has the same width and height as the first passed image.\n",summary:"

Creates an animated GIF image.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"images",type:"xs:base64Binary",occurrence:"+",description:'
the image sequence
'},{name:"delay",type:"xs:unsignedInt",occurrence:null,description:'
the hundredths of seconds an image is shown
'},{name:"iterations",type:"xs:unsignedInt",occurrence:null,description:'
the amount of times all images are shown. 0 for infinite.
'}],returns:{type:"xs:base64Binary",description:"the animated GIF"},errors:['ierr:IM001 one of the passed images is invalid.']},{isDocumented:!0,arity:4,name:"create-morphed-gif",qname:"anim:create-morphed-gif",signature:"($images as xs:base64Binary+, $delay as xs:unsignedInt, $iterations as xs:unsignedInt, $nr-of-morph-images as xs:unsignedInt) as xs:base64Binary external",description:" Creates an animated GIF image with morph effect.\n The resulting animated GIF shows the passed images consecutively with morph effect between the changes.\n It has the same width and height as the first passed image.\n",summary:"

Creates an animated GIF image with morph effect.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"images",type:"xs:base64Binary",occurrence:"+",description:'
the image sequence
'},{name:"delay",type:"xs:unsignedInt",occurrence:null,description:'
the hundredths of seconds an image is shown
'},{name:"iterations",type:"xs:unsignedInt",occurrence:null,description:'
the amount of times all images are shown. 0 for infinite.
'},{name:"nr-of-morph-images",type:"xs:unsignedInt",occurrence:null,description:'
the number of additionally added images to create the morph effect between two passed images.
'}],returns:{type:"xs:base64Binary",description:"the animated GIF"},errors:['ierr:IM001 one of the passed images is invalid.']}],variables:[]},"http://28.io/modules/error":{ns:"http://28.io/modules/error",description:'

Applications written with Sausalito use this default error module\n if an error happens inside a Sausalito project.

\n

An error can occur during the run time of a Sausalito project on one\n of the following cases:

\n
    \n
  1. If the XQuery code raises a dynamic error that is not caught in a\n try-catch block.
  2. \n
  3. If the given XQuery program is syntactically incorrect or contains\n other static errors.
  4. \n
  5. If an explicit call to fn:error() was made and the error is not\n caught in a try-catch block.
  6. \n
  7. If a request is made to a module or a function which does\n not exist.
  8. \n
  9. If any other unexpected error happens during the processing of\n the request.
  10. \n
\n',sees:[],authors:['28msec'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://28.io/modules/error",prefix:"err"},{uri:"http://www.28msec.com/modules/http/request",prefix:"request"},{uri:"http://www.28msec.com/modules/http/response",prefix:"resp"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:4,name:"handle",qname:"err:handle",signature:"($code as xs:QName, $description as xs:string?, $value as item()*, $stack) as item()*",description:'

This is the default function that is called if an error happens.\n The default can be overridden by adding an error.xq library module\n into the Sausalito project. This module needs to declare a function\n with the same signature as the err:handle function in this module.

\n

The value returned by this function is sent to the client. If the\n default is overridden, the implementation is free to define all\n parameters of the response (e.g. set the corresponding HTTP status\n code or an arbitrary header).

\n

If the default is used, the status code is 500 if the $code QName\n is not equal to one of the status code QNames declared in HTTP module.\n Otherwise, the corresponding status code is set.

\n',summary:"

This is the default function that is called if an error happens.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"code",type:"xs:QName",occurrence:null,description:'
the error code that triggered the problem as a QName
'},{name:"description",type:"xs:string",occurrence:"?",description:'
a description of the error
'},{name:"value",type:"item()",occurrence:"*",description:'
a potentially empty list of items that were involved in causing the error
'},{name:"stack",type:null,occurrence:null,description:'
the stacktrace leading to the error as an element. For example, <stack> <call ns="http://www.example.com/" localName="my-function" arity="3"/> </stack>
'}],returns:{type:"item()*",description:"content of the response message"},errors:[]}],variables:[]},"http://www.zorba-xquery.com/modules/internal-debug":{ns:"http://www.zorba-xquery.com/modules/internal-debug",description:" This internal module provides functions for testing error handling and\n internal function caching.\n",sees:[],authors:['Federico Cavalieri'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.zorba-xquery.com/modules/internal-debug",prefix:"debug"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:0,name:"cpp-error",qname:"debug:cpp-error",signature:"() as empty-sequence() external",description:" Raises a c++ exception.\n",summary:"

Raises a c++ exception.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"empty-sequence()",description:"empty sequence"},errors:[]},{isDocumented:!0,arity:0,name:"cpp-exit",qname:"debug:cpp-exit",signature:"() as empty-sequence() external",description:" C++ exit is invoked.\n",summary:"

C++ exit is invoked.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"empty-sequence()",description:"empty sequence"},errors:[]},{isDocumented:!0,arity:0,name:"user-error-no-location",qname:"debug:user-error-no-location",signature:"() as empty-sequence() external",description:" Raises a user error without query location.\n",summary:"

Raises a user error without query location.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"empty-sequence()",description:"empty sequence"},errors:[]},{isDocumented:!0,arity:0,name:"user-error",qname:"debug:user-error",signature:"() as empty-sequence() external",description:" Raises a user error.\n",summary:"

Raises a user error.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"empty-sequence()",description:"empty sequence"},errors:[]},{isDocumented:!0,arity:0,name:"zorba-error",qname:"debug:zorba-error",signature:"() as empty-sequence() external",description:" Raises a zorba error.\n",summary:"

Raises a zorba error.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"empty-sequence()",description:"empty sequence"},errors:[]}],variables:[]},"http://zorba.io/modules/reflection":{ns:"http://zorba.io/modules/reflection",description:" This module provides functions to dynamically invoke functions or main modules,\n respectively. Each of the functions (invoke or eval) come in four variants depending\n whether the expression being invoked is simple, nondeterministic, updating,\n or sequential.\n",sees:[],authors:['Nicolae Brinza'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://zorba.io/modules/reflection",prefix:"reflection"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"eval-n",qname:"reflection:eval-n",signature:"($query as xs:string) as item()* external",description:" See documentation of reflection:eval() except the main module that is to\n be executed may be nondeterministc.\n",summary:"

See documentation of reflection:eval() except the main module that is to\n be executed may be nondeterministc.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"query",type:"xs:string",occurrence:null,description:'
the query string to be evaluated
'}],returns:{type:"item()*",description:"the result of evaluating the query"},errors:['whatever error the evaluated XQuery may return','err:XQST0031 If the XQuery version of the inner program is greater than the version of the outer program.']},{isDocumented:!0,arity:1,name:"eval-s",qname:"reflection:eval-s",signature:"($query as xs:string) as item()* external",description:" See documentation of reflection:eval() except the main module that is to\n be executed may be sequential, i.e. may have side-effects.\n",summary:"

See documentation of reflection:eval() except the main module that is to\n be executed may be sequential, i.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"query",type:"xs:string",occurrence:null,description:'
the query string to be evaluated
'}],returns:{type:"item()*",description:"the result of evaluating the query (the result is not supposed to contain any PUL)."},errors:['whatever error the evaluated XQuery may return','err:XQST0031 If the XQuery version of the inner program is greater than the version of the outer program.']},{isDocumented:!0,arity:1,name:"eval-u",qname:"reflection:eval-u",signature:"($query as xs:string) external",description:" See documentation of reflection:eval() except the main module that is to\n be executed may be updating, i.e. return a pending update list.\n",summary:"

See documentation of reflection:eval() except the main module that is to\n be executed may be updating, i.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!0,parameters:[{name:"query",type:"xs:string",occurrence:null,description:'
the query string to be evaluated
'}],returns:{type:null,description:"the PUL resulting from evaluating the query"},errors:['whatever error the evaluated XQuery may return','err:XQST0031 If the XQuery version of the inner program is greater than the version of the outer program.']},{isDocumented:!0,arity:1,name:"eval",qname:"reflection:eval",signature:"($query as xs:string) as item()* external",description:' The purpose of this function is to (dynamically) execute an XQuery program\n from inside another XQuery program.

\n The XQuery program that invokes the\n eval function will be referred to as the "outer" program and the XQuery\n program that is executed by the eval invocation will be referred to as\n the "inner" program. The function is given as a string argument.\n Typically, the outer program constructs this string dynamically,\n e.g., based on data extracted from documents and/or the values of\n external variables. The eval function treats this string as\n an XQuery main module. That is, it parses the string, compiles the\n resulting parse tree, executes the resulting execution plan, and finally\n returns the result or error (if any) to the outer program.

\n The given XQuery program needs to be a valid according to XQuery\'s\n MainModule production (see \n http://www.w3.org/TR/xquery/#doc-xquery-MainModule. Please note\n that the inner pogram must at least have the XQuery version of the\n outer program [err:XQST0031].

\n The inner program "inherits" the static and dynamic context of the outer\n program. Specifically, evaluation of the inner program is done in static and\n dynamic contextes that are initialized as copies of the static and dynamic\n contextes of the outer program at the place where the eval invocation appears\n at. This means that, for example, all variables that are in-scope at the place\n where the eval function is invoked from, are also in-scope inside the inner\n program and can be referenced there without having to be re-declared. On the other\n hand, declarations that appear in the prolog of the inner main module or are\n imported by the inner main module from library modules, hide their corresponding\n inherited declarations. For example, if the inner main module declares\n a variable or function with the same name as an inherited variable or function,\n the inner variable/function hides the inherited one.

\n If the inner program declares an external variable with the same name as an\n inherited variable, the value of the inherited variable is used to initialize\n the inner external variable. If, however, an inner external variable has no\n default initializer and no corresponding inherited variable, it will remain\n uninitialized, causing the inner program to raise an error when executed.\n',summary:"

The purpose of this function is to (dynamically) execute an XQuery program\n from inside another XQuery program.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query",type:"xs:string",occurrence:null,description:'
the query string to be evaluated
'}],returns:{type:"item()*",description:"the result of evaluating the query"},errors:['whatever error the evaluated XQuery may return.','err:XQST0031 If the XQuery version of the inner program is greater than the version of the outer program.']},{isDocumented:!0,arity:1,name:"invoke-n",qname:"reflection:invoke-n",signature:"($name as xs:QName) as item()* external",description:" See documentation for reflection:invoke except the function that\n is to be invoked may be nondeterministic.\n",summary:"

See documentation for reflection:invoke except the function that\n is to be invoked may be nondeterministic.

",annotation_str:" %an:nondeterministic %an:variadic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""},{prefix:"an",ns:"http://zorba.io/annotations",name:"variadic",value:""}],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
the QName of the function that is to be invoked
'}],returns:{type:"item()*",description:"the result that is returned by the invoked function"},errors:['whatever error the invoked function may return']},{isDocumented:!0,arity:1,name:"invoke-s",qname:"reflection:invoke-s",signature:"($name as xs:QName) as item()* external",description:" See documentation for reflection:invoke except the function that\n is to be invoked may be sequential, i.e. may have side-effects.\n",summary:"

See documentation for reflection:invoke except the function that\n is to be invoked may be sequential, i.

",annotation_str:" %an:variadic %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"variadic",value:""},{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
the QName of the function that is to be invoked
'}],returns:{type:"item()*",description:"the result that is returned by the invoked function"},errors:['whatever error the invoked function may return']},{isDocumented:!0,arity:1,name:"invoke-u",qname:"reflection:invoke-u",signature:"($name as xs:QName) external",description:" See documentation for reflection:invoke-n except the function that\n is to be invoked may be updating, i.e. return a pending update list.\n",summary:"

See documentation for reflection:invoke-n except the function that\n is to be invoked may be updating, i.

",annotation_str:" %an:nondeterministic %an:variadic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""},{prefix:"an",ns:"http://zorba.io/annotations",name:"variadic",value:""}],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
the QName of the function that is to be invoked
'}],returns:{type:null,description:"the result that is returned by the invoked function"},errors:['whatever error the invoked function may return']},{isDocumented:!0,arity:1,name:"invoke",qname:"reflection:invoke",signature:"($name as xs:QName) as item()* external",description:' The invoke function allows to dynamically call a function given its QName\n and parameters.

\n It is possible to invoke a function whose name is not known\n at compilation time -- it can be computed, passed through an external\n variable, taken from a file, etc. The first parameter must always be a\n QName identifying a known function.

\n The function is declared with the %an:variadic annotation. Hence, it allows\n for an arbitrary number of parameters. All of these parameters (except the\n first one) will be passed to the function that is called.\n
\n Example usage :

 reflection:invoke ( xs:QName("fn:max"), (1,2,3) ) 
\n
\n Returns
 3 
.\n',summary:"

The invoke function allows to dynamically call a function given its QName\n and parameters.

",annotation_str:" %an:variadic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"variadic",value:""}],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
the QName of the function that is to be invoked
'}],returns:{type:"item()*",description:"the result that is returned by the invoked function"},errors:['whatever error the invoked function may return']}],variables:[]},"http://zorba.io/modules/hmac":{ns:"http://zorba.io/modules/hmac",description:" This module provides functions that perform HMAC\n (hash-based message authentication code) operations.\n For example, they calculate message codes involving hash functions such\n as MD5 and various SHA variants. The result is the base64 encoded value\n of the hash. A hash may be used to verify the data integrity and\n the authenticity of a message.\n",sees:[],authors:['William Candillon, Matthias Brantner'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/hmac",prefix:"hmac"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:3,name:"compute-binary",qname:"hmac:compute-binary",signature:"($message as xs:base64Binary, $secret-key as xs:string, $hash-algo as xs:string) as xs:base64Binary external",description:" Calculate the HMAC for the given message and secret-key involving\n an custom hash function. Before calculating the code, the given\n base64-encoded message is base64-decoded.\n",summary:"

Calculate the HMAC for the given message and secret-key involving\n an custom hash function.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"message",type:"xs:base64Binary",occurrence:null,description:'
the message to be authenticated
'},{name:"secret-key",type:"xs:string",occurrence:null,description:'
the secret key used for calculating the authentication
'},{name:"hash-algo",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:base64Binary",description:"the base64 encoded message authentication code"},errors:['hash:UNSUPPORTED-ALGORITHM if the given hash algorithm is not supported']},{isDocumented:!0,arity:3,name:"compute",qname:"hmac:compute",signature:"($message as xs:string, $secret-key as xs:string, $alg as xs:string) as xs:base64Binary external",description:" Calculate the HMAC for the given message and secret-key involving\n an custom hash function.\n",summary:"

Calculate the HMAC for the given message and secret-key involving\n an custom hash function.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"message",type:"xs:string",occurrence:null,description:'
the message to be authenticated
'},{name:"secret-key",type:"xs:string",occurrence:null,description:'
the secret key used for calculating the authentication
'},{name:"alg",type:"xs:string",occurrence:null,description:'
The algorithm to use for the hashing operation. Supported algorithms are "md5", "sha1", and "sha256".
'}],returns:{type:"xs:base64Binary",description:"the base64 encoded message authentication code"},errors:['hash:UNSUPPORTED-ALGORITHM if the given hash algorithm is not supported']},{isDocumented:!0,arity:2,name:"md5-binary",qname:"hmac:md5-binary",signature:"($message as xs:base64Binary, $secret-key as xs:string) as xs:base64Binary",description:" Calculate the HMAC for the given message and secret-key involving\n the MD5 hash function. Before calculating the code, the given\n base64-encoded message is base64-decoded.\n",summary:"

Calculate the HMAC for the given message and secret-key involving\n the MD5 hash function.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"message",type:"xs:base64Binary",occurrence:null,description:'
the message to be authenticated
'},{name:"secret-key",type:"xs:string",occurrence:null,description:'
the secret key used for calculating the authentication
'}],returns:{type:"xs:base64Binary",description:"the base64 encoded message authentication code"},errors:[]},{isDocumented:!0,arity:2,name:"md5",qname:"hmac:md5",signature:"($message as xs:string, $secret-key as xs:string) as xs:base64Binary",description:" Calculate the HMAC for the given message and secret-key involving\n the MD5 hash function.\n",summary:"

Calculate the HMAC for the given message and secret-key involving\n the MD5 hash function.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"message",type:"xs:string",occurrence:null,description:'
the message to be authenticated
'},{name:"secret-key",type:"xs:string",occurrence:null,description:'
the secret key used for calculating the authentication
'}],returns:{type:"xs:base64Binary",description:"the base64 encoded message authentication code"},errors:[]},{isDocumented:!0,arity:2,name:"sha1-binary",qname:"hmac:sha1-binary",signature:"($message as xs:base64Binary, $secret-key as xs:string) as xs:base64Binary",description:" Calculate the HMAC for the given message and secret-key involving\n the SHA1 hash function. Before calculating the code, the given\n base64-encoded message is base64-decoded.\n",summary:"

Calculate the HMAC for the given message and secret-key involving\n the SHA1 hash function.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"message",type:"xs:base64Binary",occurrence:null,description:'
the message to be authenticated
'},{name:"secret-key",type:"xs:string",occurrence:null,description:'
the secret key used for calculating the authentication
'}],returns:{type:"xs:base64Binary",description:"the base64 encoded message authentication code"},errors:[]},{isDocumented:!0,arity:2,name:"sha1",qname:"hmac:sha1",signature:"($message as xs:string, $secret-key as xs:string) as xs:base64Binary",description:" Calculate the HMAC for the given message and secret-key involving\n the SHA1 hash function.\n",summary:"

Calculate the HMAC for the given message and secret-key involving\n the SHA1 hash function.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"message",type:"xs:string",occurrence:null,description:'
the message to be authenticated
'},{name:"secret-key",type:"xs:string",occurrence:null,description:'
the secret key used for calculating the authentication
'}],returns:{type:"xs:base64Binary",description:"the base64 encoded message authentication code"},errors:[]}],variables:[]},"http://www.28msec.com/modules/sleep":{ns:"http://www.28msec.com/modules/sleep",description:" This module provides a function to put the currently executing request\n to sleep.\n",sees:[],authors:['28msec'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.28msec.com/modules/sleep",prefix:"sleep"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"millis",qname:"sleep:millis",signature:"($millis as xs:integer) as empty-sequence() external",description:' Puts the currently executing request to sleep.\n This function is mainly useful in development e.g. to simulate the\n effects of long-running tasks wrt. the concurrent execution of\n requests.\n Here the function is used to simulate a request that runs for 1 second\n
\n declare $acquired := lock:try-acquire("my-lock");\n if ($acquired)\n   sleep:millis(1000);\n else\n   fn:error(xs:QName("..."), "failed to acquire lock");\n 
\n',summary:"

Puts the currently executing request to sleep.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"millis",type:"xs:integer",occurrence:null,description:'
the number of milliseconds to sleep
'}],returns:{type:"empty-sequence()",description:"the function is sequential and returns the empty sequence"},errors:[]}],variables:[]},"http://www.28msec.com/modules/cloudant":{ns:"http://www.28msec.com/modules/cloudant",description:'

This module provides functionality for creating, reading, updating,\n deleting and searching data in Cloudant\n databases.

\n

Before issuing a request to Cloudant it is mandatory to create\n a new connection through one of the connect functions.\n These functions return a connection identifier which needs to be used\n to access data in Cloudant through the other functions.

\n

In these functions Cloudant databases will be identified through\n their names. By default, the functions will assume that the database is owned by\n the user for which the given connection has been created.\n To specify a different database owner, most functions accept an\n $options parameter that allows a database-owner\n option to specify a different database owner for a single request.\n Moreover, when connecting, it is possible to specify the default\n database owner using the connect#3 function.

\n

Additional information on the Cloudant APIs can be found\n on the Cloudant website.

\n

Important Notice Regarding Function Determinism

\n

The non side-effecting functions:\n

\n are declared deterministic, which means that their results could be cached\n when invoked multiple times with the same arguments in the same query execution.

\n

To not use cached results you can use the following alternative functions:\n

\n which have been declared as being non deterministic.

\n',sees:[],authors:['Federico Cavalieri'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.28msec.com/modules/cloudant",prefix:"cloudant"},{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://zorba.io/modules/http-client",prefix:"http"},{uri:"http://www.28msec.com/modules/maps",prefix:"map"},{uri:"http://zorba.io/modules/random",prefix:"random"},{uri:"http://www.zorba-xquery.com/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"all-documents-nondeterministic",qname:"cloudant:all-documents-nondeterministic",signature:"($connection as anyURI, $database as string) as object()",description:'

Lists all the documents in a given database.

\n

This function has the same semantics as\n all-documents#2,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Lists all the documents in a given database.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'}],returns:{type:"object()",description:"An object listing the documents in the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:3,name:"all-documents-nondeterministic",qname:"cloudant:all-documents-nondeterministic",signature:"($connection as anyURI, $database as string, $options as object()) as object()",description:'

Lists all the documents in a given database.

\n

This function has the same semantics as\n all-documents#3,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Lists all the documents in a given database.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object listing the documents in the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:2,name:"all-documents",qname:"cloudant:all-documents",signature:"($connection as anyURI, $database as string) as object()",description:'

Lists all the documents in a given database.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The information is returned as a JSON structure containing meta information\n about the return structure, and the list of documents each with its ID, revision\n and key. The key is generated from the document ID.

\n

For example,\n

cloudant:all-documents($connection, "db")
.\n

\n

An object with the following format is returned:\n

\n {\n   "total_rows":3,\n   "offset":0,\n   "rows":[\n   {\n     "id":"5a049246-179f-42ad-87ac-8f080426c17c",\n     "key":"5a049246-179f-42ad-87ac-8f080426c17c",\n     "value":\n     {\n       "rev":"2-9d5401898196997853b5ac4163857a29"\n     }\n   },\n   {\n     "id":"96f898f0-f6ff-4a9b-aac4-503992f31b01",\n     "key":"96f898f0-f6ff-4a9b-aac4-503992f31b01",\n     "value":\n     {\n       "rev":"2-ff7b85665c4c297838963c80ecf481a3"\n      }\n   },\n   {\n     "id":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n     "key":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n     "value":\n     {\n       "rev":"2-cbdef49ef3ddc127eff86350844a6108"\n     }\n   }]\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

Lists all the documents in a given database.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'}],returns:{type:"object()",description:"An object listing the documents in the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:3,name:"all-documents",qname:"cloudant:all-documents",signature:"($connection as anyURI, $database as string, $options as object()) as object()",description:'

Lists all the documents in a given database.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The information is returned as a JSON structure containing meta information\n about the return structure, and the list of documents each with its ID, revision\n and key. The key is generated from the document ID.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

cloudant:all-documents($connection, "db", {"database-owner": "username"})
.\n

\n

An object with the following format is returned:\n

\n {\n   "total_rows":3,\n   "offset":0,\n   "rows":[\n   {\n     "id":"5a049246-179f-42ad-87ac-8f080426c17c",\n     "key":"5a049246-179f-42ad-87ac-8f080426c17c",\n     "value":\n     {\n       "rev":"2-9d5401898196997853b5ac4163857a29"\n     }\n   },\n   {\n     "id":"96f898f0-f6ff-4a9b-aac4-503992f31b01",\n     "key":"96f898f0-f6ff-4a9b-aac4-503992f31b01",\n     "value":\n     {\n       "rev":"2-ff7b85665c4c297838963c80ecf481a3"\n      }\n   },\n   {\n     "id":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n     "key":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n     "value":\n     {\n       "rev":"2-cbdef49ef3ddc127eff86350844a6108"\n     }\n   }]\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

Lists all the documents in a given database.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object listing the documents in the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:4,name:"all-view-documents-nondeterministic",qname:"cloudant:all-view-documents-nondeterministic",signature:"($connection as anyURI, $database as string, $design-document as string, $view as string) as object()",description:'

Returns a JSON object describing all the documents in a given view.

\n

This function has the same semantics as\n all-view-documents#4,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Returns a JSON object describing all the documents in a given view.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"view",type:"string",occurrence:null,description:'
A view name
'}],returns:{type:"object()",description:"An object listing all documents in the specified view"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:5,name:"all-view-documents-nondeterministic",qname:"cloudant:all-view-documents-nondeterministic",signature:"($connection as anyURI, $database as string, $design-document as string, $view as string, $options as object()) as object()",description:'

Returns a JSON object describing all the documents in a given view.

\n

This function has the same semantics as\n all-view-documents#5,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Returns a JSON object describing all the documents in a given view.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"view",type:"string",occurrence:null,description:'
A view name
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object listing all documents in the specified view"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:4,name:"all-view-documents",qname:"cloudant:all-view-documents",signature:"($connection as anyURI, $database as string, $design-document as string, $view as string) as object()",description:'

Returns a JSON object describing all the documents in a given view.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The information is returned as a JSON structure containing meta information\n about the return structure, and the list of documents each with its ID, revision\n and key. The key is generated from the document ID.

\n

For example,\n

cloudant:all-view-documents($connection, "db", "recipes", "by_title")
.\n

\n

An object with the following format is returned:\n

\n {\n   "offset" : 0,\n   "rows" :\n   [\n     {\n       "id" : "3-tiersalmonspinachandavocadoterrine",\n       "key" : "3-tier salmon, spinach and avocado terrine",\n       "value" : ["3-tier salmon, spinach and avocado terrine"]\n     },\n     {\n       "id" : "Aberffrawcake",\n       "key" : "Aberffraw cake",\n       "value" : ["Aberffraw cake"]\n     },\n     {\n       "id" : "Adukiandorangecasserole-microwave",\n       "key" : "Aduki and orange casserole - microwave",\n       "value" : ["Aduki and orange casserole - microwave"]\n     }\n   ],\n   "total_rows" : 3\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

Returns a JSON object describing all the documents in a given view.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"view",type:"string",occurrence:null,description:'
A view name
'}],returns:{type:"object()",description:"An object listing all documents in the specified view"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:5,name:"all-view-documents",qname:"cloudant:all-view-documents",signature:"($connection as anyURI, $database as string, $design-document as string, $view as string, $options as object()) as object()",description:'

Returns a JSON object describing all the documents in a given view.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The information is returned as a JSON structure containing meta information\n about the return structure, and the list of documents each with its ID, revision\n and key. The key is generated from the document ID.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

cloudant:all-view-documents($connection, "db", "recipes", "by_title",\n   {"database-owner" : "username"})
.\n

\n

An object with the following format is returned:\n

\n {\n   "offset" : 0,\n   "rows" :\n   [\n     {\n       "id" : "3-tiersalmonspinachandavocadoterrine",\n       "key" : "3-tier salmon, spinach and avocado terrine",\n       "value" : ["3-tier salmon, spinach and avocado terrine"]\n     },\n     {\n       "id" : "Aberffrawcake",\n       "key" : "Aberffraw cake",\n       "value" : ["Aberffraw cake"]\n     },\n     {\n       "id" : "Adukiandorangecasserole-microwave",\n       "key" : "Aduki and orange casserole - microwave",\n       "value" : ["Aduki and orange casserole - microwave"]\n     }\n   ],\n   "total_rows" : 3\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

Returns a JSON object describing all the documents in a given view.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"view",type:"string",occurrence:null,description:'
A view name
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object listing all documents in the specified view"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:4,name:"attachment-nondeterministic",qname:"cloudant:attachment-nondeterministic",signature:"($connection as anyURI, $database as string, $document-id as string, $attachment-name as string) as object()",description:'

Retrieves the specified document attachment.

\n

This function has the same semantics as\n attachment#4,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Retrieves the specified document attachment.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"attachment-name",type:"string",occurrence:null,description:'
An attchment name
'}],returns:{type:"object()",description:"The specified document attachment"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:5,name:"attachment-nondeterministic",qname:"cloudant:attachment-nondeterministic",signature:"($connection as anyURI, $database as string, $document-id as string, $attachment-name as string, $options as object()) as object()",description:'

Retrieves the specified document attachment.

\n

This function has the same semantics as attachment#5,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Retrieves the specified document attachment.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"attachment-name",type:"string",occurrence:null,description:'
An attchment name
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"The specified document attachment"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:ATTACHMENT-NOT-EXISTS Attachment does not exists','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:4,name:"attachment",qname:"cloudant:attachment",signature:"($connection as anyURI, $database as string, $document-id as string, $attachment-name as string) as object()",description:'

Retrieves the specified document attachment.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

For example,\n

cloudant:attachment($connection, "db", "DocID", "Attachment")
.\n

\n

Retrieving a design document attachment.

\n

To retrieve a design document attachment the document id must\n start with _design/.

\n

For example,\n

cloudant:attachment($connection, "db", "_design/DocID", "Attachment")
.\n

\n

Return value

\n

The returned object reports the media-type of the attachment as\n it was specified when the attachment was submitted to the database and\n its raw content.\n The format of the returned object is the following:\n

\n {\n   "media-type": "text/plain",\n   "content" : "Hello World"\n }\n 
\n

\n

The type of the content field is determined by the media-type returned by the\n server. If the media-type indicates that the body content is textual,\n then the content has type string, base64Binary otherwise.\n Specifically, the body content is considered textual only if the MIME-type specified in\n the media-type is one of:\n

\n or if the MIME-type starts with "text/" or ends with "+xml".

\n',summary:"

Retrieves the specified document attachment.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"attachment-name",type:"string",occurrence:null,description:'
An attchment name
'}],returns:{type:"object()",description:"The specified document attachment"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:5,name:"attachment",qname:"cloudant:attachment",signature:"($connection as anyURI, $database as string, $document-id as string, $attachment-name as string, $options as object()) as object()",description:'

Retrieves the specified document attachment.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

cloudant:attachment($connection, "db", "DocID", "Attachment",\n   {"database-owner": "username"})
.\n

\n

Retrieving a design document attachment.

\n

To retrieve a design document attachment the document id must\n start with _design/.

\n

For example,\n

cloudant:attachment($connection, "db", "_design/DocID", "Attachment",\n   {"database-owner": "username"})
.\n

\n

Return value

\n

The returned object reports the media-type of the attachment as\n it was specified when the attachment was submitted to the database and\n its raw content.\n The format of the returned object is the following:\n

\n {\n   "media-type": "text/plain",\n   "content" : "Hello World"\n }\n 
\n

\n

The type of the content field is determined by the media-type returned by the\n server. If the media-type indicates that the body content is textual,\n then the content has type string, base64Binary otherwise.\n Specifically, the body content is considered textual only if the MIME-type specified in\n the media-type is one of:\n

\n or if the MIME-type starts with "text/" or ends with "+xml".

\n',summary:"

Retrieves the specified document attachment.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"attachment-name",type:"string",occurrence:null,description:'
An attchment name
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"The specified document attachment"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:ATTACHMENT-NOT-EXISTS Attachment does not exists','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:3,name:"bulk-crud",qname:"cloudant:bulk-crud",signature:"($connection as anyURI, $database as string, $documents as object()*) as array()",description:'

Creates, updates or deletes multiple documents with a single request.

\n

When creating new documents the document ID is optional. For updating\n existing documents, you must provide the document ID, revision information,\n and new document values. To delete existing documents, you must provide the\n document ID, revision information and add a field _deleted having\n value true.\n

\n

For example,\n

cloudant:bulk-crud($connection, "db",\n (\n   {\n     "name":"Nicholas",\n     "age":45,\n     "gender":"male",\n   },\n   {\n     "name":"Taylor",\n     "age":50,\n     "gender":"male",\n     "_id":"5a049246-179f-42ad-87ac-8f080426c17c",\n   },\n   {\n     "name":"Owen",\n     "age":51,\n     "gender":"male",\n     "_id":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n     "_rev":"2-f29c836d0bedc4b4b95cfaa6d99e95df",\n   },\n   {\n     "_id":"b675e932-9bb6-4fc9-b889-50238ac3512b",\n     "_rev":"2-abd3942fdab3515bfed224abed2451feb",\n     "_deleted": true\n   }\n ))\n 
\n requires to insert the first document with a system-generated identifier, to\n insert the second one with a user-specified identifier, to update the third\n one and, finally,to delete the last one.\n

\n

\n The JSON returned by the_bulk_docs operation consists of an array\n of JSON structures, one for each submitted document.\n The returned JSON structure should be examined to ensure that all of\n the documents submitted in the original request were successfully added\n to the database. When no errors are raised, the revision of the new\n document is reported for all documents.\n

\n

\n

\n [{\n    "id":"96f898f0-f6ff-4a9b-aac4-503992f31b01",\n    "rev":"2-ff7b85665c4c297838963c80ecf481a3"\n  },\n  {\n    "id":"5a049246-179f-42ad-87ac-8f080426c17c",\n    "rev":"2-9d5401898196997853b5ac4163857a29"\n  },\n  {\n    "id":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n    "rev":"2-cbdef49ef3ddc127eff86350844a6108"\n  },\n  {\n    "id": "b675e932-9bb6-4fc9-b889-50238ac3512b",\n    "rev":"2-12356bafb1232167befabb32127823943d"\n  }]\n 
\n

\n

Cloudant will only guarantee that some of the documents will be\n saved when you send the request. The response will contain the list of\n documents successfully inserted or updated during the process.\n In the event of a crash, some of the documents may have been successfully\n saved, and some will have been lost.\n The response structure will indicate whether the document was updated by\n supplying the rev parameter indicating a new document revision\n was created. If the update failed, then you will get an error of type\n conflict.

\n

For example:\n

\n [\n   {\n     "id":"FishStew",\n     "error":"conflict",\n     "reason":"Document update conflict."\n   },\n   {\n     "id":"LambStew",\n     "error":"conflict",\n     "reason":"Document update conflict."\n   },\n   {\n     "id":"7f7638c86173eb440b8890839ff35433",\n     "error":"conflict",\n     "reason":"Document update conflict."\n   }\n ]\n 
\n In this case no new revision has been created and you will need to submit\n the document update with the correct revision tag, to update the document.\n

\n

The exact structure of each document in the returned array is:\n

\n

\n

The error type can either be conflict or forbidden. The first type means that\n the document as submitted is in conflict. The new revision has not been created\n and you will need to re-submit the document to the database. Entries with forbidden\n error type indicate that the validation routine applied to the document during submission\n has returned an error.

\n',summary:"

Creates, updates or deletes multiple documents with a single request.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"documents",type:"object()",occurrence:"*",description:'
An sequence of documents
'}],returns:{type:"array()",description:"An object describing the performed operations"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:4,name:"bulk-crud",qname:"cloudant:bulk-crud",signature:"($connection as anyURI, $database as string, $documents as object()*, $options as object()) as array()",description:'

Creates, updates or deletes multiple documents with a single request.

\n

When creating new documents the document ID is optional. For updating\n existing documents, you must provide the document ID, revision information,\n and new document values. To delete existing documents, you must provide the\n document ID, revision information and add a field _deleted having\n value true.\n

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

cloudant:bulk-crud($connection, "db",\n (\n   {\n     "name":"Nicholas",\n     "age":45,\n     "gender":"male",\n   },\n   {\n     "name":"Taylor",\n     "age":50,\n     "gender":"male",\n     "_id":"5a049246-179f-42ad-87ac-8f080426c17c",\n   },\n   {\n     "name":"Owen",\n     "age":51,\n     "gender":"male",\n     "_id":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n     "_rev":"2-f29c836d0bedc4b4b95cfaa6d99e95df",\n   },\n   {\n     "_id":"b675e932-9bb6-4fc9-b889-50238ac3512b",\n     "_rev":"2-abd3942fdab3515bfed224abed2451feb",\n     "_deleted": true\n   }\n ),{"database-owner": "username"})\n 
\n requires to insert the first document with a system-generated identifier, to\n insert the second one with a user-specified identifier, to update the third\n one and, finally, to delete the last one.\n

\n

\n The JSON returned by the_bulk_docs operation consists of an array\n of JSON structures, one for each document in the original submission.\n The returned JSON structure should be examined to ensure that all of\n the documents submitted in the original request were successfully added\n to the database. When no errors are raised, the revision of the new\n document is reported for all documents.\n

\n

\n

\n [{\n    "id":"96f898f0-f6ff-4a9b-aac4-503992f31b01",\n    "rev":"2-ff7b85665c4c297838963c80ecf481a3"\n  },\n  {\n    "id":"5a049246-179f-42ad-87ac-8f080426c17c",\n    "rev":"2-9d5401898196997853b5ac4163857a29"\n  },\n  {\n    "id":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n    "rev":"2-cbdef49ef3ddc127eff86350844a6108"\n  },\n  {\n    "id": "b675e932-9bb6-4fc9-b889-50238ac3512b",\n    "rev":"2-12356bafb1232167befabb32127823943d"\n  }]\n 
\n

\n

Cloudant will only guarantee that some of the documents will be\n saved when you send the request. The response will contain the list of\n documents successfully inserted or updated during the process.\n In the event of a crash, some of the documents may have been successfully\n saved, and some will have been lost.\n The response structure will indicate whether the document was updated by\n supplying the rev parameter indicating a new document revision\n was created. If the update failed, then you will get an error of type\n conflict.

\n

For example:\n

\n [\n   {\n     "id":"FishStew",\n     "error":"conflict",\n     "reason":"Document update conflict."\n   },\n   {\n     "id":"LambStew",\n     "error":"conflict",\n     "reason":"Document update conflict."\n   },\n   {\n     "id":"7f7638c86173eb440b8890839ff35433",\n     "error":"conflict",\n     "reason":"Document update conflict."\n   }\n ]\n 
\n In this case no new revision has been created and you will need to submit\n the document update with the correct revision tag, to update the document.\n

\n

The exact structure of each document in the returned array is:\n

\n

\n

The error type can either be conflict or forbidden. The first type means that\n the document as submitted is in conflict. The new revision has not been created\n and you will need to re-submit the document to the database. Entries with forbidden\n error type indicate that the validation routine applied to the document during submission\n has returned an error.

\n',summary:"

Creates, updates or deletes multiple documents with a single request.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"documents",type:"object()",occurrence:"*",description:'
An sequence of documents
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"array()",description:"An object describing the performed operations"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:2,name:"commit-changes",qname:"cloudant:commit-changes",signature:"($connection as anyURI, $database as string) as object()",description:'

Commits any recent changes to the specified database to disk.

\n

For example,\n

cloudant:commit-changes($connection, "db")
.\n

\n

An object with the following format is returned:\n

\n {\n   "ok" : true,\n   "instance_start_time" : "0"\n }\n 
\n

\n',summary:"

Commits any recent changes to the specified database to disk.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'}],returns:{type:"object()",description:"An object reporting the instance start time"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NOT-EXISTS The specified database does not exists','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:3,name:"commit-changes",qname:"cloudant:commit-changes",signature:"($connection as anyURI, $database as string, $options as object()) as object()",description:'

Commits any recent changes to the specified database to disk.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

\n cloudant:commit-changes($connection, "db", {"database-owner": "username"})\n 
.\n

\n

An object with the following format is returned:\n

\n {\n   "ok" : true,\n   "instance_start_time" : "0"\n }\n 
\n

\n',summary:"

Commits any recent changes to the specified database to disk.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object reporting the instance start time"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NOT-EXISTS The specified database does not exists','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:0,name:"connect",qname:"cloudant:connect",signature:"() as anyURI",description:'

Opens a connection to Cloudant using the default credentials.

\n

The function returns an opaque URI that can represents the connection.\n This URI has to be passed to other functions of this module that require\n a $connection parameter as a first argument.

\n

This function requires to specify an options object.\n The following options are supported:\n

\n

\n

For example,\n

cloudant:connect()
.\n

\n',summary:"

Opens a connection to Cloudant using the default credentials.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:"anyURI",description:"An identifier that represents the connection to the server"},errors:['cloudant:CREDENTIALS Missing or invalid credentials','cloudant:AUTHORIZATION Authentication error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:1,name:"connect",qname:"cloudant:connect",signature:"($credentials as item()) as anyURI",description:'

Opens a connection to Cloudant using the specified credentials.

\n

The function returns an opaque URI that can represents the connection.\n This URI has to be passed to other functions of this module that require\n a $connection parameter as a first argument.

\n

The $credentials parameter is used to specify the connection information.\n If a string is used, then the function will interpret it as the name of\n a credential in the Cloudant category.\n If an object is used, then the function will open a connection using it.\n The object structure is the following:\n

\n

\n

For example, using stored credential:\n

cloudant:connect("credentials-name")
\n For example, specifying the connection information:\n
cloudant:connect(\n   {\n     "username": "user",\n     "password: "pass",\n     "owner": "another-user"\n   })
.\n

\n',summary:"

Opens a connection to Cloudant using the specified credentials.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"credentials",type:"item()",occurrence:null,description:'
The connection specification
'}],returns:{type:"anyURI",description:"An identifier that represents the connection to the server"},errors:['cloudant:AUTHORIZATION Authentication error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:INTERNAL Cloudant internal error','cloudant:CREDENTIALS Missing or malformed credentials']},{isDocumented:!0,arity:2,name:"create-database",qname:"cloudant:create-database",signature:"($connection as anyURI, $database as string) as empty-sequence()",description:'

Creates a new database.

\n

The database name must be composed of one or more of the following\n characters:\n

\n

\n

For example,\n

cloudant:create-database($connection, "db")
.\n

\n',summary:"

Creates a new database.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'}],returns:{type:"empty-sequence()",description:"Empty sequence"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:DATABASE-EXISTS Database already exists','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:3,name:"create-document",qname:"cloudant:create-document",signature:"($connection as anyURI, $database as string, $document as object()) as object()",description:'

Creates a new document in the specified database.

\n

Creates a new document in the specified database,\n using the supplied JSON document structure. If the JSON\n structure includes the _id field, then the document will\n be created with the specified document ID. If the _id\n field is not specified, a new unique ID will be generated.

\n

You can include one or more attachments with a given document\n by incorporating the attachment information within the JSON of\n the document. This provides a simpler alternative to loading\n documents with attachments than making a separate call.\n To do so add you can add the _attachments object\n field to the document. It can have one ore more fields, each\n defining a different attachment.\n The name of the field is the name of the attachment.\n Its value is an object containing the following fields:\n

\n

\n

For example,\n

cloudant:create-document($connection, "db",\n   {\n     "_id" : "FishStew",\n     "servings" : 4,\n     "subtitle" : "Delicious with fresh bread",\n     "title" : "Fish Stew"\n     "_attachments" : {\n       "styling.css" : {\n       "content-type" : "text/css",\n       "data" : "cCB7IGZvbnQtc2l6ZTogMTJwdDsgfQo="\n       }\n     }\n   })\n 
\n creates a document with an attachment named styling.css.\n

\n

Creating a design document

\n

To create a design document the _id field must be present and must\n start with _design/.

\n

For example, the following expression creates a design document\n

cloudant:create-document($connection, "db",\n   {\n     "_id": "_design/DesDocID",\n     "views": {\n       "view1": {\n       "map":"function(doc){emit(doc.field, 1)}",\n       "reduce": "function(key, value, rereduce){return sum(values)}"\n       }\n     },\n     "indexes": {\n       "mysearch" : {\n         "analyzer": {"name": "portuguese", "stopwords":["foo", "bar, "baz"]},\n         "index": "function(doc){ ... }"\n       },\n     }\n   }, {"database-owner": "username"})\n 
.\n

\n

Return value

\n

The returned JSON object will report the new document revision\n and has the following form:\n

\n {\n   "id":"64575eef70ab90a2b8d55fc09e00440d",\n   "ok":true,\n   "rev":"1-9c65296036141e575d32ba9c034dd3ee"\n }\n 
\n

\n',summary:"

Creates a new document in the specified database.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document",type:"object()",occurrence:null,description:'
A document
'}],returns:{type:"object()",description:"An object which contains the document id and revision"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:DOCUMENT Document creation conflict','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:4,name:"create-document",qname:"cloudant:create-document",signature:"($connection as anyURI, $database as string, $document as object(), $options as object()) as object()",description:'

Creates a new document in the specified database

\n

Creates a new document in the specified database,\n using the supplied JSON document structure. If the JSON\n structure includes the _id field, then the document will\n be created with the specified document ID. If the _id\n field is not specified, a new unique ID will be generated.

\n

You can include one or more attachments with a given document\n by incorporating the attachment information within the JSON of\n the document. This provides a simpler alternative to loading\n documents with attachments than making a separate call.\n To do so add you can add the _attachments object\n field to the document. It can have one ore more fields, each\n defining a different attachment.\n The name of the field is the name of the attachment.\n Its value is an object containing the following fields:\n

\n

\n

For example,\n

cloudant:create-document($connection, "db",\n   {\n     "_id" : "FishStew",\n     "servings" : 4,\n     "subtitle" : "Delicious with fresh bread",\n     "title" : "Fish Stew"\n     "_attachments" : {\n       "styling.css" : {\n       "content-type" : "text/css",\n       "data" : "cCB7IGZvbnQtc2l6ZTogMTJwdDsgfQo="\n       }\n     }\n   }, {"database-owner": "username"})\n 
\n creates a document with an attachment named styling.css.\n

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

You can write documents to the database at a higher rate\n by using the batch option. This collects document writes\n together in memory (on a user-by-user basis) before they are\n committed to disk. This increases the risk of the documents\n not being stored in the event of a failure, since the documents\n are not written to disk immediately.

\n

Creating a design document

\n

To create a design document the _id field must be present and must\n start with _design/.

\n

For example, the following expression creates a design document\n

cloudant:create-document($connection, "db",\n   {\n     "_id": "_design/DesDocID",\n     "views": {\n       "view1": {\n       "map":"function(doc){emit(doc.field, 1)}",\n       "reduce": "function(key, value, rereduce){return sum(values)}"\n       }\n     },\n     "indexes": {\n       "mysearch" : {\n         "analyzer": {"name": "portuguese", "stopwords":["foo", "bar, "baz"]},\n         "index": "function(doc){ ... }"\n       },\n     }\n   }, {"database-owner": "username"})\n 
.\n

\n

Return value

\n

The returned JSON object will report the new document revision\n and has the following form:\n

\n {\n   "id":"64575eef70ab90a2b8d55fc09e00440d",\n   "ok":true,\n   "rev":"1-9c65296036141e575d32ba9c034dd3ee"\n }\n 
\n

\n',summary:"

Creates a new document in the specified database \n Creates a new document in the specified database,\n using the supplied JSON document structure.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document",type:"object()",occurrence:null,description:'
A document
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object which contains the document id and revision"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:DOCUMENT Document creation conflict','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:7,name:"create-or-update-attachment",qname:"cloudant:create-or-update-attachment",signature:"($connection as anyURI, $database as string, $document-id as string, $document-rev as string, $attachment-name as string, $media-type as string, $attachment as atomic) as object()",description:'

Creates or updates a document attachment.

\n

The latest document revision must be specified.

\n

For example,\n

cloudant:create-or-update-attachment($connection, "db", "FishStew",\n   "8-7c4740b4dcf26683e941d6641c00c39d", "AttachmentName", "text/plain",\n   "AttachmentContent")
.\n

\n

Creating or updating a design document attachment.

\n

To create or update a design document attachment the document id must\n start with _design/.

\n

For example,\n

cloudant:create-or-update-attachment($connection, "db", "_design/DesDocId",\n   "8-7c4740b4dcf26683e941d6641c00c39d", "AttachmentName", "text/plain",\n   "AttachmentContent")
.\n

\n

Return value

\n

The returned object reports the document id and its new\n revision, as follows:\n

\n {\n   "id":"FishStew",\n   "ok":true,\n   "rev":"9-247bb19a41bfd9bfdaf5ee6e2e05be74"\n }\n 
\n

\n',summary:"

Creates or updates a document attachment.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"document-rev",type:"string",occurrence:null,description:'
A document revision
'},{name:"attachment-name",type:"string",occurrence:null,description:'
The name of the attachment
'},{name:"media-type",type:"string",occurrence:null,description:'
The media-type of the attachment
'},{name:"attachment",type:"atomic",occurrence:null,description:'
-name The name of the attachment
'}],returns:{type:"object()",description:"An object containing the document id and its new revision"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:ATTACHMENT-TYPE Attachment type must be string, base64Binary or hexBinary','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:8,name:"create-or-update-attachment",qname:"cloudant:create-or-update-attachment",signature:"($connection as anyURI, $database as string, $document-id as string, $document-rev as string, $attachment-name as string, $media-type as string, $attachment as atomic, $options as object()) as object()",description:'

Creates or updates a document attachment.

\n

The latest document revision must be specified.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

cloudant:create-or-update-attachment($connection, "db", "FishStew",\n   "8-7c4740b4dcf26683e941d6641c00c39d", "AttachmentName", "text/plain",\n   "AttachmentContent", {"database-owner": "username"})
.\n

\n

Creating or updating a design document attachment.

\n

To create or update a design document attachment the document id must\n start with _design/.

\n

For example,\n

cloudant:create-or-update-attachment($connection, "db", "_design/DesDocId",\n   "8-7c4740b4dcf26683e941d6641c00c39d", "AttachmentName", "text/plain",\n   "AttachmentContent", {"database-owner": "username"})
.\n

\n

Return value

\n

The returned object reports the document id and its new\n revision, as follows:\n

\n {\n   "id":"FishStew",\n   "ok":true,\n   "rev":"9-247bb19a41bfd9bfdaf5ee6e2e05be74"\n }\n 
\n

\n',summary:"

Creates or updates a document attachment.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"document-rev",type:"string",occurrence:null,description:'
A document revision
'},{name:"attachment-name",type:"string",occurrence:null,description:'
The name of the attachment
'},{name:"media-type",type:"string",occurrence:null,description:'
The media-type of the attachment
'},{name:"attachment",type:"atomic",occurrence:null,description:'
-name The name of the attachment
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object containing the document id and its new revision"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:ATTACHMENT-TYPE Attachment type must be string, base64Binary or hexBinary','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:3,name:"create-or-update-document",qname:"cloudant:create-or-update-document",signature:"($connection as anyURI, $database as string, $document as object()) as object()",description:'

Creates or updates a document.

\n

When creating a new document, the _id field must\n be specified.

\n

For example,\n

cloudant:create-or-update-document($connection, "db",\n   {\n     "name":"Hannah",\n     "age":120,\n     "gender":"female",\n     "_id":"DocID"\n   })
.\n

\n

When updating a document, the _id and the\n _rev field, which contains the last document revision,\n must be specified.

\n

For example,\n

cloudant:create-or-update-document($connection, "db",\n   {\n     "name":"Hannah",\n     "age":40,\n     "gender":"female",\n     "_id":"DocID",\n     "_rev":"1-764b9b11845fd0b73cfa0e61acc74ecf"\n   })
.\n

\n

Creating or updating a design document

\n

To create or update a design document the document id must\n start with _design/.

\n

For example, the following expression creates a design document\n

cloudant:create-or-update-document($connection, "db",\n   {\n     "_id": "_design/DesDocID",\n     "views": {\n       "view1": {\n       "map":"function(doc){emit(doc.field, 1)}",\n       "reduce": "function(key, value, rereduce){return sum(values)}"\n       }\n     },\n     "indexes": {\n       "mysearch" : {\n         "analyzer": {"name": "portuguese", "stopwords":["foo", "bar, "baz"]},\n         "index": "function(doc){ ... }"\n       },\n     }\n   })\n 
.\n

\n

For example, the following expression updates a design document\n

cloudant:create-or-update-document($connection, "db",\n   {\n     "_id": "_design/DesDocID",\n     "_rev": "2-f29c836d0bedc4b4b95cfaa6d99e95df",\n     "views": {\n       "view1": {\n       "map":"function(doc){emit(doc.field, 1)}",\n       "reduce": "function(key, value, rereduce){return sum(values)}"\n       }\n     },\n     "indexes": {\n       "mysearch" : {\n         "analyzer": {"name": "portuguese", "stopwords":["foo", "bar, "baz"]},\n         "index": "function(doc){ ... }"\n       },\n     }\n   })\n 
.

\n

\n The meaning of the fields in the design document is the following:\n

\n

\n

Return value

\n

The format of the returned object is the following and contains\n the document id and revision.\n

\n {\n   "ok":true,\n   "id":"DocID",\n   "rev":"1-764b9b11845fd0b73cfa0e61acc74ecf"\n }\n 
\n

\n',summary:"

Creates or updates a document.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document",type:"object()",occurrence:null,description:'
A document
'}],returns:{type:"object()",description:"An object which specifies the document id and its new revision"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:DOCUMENT-MALFORMED Malformed document object','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:4,name:"create-or-update-document",qname:"cloudant:create-or-update-document",signature:"($connection as anyURI, $database as string, $document as object(), $options as object()) as object()",description:'

Creates or updates a document.

\n

When creating a new document, the _id field must\n be specified.

\n

For example,\n

cloudant:create-or-update-document($connection, "db", "DocID",\n   {\n     "name":"Hannah",\n     "age":120,\n     "gender":"female",\n     "_id":"DocID"\n   }, {"database-owner": "username"})
.\n

\n

When updating a document, the _id and the\n _rev field, which contains the last document revision,\n must be specified.

\n

For example,\n

cloudant:create-or-update-document($connection, "db", "DocID",\n   {\n     "name":"Hannah",\n     "age":40,\n     "gender":"female",\n     "_id":"DocID",\n     "_rev":"1-764b9b11845fd0b73cfa0e61acc74ecf"\n   }, {"database-owner": "username"})
.\n

\n

Creating or updating a design document

\n

To create or update a design document the document id must\n start with _design/.

\n

For example, the following expression creates a design document\n

cloudant:create-or-update-document($connection, "db",\n   {\n     "_id": "_design/DesDocID",\n     "views": {\n       "view1": {\n       "map":"function(doc){emit(doc.field, 1)}",\n       "reduce": "function(key, value, rereduce){return sum(values)}"\n       }\n     },\n     "indexes": {\n       "mysearch" : {\n         "analyzer": {"name": "portuguese", "stopwords":["foo", "bar, "baz"]},\n         "index": "function(doc){ ... }"\n       },\n     }\n   }, {"database-owner": "username"})\n 
.\n

\n
cloudant:create-or-update-document($connection, "db",\n   {\n     "_id": "_design/DesDocID",\n     "_rev": "2-f29c836d0bedc4b4b95cfaa6d99e95df",\n     "views": {\n       "view1": {\n       "map":"function(doc){emit(doc.field, 1)}",\n       "reduce": "function(key, value, rereduce){return sum(values)}"\n       }\n     },\n     "indexes": {\n       "mysearch" : {\n         "analyzer": {"name": "portuguese", "stopwords":["foo", "bar, "baz"]},\n         "index": "function(doc){ ... }"\n       },\n     }\n   }, {"database-owner": "username"})\n 
.\n

\n The meaning of the fields in the design document is the following:\n

\n

\n

Return value

\n

The format of the returned object is the following and contains\n the document id and revision.\n

\n {\n   "ok":true,\n   "id":"DocID",\n   "rev":"1-764b9b11845fd0b73cfa0e61acc74ecf"\n }\n 
\n

\n',summary:"

Creates or updates a document.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document",type:"object()",occurrence:null,description:'
A document
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object which specifies the document id and its new revision"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:DOCUMENT-MALFORMED Malformed document object','cloudant:OPTIONS Malformed options object','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:2,name:"database-info-nondeterministic",qname:"cloudant:database-info-nondeterministic",signature:"($connection as anyURI, $database as string) as object()",description:'

Returns information about a database.

\n

This function has the same semantics as database-info#2,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Returns information about a database.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'}],returns:{type:"object()",description:"An object describing the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:3,name:"database-info-nondeterministic",qname:"cloudant:database-info-nondeterministic",signature:"($connection as anyURI, $database as string, $options as object()) as object()",description:'

Returns information about a database.

\n

This function has the same semantics as\n database-info#3,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Returns information about a database.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
a database name
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object describing the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:2,name:"database-info",qname:"cloudant:database-info",signature:"($connection as anyURI, $database as string) as object()",description:'

Returns information about a database.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

For example,\n

cloudant:database-info($connection, "db")
.\n

\n

An object with the following format is returned:\n

\n {\n   "update_seq": "0-g1AAAADneJzLYWBg...",\n   "db_name": "db",\n   "purge_seq": 0,\n   "other": {\n     "data_size": 0\n   },\n   "doc_del_count": 0,\n   "doc_count": 0,\n   "disk_size": 316,\n   "disk_format_version": 5,\n   "compact_running": false,\n   "instance_start_time": "0"\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

Returns information about a database.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'}],returns:{type:"object()",description:"An object describing the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:3,name:"database-info",qname:"cloudant:database-info",signature:"($connection as anyURI, $database as string, $options as object()) as object()",description:'

Returns information about a database.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

cloudant:database-info($connection, "db", {"database-owner": "username"})
.\n

\n

An object with the following format is returned:\n

\n {\n   "update_seq": "0-g1AAAADneJzLYWBg...",\n   "db_name": "db",\n   "purge_seq": 0,\n   "other": {\n     "data_size": 0\n   },\n   "doc_del_count": 0,\n   "doc_count": 0,\n   "disk_size": 316,\n   "disk_format_version": 5,\n   "compact_running": false,\n   "instance_start_time": "0"\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

Returns information about a database.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
a database name
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object describing the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:5,name:"delete-attachment",qname:"cloudant:delete-attachment",signature:"($connection as anyURI, $database as string, $document-id as string, $document-rev as string, $attachment-name as string) as object()",description:'

Deletes the specified attachment.

\n

The latest document revision must be specified.

\n

For example,\n

cloudant:delete-attachment($connection, "db", "FishStew",\n   "8-7c4740b4dcf26683e941d6641c00c39d", "AttachmentName")
.\n

\n

Deleting a design document attachment.

\n

To delete a design document attachment the document id must\n start with _design/.

\n

For example,\n

cloudant:delete-attachment($connection, "db", "_design/DesDocId",\n   "8-7c4740b4dcf26683e941d6641c00c39d",\n   "AttachmentName", "text/plain", "AttachmentContent")
.\n

\n

Return value

\n

The returned object reports the document id and its new\n revision, as follows:\n

\n {\n   "id":"FishStew",\n   "ok":true,\n   "rev":"9-247bb19a41bfd9bfdaf5ee6e2e05be74"\n }\n 
\n

\n',summary:"

Deletes the specified attachment.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"document-rev",type:"string",occurrence:null,description:'
A document revision
'},{name:"attachment-name",type:"string",occurrence:null,description:'
The name of the attachment
'}],returns:{type:"object()",description:"An object containing the document id and its new revision"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:ATTACHMENT-NOT-EXISTS Attachment does not exists','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:ATTACHMENT-TYPE Attachment type must be string, base64Binary or hexBinary','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:6,name:"delete-attachment",qname:"cloudant:delete-attachment",signature:"($connection as anyURI, $database as string, $document-id as string, $document-rev as string, $attachment-name as string, $options as object()) as object()",description:'

Deletes the specified attachment.

\n

The latest document revision must be specified.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

cloudant:delete-attachment($connection, "db", "FishStew",\n "8-7c4740b4dcf26683e941d6641c00c39d", "AttachmentName",\n {"database-owner": "username"})
.\n

\n

Deleting a design document attachment.

\n

To delete a design document attachment the document id must\n start with _design/.

\n

For example,\n

cloudant:delete-attachment($connection, "db", "_design/DesDocId",\n   "8-7c4740b4dcf26683e941d6641c00c39d", "AttachmentName", "text/plain",\n   "AttachmentContent", {"database-owner": "username"})
.\n

\n

Return value

\n

The returned object reports the document id and its new\n revision, as follows:\n

\n {\n   "id":"FishStew",\n   "ok":true,\n   "rev":"9-247bb19a41bfd9bfdaf5ee6e2e05be74"\n }\n 
\n

\n',summary:"

Deletes the specified attachment.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"document-rev",type:"string",occurrence:null,description:'
A document revision
'},{name:"attachment-name",type:"string",occurrence:null,description:'
The name of the attachment
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object containing the document id and its new revision"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:ATTACHMENT-NOT-EXISTS Attachment does not exists','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:ATTACHMENT-TYPE Attachment type must be string, base64Binary or hexBinary','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:2,name:"delete-database",qname:"cloudant:delete-database",signature:"($connection as anyURI, $database as string) as empty-sequence()",description:'

Deletes a database and all the documents and attachments contained in it.

\n

The database name must be composed of one or more of the following characters:\n

\n

\n

For example,\n

cloudant:delete-database($connection, "db")
.\n

\n',summary:"

Deletes a database and all the documents and attachments contained in it.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'}],returns:{type:"empty-sequence()",description:"Empty sequence"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:DATABASE-NOT-EXISTS Database does not exist','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:4,name:"delete-document",qname:"cloudant:delete-document",signature:"($connection as anyURI, $database as string, $document-id as string, $document-rev as string) as object()",description:'

Deletes the specified document from a database.

\n

The latest document revision must be specified.

\n

For example,\n

\n cloudant:delete-document($connection, "db", "DocID", "3-7c4740b4dcf26683e941d6641c00c39d")\n 
.\n

\n

Deleting a design document

\n

To delete a design document the document id must\n start with _design/.

\n

For example,\n

\n cloudant:delete-document($connection, "db", "_design/DesDocID", "3-7c4740b4dcf26683e941d6641c00c39d")\n 
.\n

\n

Return value

\n

The returned object reports the document id and its\n new revision, as follows:\n

\n {\n   "id":"DocID",\n   "ok":true,\n   "rev":"4-2719fd41187c60762ff584761b714cfb"\n }\n 
\n

\n',summary:"

Deletes the specified document from a database.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"document-rev",type:"string",occurrence:null,description:'
A document revision
'}],returns:{type:"object()",description:"An object which specifies the document id and its new revision"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:REVISION Specified revision is missing, invalid or not the latest.','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:5,name:"delete-document",qname:"cloudant:delete-document",signature:"($connection as anyURI, $database as string, $document-id as string, $document-rev as string, $options as object()) as object()",description:'

Deletes the specified document from a database.

\n

The latest document revision must be specified.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

\n cloudant:delete-document($connection, "db", "DocID", "3-7c4740b4dcf26683e941d6641c00c39d",\n   {"database-owner": "username"})\n 
.\n

\n

Deleting a design document

\n

To delete a design document the document id must\n start with _design/.

\n

For example,\n

\n cloudant:delete-document($connection, "db", "_design/DesDocID", "3-7c4740b4dcf26683e941d6641c00c39d",\n   {"database-owner": "username"})\n 
.\n

\n

Return value

\n

The returned object reports the document id and its\n new revision, as follows:\n

\n {\n   "id":"DocID",\n   "ok":true,\n   "rev":"4-2719fd41187c60762ff584761b714cfb"\n }\n 
\n

\n',summary:"

Deletes the specified document from a database.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"document-rev",type:"string",occurrence:null,description:'
A document revision
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object which specifies the document id and its new revision"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:REVISION Specified revision is missing, invalid or not the latest.','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:3,name:"document-info-nondeterministic",qname:"cloudant:document-info-nondeterministic",signature:"($connection as anyURI, $database as string, $document-id as string) as object()",description:'

Returns the latest revision and size for a given document.

\n

This function has the same semantics as\n document-info#3,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Returns the latest revision and size for a given document.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'}],returns:{type:"object()",description:"An object specifying the document id, revision and size"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DOCUMENT The specified document or revision cannot be found','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:4,name:"document-info-nondeterministic",qname:"cloudant:document-info-nondeterministic",signature:"($connection as anyURI, $database as string, $document-id as string, $options as object()) as object()",description:'

Returns the latest revision and size for a given document.

\n

This function has the same semantics as\n document-info#4,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Returns the latest revision and size for a given document.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object specifying the document id, revision and size"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DOCUMENT The specified document or revision cannot be found','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:3,name:"document-info",qname:"cloudant:document-info",signature:"($connection as anyURI, $database as string, $document-id as string) as object()",description:'

Returns the latest revision and size for a given document.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

For example,\n

cloudant:document-info($connection, "db", "DocID")
.\n

\n

The format of the returned object is the following and contains\n the document id, latest revision and size.\n

\n {\n   "ok": true,\n   "id": "DocID",\n   "rev": "1-764b9b11845fd0b73cfa0e61acc74ecf",\n   "size": 500\n }\n 
\n

\n

Returning the latest revision and size for a given design document

\n

To return the latest revision and size of a design document the document\n id must start with\n _design/.

\n

For example,\n

cloudant:document-info($connection, "db", "_design/DesDocID")
.\n

\n',summary:"

Returns the latest revision and size for a given document.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'}],returns:{type:"object()",description:"An object specifying the document id, revision and size"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DOCUMENT The specified document or revision cannot be found','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:4,name:"document-info",qname:"cloudant:document-info",signature:"($connection as anyURI, $database as string, $document-id as string, $options as object()) as object()",description:'

Returns the latest revision and size for a given document.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

\n cloudant:document-info($connection, "db", "DocID", {"database-owner": "username"})\n 
.\n

\n

The format of the returned object is the following and contains\n the document id, latest revision and size.\n

\n {\n   "ok": true,\n   "id": "DocID",\n   "rev": "1-764b9b11845fd0b73cfa0e61acc74ecf",\n   "size": 500\n }\n 
\n

\n

Returning the latest revision and size for a given design document

\n

To return the latest revision and size of a design document the document\n id must start with _design/.

\n

For example,\n

\n cloudant:document-info($connection, "db", "_design/DesDocID", {"database-owner": "username"})\n 
.\n

\n',summary:"

Returns the latest revision and size for a given document.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object specifying the document id, revision and size"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DOCUMENT The specified document or revision cannot be found','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:3,name:"document-nondeterministic",qname:"cloudant:document-nondeterministic",signature:"($connection as anyURI, $database as string, $document-id as string) as object()",description:'

Retrieves a document from the specified database.

\n

This function has the same semantics as document#3,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Retrieves a document from the specified database.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'}],returns:{type:"object()",description:"The specified document"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:DOCUMENT The specified document or revision cannot be found','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:4,name:"document-nondeterministic",qname:"cloudant:document-nondeterministic",signature:"($connection as anyURI, $database as string, $document-id as string, $options as object()) as object()",description:'

Retrieves a document from the specified database

\n

This function has the same semantics as document#4,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Retrieves a document from the specified database \n This function has the same semantics as document#4 ,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"The specified document"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:DOCUMENT The specified document or revision cannot be found','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:3,name:"document",qname:"cloudant:document",signature:"($connection as anyURI, $database as string, $document-id as string) as object()",description:'

Retrieves a document from the specified database.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The latest revision of the document will be returned.

\n

If the document includes attachments, then the\n returned structure will contain a summary of the\n attachments associated with the document, but not the\n attachment data itself.

\n

For example,\n

cloudant:document($connection, "db", "DocID")
.\n

\n

The returned JSON object will contain the document\n and has the following format:\n

\n {\n   "_id": "DocID",\n   "_rev": "2-f29c836d0bedc4b4b95cfaa6d99e95df",\n   "name": "Anna",\n   "age": 89,\n   "gender": "female",\n   "_attachments": {\n     "my attachment": {\n       "content_type": "application/json; charset=UTF-8",\n       "revpos": 2,\n       "digest": "md5-37IZysiyWLRWx31J/1WQHw==",\n       "length": 12,\n       "stub": true\n       }\n     }\n   }\n 
\n

\n

\n The meaning of the fields in the returned object is the following:\n

\n

\n

Retrieving a design document from the specified database

\n

To retrieve a design document the document id must start with\n _design/.

\n

For example,\n

cloudant:document($connection, "db", "_design/DesDocID")
.\n

\n

A JSON object with the following format is returned:\n

\n {\n  "_id": "_design/DesDocID",\n   "views": {\n     "view1": {\n       "map":"function(doc){emit(doc.field, 1)}",\n       "reduce": "function(key, value, rereduce){return sum(values)}"\n     }\n   },\n   "indexes": {\n     "mysearch" : {\n       "analyzer": {"name": "portuguese", "stopwords":["foo", "bar, "baz"]},\n       "index": "function(doc){ ... }"\n     },\n   }\n }\n 
\n

\n

\n The meaning of the fields in the returned object is the following:\n

\n

\n',summary:"

Retrieves a document from the specified database.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'}],returns:{type:"object()",description:"The specified document"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:DOCUMENT The specified document or revision cannot be found','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:4,name:"document",qname:"cloudant:document",signature:"($connection as anyURI, $database as string, $document-id as string, $options as object()) as object()",description:'

Retrieves a document from the specified database

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

Unless you request a specific revision, the latest\n revision of the document will always be returned.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

If the document includes attachments, then the\n returned structure will contain a summary of the\n attachments associated with the document, but not the\n attachment data itself.

\n

For example,\n

\n cloudant:document($connection, "db", "DocID", {"database-owner": "username"})\n 
.\n

\n

The returned JSON object will contain the document\n and has the following format:\n

\n {\n   "_id": "DocID",\n   "_rev": "2-f29c836d0bedc4b4b95cfaa6d99e95df",\n   "name": "Anna",\n   "age": 89,\n   "gender": "female",\n   "_attachments": {\n     "my attachment": {\n       "content_type": "application/json; charset=UTF-8",\n       "revpos": 2,\n       "digest": "md5-37IZysiyWLRWx31J/1WQHw==",\n       "length": 12,\n       "stub": true\n       }\n     }\n   }\n 
\n

\n

\n The meaning of the fields in the returned object is the following:\n

\n

\n

Retrieving a design document from the specified database

\n

To retrieve a design document the document id must start with\n _design/.

\n

For example,\n

cloudant:document($connection, "db", "_design/DesDocID", {"database-owner": "username"})
.\n

\n

A JSON object with the following format is returned:\n

\n {\n  "_id": "_design/DesDocID",\n  "_rev": "2-f29c836d0bedc4b4b95cfaa6d99e95df",\n   "views": {\n     "view1": {\n       "map":"function(doc){emit(doc.field, 1)}",\n       "reduce": "function(key, value, rereduce){return sum(values)}"\n     }\n   },\n   "indexes": {\n     "mysearch" : {\n       "analyzer": {"name": "portuguese", "stopwords":["foo", "bar, "baz"]},\n       "index": "function(doc){ ... }"\n     },\n   }\n }\n 
\n

\n

\n The meaning of the fields in the returned object is the following:\n

\n

\n

Getting a List of Revisions

\n

You can obtain a list of the revisions for a given document\n by the revs option.

\n

For example,\n

cloudant:document($connection, "db", "DocID", {"revs": true})
.\n

\n

The returned JSON object includes the original document and\n a _revisions structure that includes the revision\n information:\n

\n {\n   "servings":4,\n   "subtitle":"Delicious with a green salad",\n   "_id":"FishStew",\n   "title":"Irish Fish Stew",\n   "_revisions":\n   {\n     "ids": [\n       "a1a9b39ee3cc39181b796a69cb48521c",\n       "7c4740b4dcf26683e941d6641c00c39d",\n       "9c65296036141e575d32ba9c034dd3ee"\n      ],\n     "start":3\n  },\n  "_rev":"3-a1a9b39ee3cc39181b796a69cb48521c"\n }\n 
\n

\n

The meaning of the additional fields is the following:\n

\n

\n

Obtaining an Extended Revision History

\n

You can get additional information about the revisions for a given document\n with the revs_info option.

\n

For example,\n

cloudant:document($connection, "db", "DocID", {"revs_info": true})
.\n

\n

This returns extended revision information, including the availability and status\n of each revision:\n

\n {\n   "servings":4,\n   "subtitle":"Delicious with a green salad",\n   "_id":"FishStew",\n   "_revs_info":[\n     {\n       "status":"available",\n       "rev":"3-a1a9b39ee3cc39181b796a69cb48521c"\n     },\n     {\n       "status":"available",\n       "rev":"2-7c4740b4dcf26683e941d6641c00c39d"\n     },\n     {\n       "status":"available",\n       "rev":"1-9c65296036141e575d32ba9c034dd3ee"\n     }\n   ],\n   "title":"Irish Fish Stew",\n   "_rev":"3-a1a9b39ee3cc39181b796a69cb48521c"\n }\n 
\n

\n

The meaning of the additional fields is the following:\n

\n

\n',summary:"

Retrieves a document from the specified database \n This function is declared as deterministic and should be used whenever result\n caching is acceptable.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"document-id",type:"string",occurrence:null,description:'
A document identifier
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"The specified document"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:DATABASE-NAME Invalid database name','cloudant:DOCUMENT The specified document or revision cannot be found','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:1,name:"list-databases-nondeterministic",qname:"cloudant:list-databases-nondeterministic",signature:"($connection as anyURI) as array()",description:'

Returns an array containing the names of all the user\'s databases.

\n

This function has the same semantics as\n list-databases#1,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Returns an array containing the names of all the user's databases.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'}],returns:{type:"array()",description:"An array of all the database names"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:2,name:"list-databases-nondeterministic",qname:"cloudant:list-databases-nondeterministic",signature:"($connection as anyURI, $options as object()) as array()",description:'

Returns an array containing the names of all the user\'s databases.

\n

This function has the same semantics as\n list-databases#2,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Returns an array containing the names of all the user's databases.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"array()",description:"An array of all the databases names"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:1,name:"list-databases",qname:"cloudant:list-databases",signature:"($connection as anyURI) as array()",description:'

Returns an array containing the names of all the user\'s databases.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

For example,\n

cloudant:list-databases($connection)
.\n

\n',summary:"

Returns an array containing the names of all the user's databases.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'}],returns:{type:"array()",description:"An array of all the database names"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:2,name:"list-databases",qname:"cloudant:list-databases",signature:"($connection as anyURI, $options as object()) as array()",description:'

Returns an array containing the names of all the user\'s databases.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

cloudant:list-databases($connection, {"database-owner" : "username"})
.\n

\n',summary:"

Returns an array containing the names of all the user's databases.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"array()",description:"An array of all the databases names"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:5,name:"lucene-query-nondeterministic",qname:"cloudant:lucene-query-nondeterministic",signature:"($connection as anyURI, $database as string, $design-document as string, $index as string, $query as string) as object()",description:'

Executes a Lucene query against a view and returns the query result.

\n

This function has the same semantics as\n lucene-query#5,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Executes a Lucene query against a view and returns the query result.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"index",type:"string",occurrence:null,description:'
An index name
'},{name:"query",type:"string",occurrence:null,description:'
A Lucene query
'}],returns:{type:"object()",description:"The Lucene query results"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:6,name:"lucene-query-nondeterministic",qname:"cloudant:lucene-query-nondeterministic",signature:"($connection as anyURI, $database as string, $design-document as string, $index as string, $query as string, $options as object()) as object()",description:'

Executes a Lucene query against a view and returns the query result.

\n

This function has the same semantics as lucene-query#6,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Executes a Lucene query against a view and returns the query result.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"index",type:"string",occurrence:null,description:'
An index name
'},{name:"query",type:"string",occurrence:null,description:'
A Lucene query
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"The Lucene query results"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:5,name:"lucene-query",qname:"cloudant:lucene-query",signature:"($connection as anyURI, $database as string, $design-document as string, $index as string, $query as string) as object()",description:'

Executes a Lucene query against a view and returns the query result.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

This method searches for documents whose index fields match the Lucene query.\n Which fields of a document are indexed and how is determined by the index functions\n in the design document.

\n

The information is returned as a JSON structure containing meta information\n about the return structure, and the list of documents each with its ID, revision\n and key. The key is generated from the document ID.

\n

For example,\n

cloudant:lucene-query($connection, "db", "designdoc", "view", "a*")
.\n

\n

An object with the following format is returned:\n

\n {\n   "total_rows": 3,\n   "bookmark": "g1AAAACWeJzLYWBgYMpgTmFQSElKzi9KdUhJMtbLTS3KLElMT9VLzskvTUnMK9HLSy3JAalMcgCSSfX____PAvPdQHwQSGTIIt6UPBaQlgNA6j_CJPsPcJOyANNEKzY",\n   "rows":\n   [\n     {\n       "id": "dd828eb4-c3f1-470f-aeff-c375ef70e4ad",\n       "order": [0.0, 1],\n       "fields":\n       {\n         "default": "aa",\n         "foo": 0.0\n       }\n     },\n     {\n       "id": "ea522cf1-eb8e-4477-aa92-d1fa459bb216",\n       "order": [1.0, 0],\n       "fields":\n       {\n         "default": "ab",\n         "foo": 1.0\n       }\n     },\n     {\n       "id": "c838baed-d573-43ea-9c34-621cf0f13301",\n       "order": [2.0, 0],\n       "fields":\n       {\n         "default": "ac",\n         "foo": 2.0\n       }\n     }\n   ]\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

Executes a Lucene query against a view and returns the query result.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"index",type:"string",occurrence:null,description:'
An index name
'},{name:"query",type:"string",occurrence:null,description:'
A Lucene query
'}],returns:{type:"object()",description:"The Lucene query results"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:6,name:"lucene-query",qname:"cloudant:lucene-query",signature:"($connection as anyURI, $database as string, $design-document as string, $index as string, $query as string, $options as object()) as object()",description:'

Executes a Lucene query against a view and returns the query result.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

This method searches for documents whose index fields match the Lucene query.\n Which fields of a document are indexed and how is determined by the index functions\n in the design document.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

The information is returned as a JSON structure containing meta information\n about the return structure, and the list of documents each with its ID, revision\n and key. The key is generated from the document ID.

\n

For example,\n

cloudant:lucene-query($connection, "db", "designdoc", "view", "a*",\n {"database-owner": "username"})
.\n

\n

An object with the following format is returned:\n

\n {\n   "total_rows": 3,\n   "bookmark": "g1AAAACWeJzLYWBgYMpgTmFQSElKzi9KdUhJMtbLTS3KLElMT9VLzskvTUnMK9HLSy3JAalMcgCSSfX____PAvPdQHwQSGTIIt6UPBaQlgNA6j_CJPsPcJOyANNEKzY",\n   "rows":\n   [\n     {\n       "id": "dd828eb4-c3f1-470f-aeff-c375ef70e4ad",\n       "order": [0.0, 1],\n       "fields":\n       {\n         "default": "aa",\n         "foo": 0.0\n       }\n     },\n     {\n       "id": "ea522cf1-eb8e-4477-aa92-d1fa459bb216",\n       "order": [1.0, 0],\n       "fields":\n       {\n         "default": "ab",\n         "foo": 1.0\n       }\n     },\n     {\n       "id": "c838baed-d573-43ea-9c34-621cf0f13301",\n       "order": [2.0, 0],\n       "fields":\n       {\n         "default": "ac",\n         "foo": 2.0\n       }\n     }\n   ]\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

Executes a Lucene query against a view and returns the query result.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"index",type:"string",occurrence:null,description:'
An index name
'},{name:"query",type:"string",occurrence:null,description:'
A Lucene query
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"The Lucene query results"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:3,name:"multiple-documents-nondeterministic",qname:"cloudant:multiple-documents-nondeterministic",signature:"($connection as anyURI, $database as string, $keys as string*) as object()",description:'

List the specified documents in a given database.

\n

This function has the same semantics as\n multiple-documents#3,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

List the specified documents in a given database.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"keys",type:"string",occurrence:"*",description:'
The keys of the documents which must be retrieved
'}],returns:{type:"object()",description:"An object listing the specified documents in the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:4,name:"multiple-documents-nondeterministic",qname:"cloudant:multiple-documents-nondeterministic",signature:"($connection as anyURI, $database as string, $keys as string*, $options as object()) as object()",description:'

Lists the specified documents in a given database.

\n

This function has the same semantics as\n multiple-documents#4,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Lists the specified documents in a given database.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"keys",type:"string",occurrence:"*",description:'
The keys of the documents which must be retrieved
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object listing the specified documents in the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:3,name:"multiple-documents",qname:"cloudant:multiple-documents",signature:"($connection as anyURI, $database as string, $keys as string*) as object()",description:'

List the specified documents in a given database.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The information is returned as a JSON structure containing meta information\n about the return structure, and the list of documents each with its ID, revision\n and key. The key is generated from the document ID.

\n

For example,\n

cloudant:multiple-documents($connection, "db",\n   ("5a049246-179f-42ad-87ac-8f080426c17c",\n    "d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n    "96f898f0-f6ff-4a9b-aac4-503992f31b01"))
.\n

\n

An object with the following format is returned:\n

\n {\n   "total_rows":3,\n   "offset":0,\n   "rows":[\n   {\n     "id":"5a049246-179f-42ad-87ac-8f080426c17c",\n     "key":"5a049246-179f-42ad-87ac-8f080426c17c",\n     "value":\n     {\n       "rev":"2-9d5401898196997853b5ac4163857a29"\n     }\n   },\n   {\n     "id":"96f898f0-f6ff-4a9b-aac4-503992f31b01",\n     "key":"96f898f0-f6ff-4a9b-aac4-503992f31b01",\n     "value":\n     {\n       "rev":"2-ff7b85665c4c297838963c80ecf481a3"\n      }\n   },\n   {\n     "id":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n     "key":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n     "value":\n     {\n       "rev":"2-cbdef49ef3ddc127eff86350844a6108"\n     }\n   }]\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

List the specified documents in a given database.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"keys",type:"string",occurrence:"*",description:'
The keys of the documents which must be retrieved
'}],returns:{type:"object()",description:"An object listing the specified documents in the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:4,name:"multiple-documents",qname:"cloudant:multiple-documents",signature:"($connection as anyURI, $database as string, $keys as string*, $options as object()) as object()",description:'

Lists the specified documents in a given database.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The information is returned as a JSON structure containing meta information\n about the return structure, and the list of documents each with its ID, revision\n and key. The key is generated from the document ID.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

cloudant:multiple-documents($connection, "db",\n   ("5a049246-179f-42ad-87ac-8f080426c17c",\n    "d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n    "96f898f0-f6ff-4a9b-aac4-503992f31b01"),\n   {"database-owner": "username"})
.\n

\n

An object with the following format is returned:\n

\n {\n   "total_rows":3,\n   "offset":0,\n   "rows":[\n   {\n     "id":"5a049246-179f-42ad-87ac-8f080426c17c",\n     "key":"5a049246-179f-42ad-87ac-8f080426c17c",\n     "value":\n     {\n       "rev":"2-9d5401898196997853b5ac4163857a29"\n     }\n   },\n   {\n     "id":"96f898f0-f6ff-4a9b-aac4-503992f31b01",\n     "key":"96f898f0-f6ff-4a9b-aac4-503992f31b01",\n     "value":\n     {\n       "rev":"2-ff7b85665c4c297838963c80ecf481a3"\n      }\n   },\n   {\n     "id":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n     "key":"d1f61e66-7708-4da6-aa05-7cbc33b44b7e",\n     "value":\n     {\n       "rev":"2-cbdef49ef3ddc127eff86350844a6108"\n     }\n   }]\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

Lists the specified documents in a given database.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"keys",type:"string",occurrence:"*",description:'
The keys of the documents which must be retrieved
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object listing the specified documents in the specified database"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:5,name:"multiple-view-documents-nondeterministic",qname:"cloudant:multiple-view-documents-nondeterministic",signature:"($connection as anyURI, $database as string, $design-document as string, $view as string, $keys as string*) as object()",description:'

List the specified documents in a given view.

\n

This function has the same semantics as\n multiple-view-documents#5,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

List the specified documents in a given view.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"view",type:"string",occurrence:null,description:'
A view name
'},{name:"keys",type:"string",occurrence:"*",description:'
The keys of the documents which must be retrieved
'}],returns:{type:"object()",description:"An object listing all the specified documents in the specified view"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:6,name:"multiple-view-documents-nondeterministic",qname:"cloudant:multiple-view-documents-nondeterministic",signature:"($connection as anyURI, $database as string, $design-document as string, $view as string, $keys as string*, $options as object()) as object()",description:'

Lists the specified documents in a given view.

\n

This function has the same semantics as\n multiple-view-documents#6,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Lists the specified documents in a given view.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"view",type:"string",occurrence:null,description:'
A view name
'},{name:"keys",type:"string",occurrence:"*",description:'
The keys of the documents which must be retrieved
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object listing all the specified documents in the specified view"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']},{isDocumented:!0,arity:5,name:"multiple-view-documents",qname:"cloudant:multiple-view-documents",signature:"($connection as anyURI, $database as string, $design-document as string, $view as string, $keys as string*) as object()",description:'

List the specified documents in a given view.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The information is returned as a JSON structure containing meta information\n about the return structure, and the list of documents each with its ID, revision\n and key. The key is generated from the document ID.

\n

For example,\n

cloudant:multiple-view-documents($connection, "db", "recipes", "by_ingredient",\n ("claret", "clear apple juice"))\n 
.\n

\n

An object with the following format is returned:\n

\n {\n   "total_rows" : 26484,\n   "rows" : [\n     {\n       "value" : ["Scotch collops"]],\n       "id" : "Scotchcollops",\n       "key" : "claret"\n     },\n     {\n       "value" : ["Stand pie"],\n       "id" : "Standpie",\n       "key" : "clear apple juice"\n     }\n   ],\n   "offset" : 6324\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

List the specified documents in a given view.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"view",type:"string",occurrence:null,description:'
A view name
'},{name:"keys",type:"string",occurrence:"*",description:'
The keys of the documents which must be retrieved
'}],returns:{type:"object()",description:"An object listing all the specified documents in the specified view"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error']},{isDocumented:!0,arity:6,name:"multiple-view-documents",qname:"cloudant:multiple-view-documents",signature:"($connection as anyURI, $database as string, $design-document as string, $view as string, $keys as string*, $options as object()) as object()",description:'

Lists the specified documents in a given view.

\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The information is returned as a JSON structure containing meta information\n about the return structure, and the list of documents each with its ID, revision\n and key. The key is generated from the document ID.

\n

This function allows to specify an additional options object.\n The following options are supported:\n

\n

\n

For example,\n

cloudant:multiple-view-documents($connection, "db", "recipes",\n   "by_ingredient", ("claret", "clear apple juice"),\n   {"database-owner": "username"})\n 
.\n

\n

An object with the following format is returned:\n

\n {\n   "total_rows" : 26484,\n   "rows" : [\n     {\n       "value" : ["Scotch collops"]],\n       "id" : "Scotchcollops",\n       "key" : "claret"\n     },\n     {\n       "value" : ["Stand pie"],\n       "id" : "Standpie",\n       "key" : "clear apple juice"\n     }\n   ],\n   "offset" : 6324\n }\n 
\n

\n

The fields have the following meaning:\n

\n

\n',summary:"

Lists the specified documents in a given view.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection",type:"anyURI",occurrence:null,description:'
A connection identifier
'},{name:"database",type:"string",occurrence:null,description:'
A database name
'},{name:"design-document",type:"string",occurrence:null,description:'
A design document name
'},{name:"view",type:"string",occurrence:null,description:'
A view name
'},{name:"keys",type:"string",occurrence:"*",description:'
The keys of the documents which must be retrieved
'},{name:"options",type:"object()",occurrence:null,description:'
An object specifying additional request options
'}],returns:{type:"object()",description:"An object listing all the specified documents in the specified view"},errors:['cloudant:AUTHORIZATION Authorization error','cloudant:HTTP An HTTP error occurred when issuing the request','cloudant:RESPONSE An error occurred parsing the server response','cloudant:CONNECTION The specified connection does not exist','cloudant:INTERNAL Cloudant internal error','cloudant:OPTIONS Malformed options object']}],variables:[]},"http://api.28.io/exportimport":{ns:"http://api.28.io/exportimport",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"",prefix:"an"},{uri:"http://api.28.io/collections",prefix:"cm"},{uri:"http://api.28.io/exportimport",prefix:"exportimport"},{uri:"http://zorba.io/modules/fetch",prefix:"fetch"},{uri:"http://api.28.io/indices",prefix:"in"},{uri:"http://www.28msec.com/modules/maps",prefix:"map"},{uri:"http://www.28msec.com/modules/http/request",prefix:"req"},{uri:"http://www.28msec.com/modules/http/response",prefix:"resp"},{uri:"http://www.28msec.com/modules/store",prefix:"store"},{uri:"http://api.28.io/validation",prefix:"validate"}],functions:[{isDocumented:!1,arity:1,name:"create-map",qname:"exportimport:create-map",signature:"($map as object())",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"map",type:"object()",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:0,name:"export",qname:"exportimport:export",signature:"()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:0,name:"import",qname:"exportimport:import",signature:"()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"import",qname:"exportimport:import",signature:"($import as object(), $overwrite as xs:boolean)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"import",type:"object()",occurrence:null,description:""},{name:"overwrite",type:"xs:boolean",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"is-system-collection",qname:"exportimport:is-system-collection",signature:"($name as xs:string) as xs:boolean",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!1,arity:1,name:"validate-map",qname:"exportimport:validate-map",signature:"($map as object()) as empty-sequence()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"map",type:"object()",occurrence:null,description:""}],returns:{type:"empty-sequence()",description:""},errors:[]}],variables:[]},"http://jsoniq.org/errors":{ns:"http://jsoniq.org/errors",description:" This module contains one variable declaration for each diagnostic of the\n http://jsoniq.org/errors namespace.\n The variables serves as documentation for the errors but can also\n be used in the code. For example, one useful scenario is to compare\n an error caught in the catch clause of a try-catch expression with one of\n the variables.\n",sees:[],authors:['Carlos Lopez'],version:null,encoding:"utf-8",namespaces:[{uri:"http://jsoniq.org/errors",prefix:"jerr"}],functions:[],variables:[{name:"jerr:JNSE0013",type:"xs:QName",description:"It is a dynamic error to serialize an atomic value not\n supported by JSON or a node with the JSON output method and with\n the jsoniq-serialization-extensions serialization parameter\n set to false.\n"},{name:"jerr:JNDY0021",type:"xs:QName",description:"parser error raised by jn:parse-json\n"},{name:"jerr:JNTY0021",type:"xs:QName",description:"array or object selector on heterogeneous sequence\n"},{name:"jerr:JNTY0020",type:"xs:QName",description:"parser error for invalid option type\n"},{name:"jerr:JNTY0024",type:"xs:QName",description:"objects or arrays don't have a string value\n"},{name:"jerr:JNTY0023",type:"xs:QName",description:"It is a type error if the prefix is not a string or if the\n serialization parameters are not an element.\n"},{name:"jerr:JNUP0019",type:"xs:QName",description:"It is a dynamic error if the content expression, in an object insert expression, does not evaluate to a sequence of objects.\n"},{name:"jerr:JNTY0018",type:"xs:QName",description:"It is a dynamic error if there is not exactly one supplied parameter for an object or array selector.\n"},{name:"jerr:JNUP0017",type:"xs:QName",description:" It is a dynamic error if the value in a replace expression is not exactly a single item.\n"},{name:"jerr:JNUP0016",type:"xs:QName",description:"It is a dynamic error if it is attempted to create a replace, delete or rename update primitive with a selector that cannot be resolved against the target array or object.\n"},{name:"jerr:JNSE0022",type:"xs:QName",description:"It is a dynamic error to serialize a sequence that does\n not exist of exactly one document node with XML, HTML, XHTML, Text.\n"},{name:"jerr:JNSE0014",type:"xs:QName",description:"It is a dynamic error to serialize a function or a node with the\n JSON output method.\n"},{name:"jerr:NS",type:"item()*",description:""},{name:"jerr:JNSE0012",type:"xs:QName",description:"It is a dynamic error to serialize a sequence of less\n or more than one item with the JSON output method if the\n jsoniq-serialization-multiple-items is set to no.\n"},{name:"jerr:JNTY0011",type:"xs:QName",description:"It is a type error if the content sequence in a node constructor or in an XQUF insert or replace update expression contains an object or an array.\n"},{name:"jerr:JNUP0010",type:"xs:QName",description:"It is a dynamic error if a pending update list contains two renaming update primitives on the same object and with the same selector.\n"},{name:"jerr:JNUP0009",type:"xs:QName",description:"It is a dynamic error if a pending update list contains two replacing update primitives on the same object or array, and with the same selector.\n"},{name:"jerr:JNUP0008",type:"xs:QName",description:"It is a dynamic error if the target of a deleting or replacing expression is not an array or an object.\n It is a dynamic error if the target of a renaming expression is not an object.\n It is a dynamic error if the target of an appending expression is not an array.\n It is a dynamic error if the target of a position-inserting expression is not an array.\n It is a dynamic error if the target of a non-position-inserting expression is not an object.\n"},{name:"jerr:JNUP0007",type:"xs:QName",description:"It is a type error if, in an updating expression, an array selector cannot be cast to xs:integer or if an object selector cannot be cast to xs:string.\n"},{name:"jerr:JNUP0006",type:"xs:QName",description:"It is a dynamic error if upd:applyUpdates causes an object to contain two pairs with the same name.\n"},{name:"jerr:JNUP0005",type:"xs:QName",description:"It is a dynamic error if a pending update list contains two inserting update primitives on the same object and pair name.\n"},{name:"jerr:JNTY0004",type:"xs:QName",description:"It is a type error to call fn:data on a sequence containing an array or an object.\n"},{name:"jerr:JNDY0003",type:"xs:QName",description:"It is a dynamic error if two pairs in an object constructor or in a simple object union have the same name.\n"},{name:"jerr:JNTY0002",type:"xs:QName",description:"It is a type error if the right-hand-side expression of a pair constructor does not return exactly one item.\n"}]},"http://zorba.io/modules/sctx":{ns:"http://zorba.io/modules/sctx",description:" This module provides functions that gets components of the static context.\n",sees:['http://www.w3.org/TR/xquery/#id-xq-static-context-components'],authors:['Nicolae Brinza'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/sctx",prefix:"sctx"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:0,name:"base-uri",qname:"sctx:base-uri",signature:"() as xs:string? external",description:" Gets the base URI.\n",summary:"

Gets the base URI.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string?",description:"The base URI."},errors:[]},{isDocumented:!0,arity:0,name:"boundary-space-policy",qname:"sctx:boundary-space-policy",signature:"() as xs:string external",description:" Gets the boundary whitespace policy used by direct element constructors.\n",summary:"

Gets the boundary whitespace policy used by direct element constructors.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:'Either preserve or strip.'},errors:[]},{isDocumented:!0,arity:0,name:"construction-mode",qname:"sctx:construction-mode",signature:"() as xs:string external",description:" Gets the static context construction mode of element and document nodes.\n",summary:"

Gets the static context construction mode of element and document nodes.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:'Either preserve or strip.'},errors:[]},{isDocumented:!0,arity:0,name:"copy-namespaces-mode",qname:"sctx:copy-namespaces-mode",signature:"() as xs:string+ external",description:" Gets the static context components that control the the namespace bindings\n that are assigned when an existing element node is copied\n by an element constructor.\n",summary:"

Gets the static context components that control the the namespace bindings\n that are assigned when an existing element node is copied\n by an element constructor.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string+",description:'A sequence of two strings: the first is either preserve or no-preserve and the second is either inherit or no-inherit.'},errors:[]},{isDocumented:!0,arity:0,name:"default-collation",qname:"sctx:default-collation",signature:"() as xs:string external",description:' Gets one of statically known collations used by functions and operators\n for comparing and ordering values of type xs:string\n or xs:anyURI when no explicit collation is specified.\n',summary:"

Gets one of statically known collations used by functions and operators\n for comparing and ordering values of type xs:string \n or xs:anyURI when no explicit collation is specified.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:"The collations that is used by default."},errors:[]},{isDocumented:!0,arity:0,name:"default-collection-type",qname:"sctx:default-collection-type",signature:"() as xs:string external",description:' Gets the statically known default collection type.\n This is the type of the sequence of nodes that would result from calling the\n fn:collection function with no arguments.\n',summary:"

Gets the statically known default collection type.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:"The type of the default collection."},errors:[]},{isDocumented:!0,arity:0,name:"default-function-namespace",qname:"sctx:default-function-namespace",signature:"() as xs:string external",description:" Gets the URI of the default function namespace.\n",summary:"

Gets the URI of the default function namespace.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:"The URI of the of the default function namespace."},errors:[]},{isDocumented:!0,arity:0,name:"default-order",qname:"sctx:default-order",signature:"() as xs:string external",description:' Gets the component that controls the processing of empty sequences and NaN\n values as ordering keys in an order by clause\n in a FLWOR expression.\n',summary:"

Gets the component that controls the processing of empty sequences and NaN\n values as ordering keys in an order by clause\n in a FLWOR expression.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:'Either greatest or least.'},errors:[]},{isDocumented:!0,arity:2,name:"function-annotations",qname:"sctx:function-annotations",signature:"($name as xs:QName, $arity as xs:integer) as xs:QName* external",description:" Gets the list of annotations declared for the given function.\n",summary:"

Gets the list of annotations declared for the given function.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the function.
'},{name:"arity",type:"xs:integer",occurrence:null,description:'
The number of arguments the function takes.
'}],returns:{type:"xs:QName*",description:"the list of annotations"},errors:[]},{isDocumented:!0,arity:1,name:"function-arguments-count",qname:"sctx:function-arguments-count",signature:"($function as xs:QName) as xs:int* external",description:" Gets the number of arguments the given XQuery function takes.\n",summary:"

Gets the number of arguments the given XQuery function takes.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"function",type:"xs:QName",occurrence:null,description:'
A QName identifying a function.
'}],returns:{type:"xs:int*",description:"Either a sequence of zero or more integers (one for each overloaded version of the given function) or an empty sequence if the function is not defined."},errors:[]},{isDocumented:!0,arity:0,name:"function-names",qname:"sctx:function-names",signature:"() as xs:QName* external",description:" Gets a sequence containing the QNames of all defined functions\n that are available to be called from within an expression.\n",summary:"

Gets a sequence containing the QNames of all defined functions\n that are available to be called from within an expression.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence for QNames identifying all functions."},errors:[]},{isDocumented:!0,arity:0,name:"functions",qname:"sctx:functions",signature:"() as object()* external",description:" Gets a sequence of JSON objects containing the name, arity, and annotations\n of all defined functions that are available to be called form within an\n expression.\n",summary:"

Gets a sequence of JSON objects containing the name, arity, and annotations\n of all defined functions that are available to be called form within an\n expression.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()*",description:"A sequence of objects."},errors:[]},{isDocumented:!0,arity:0,name:"in-scope-attribute-declarations",qname:"sctx:in-scope-attribute-declarations",signature:"() as xs:QName* external",description:" Gets a sequence of QNames identifying declared attributes\n in the imported schemas.\n",summary:"

Gets a sequence of QNames identifying declared attributes\n in the imported schemas.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence of QNames, one for each attribute."},errors:[]},{isDocumented:!0,arity:0,name:"in-scope-attribute-groups",qname:"sctx:in-scope-attribute-groups",signature:"() as xs:QName* external",description:" Gets a sequence of QNames identifying declared in-scope\n schema attribute groups.\n",summary:"

Gets a sequence of QNames identifying declared in-scope\n schema attribute groups.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence of QNames, one for each attribute group."},errors:[]},{isDocumented:!0,arity:0,name:"in-scope-element-declarations",qname:"sctx:in-scope-element-declarations",signature:"() as xs:QName* external",description:" Gets a sequence of QNames identifying declared elements\n in the imported schemas.\n",summary:"

Gets a sequence of QNames identifying declared elements\n in the imported schemas.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence of QNames, one for each declared element."},errors:[]},{isDocumented:!0,arity:0,name:"in-scope-element-groups",qname:"sctx:in-scope-element-groups",signature:"() as xs:QName* external",description:" Gets a sequence of QNames identifying declared in-scope\n schema element groups.\n",summary:"

Gets a sequence of QNames identifying declared in-scope\n schema element groups.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence of QNames, one for each element group."},errors:[]},{isDocumented:!0,arity:0,name:"in-scope-schema-types",qname:"sctx:in-scope-schema-types",signature:"() as xs:QName* external",description:" Gets a sequence of QNames identifying in-scope schema types\n including all the predefined schema types and all definitions\n found in imported schemas.\n",summary:"

Gets a sequence of QNames identifying in-scope schema types\n including all the predefined schema types and all definitions\n found in imported schemas.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence of QNames, one for each defined type."},errors:[]},{isDocumented:!0,arity:0,name:"in-scope-variables",qname:"sctx:in-scope-variables",signature:"() as xs:QName* external",description:" Gets a sequence of QNames identifying declared variables\n from the static context.\n",summary:"

Gets a sequence of QNames identifying declared variables\n from the static context.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence of QNames, one for each variable."},errors:[]},{isDocumented:!0,arity:1,name:"option",qname:"sctx:option",signature:"($name as xs:QName) as xs:string? external",description:" Gets the value of an option that is declared in the prolog of the module.\n",summary:"

Gets the value of an option that is declared in the prolog of the module.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
the name of the option value to retrieve
'}],returns:{type:"xs:string?",description:"the value of the option if contained in the static context or the empty sequence otherwise."},errors:[]},{isDocumented:!0,arity:0,name:"ordering-mode",qname:"sctx:ordering-mode",signature:"() as xs:string external",description:" Gets the ordering mode that affects the ordering of the result sequences\n returned by certain expressions.\n",summary:"

Gets the ordering mode that affects the ordering of the result sequences\n returned by certain expressions.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:'Either ordered or unordered.'},errors:[]},{isDocumented:!0,arity:0,name:"statically-known-collations",qname:"sctx:statically-known-collations",signature:"() as xs:anyURI* external",description:" Gets a sequence that contains the statically known collations.\n",summary:"

Gets a sequence that contains the statically known collations.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:anyURI*",description:"The sequence of collations."},errors:[]},{isDocumented:!0,arity:1,name:"statically-known-document-type",qname:"sctx:statically-known-document-type",signature:"($document as xs:string) as xs:QName external",description:" For the given document, returns the static type of its root node.\n",summary:"

For the given document, returns the static type of its root node.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"document",type:"xs:string",occurrence:null,description:'
A URI of a document.
'}],returns:{type:"xs:QName",description:"The static type of the given document."},errors:[]},{isDocumented:!0,arity:0,name:"statically-known-documents",qname:"sctx:statically-known-documents",signature:"() as xs:anyURI* external",description:" Gets a sequence that contains the URIs of all statically known documents.\n",summary:"

Gets a sequence that contains the URIs of all statically known documents.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:anyURI*",description:"The sequence of document URIs."},errors:[]},{isDocumented:!0,arity:1,name:"statically-known-namespace-binding",qname:"sctx:statically-known-namespace-binding",signature:"($prefix as xs:string) as xs:string? external",description:" Gets the bound URI for the given prefix.\n",summary:"

Gets the bound URI for the given prefix.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"prefix",type:"xs:string",occurrence:null,description:'
The prefix of the known namespace for which the bound URI is being requested.
'}],returns:{type:"xs:string?",description:"The URI bound to the prefix is returned, or an empty sequence if the prefix is not known."},errors:[]},{isDocumented:!0,arity:0,name:"statically-known-namespaces",qname:"sctx:statically-known-namespaces",signature:"() as xs:string* external",description:" Gets a list of known statically known namespaces as prefixes\n (fn, xml, xs, xsi, etc).\n",summary:"

Gets a list of known statically known namespaces as prefixes\n (fn, xml, xs, xsi, etc).

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string*",description:"A sequence of xs:strings, one for each known namespace prefix."},errors:[]},{isDocumented:!0,arity:0,name:"xpath10-compatibility-mode",qname:"sctx:xpath10-compatibility-mode",signature:"() as xs:boolean external",description:" Gets true or false depending on whether rules for compatibility\n with XPath 1.0 are in effect.\n XQuery set the value of this component to false.\n",summary:"

Gets true or false depending on whether rules for compatibility\n with XPath 1.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:boolean",description:'The function should return false.'},errors:[]}],variables:[]},"http://xbrl.io/modules/bizql/profiles/sec/import":{ns:"http://xbrl.io/modules/bizql/profiles/sec/import",description:'

This module provides functionality for querying XBRL Infosets of financial reports submitted to the SEC.\n

\n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"http://xbrl.io/modules/bizql/archives",prefix:"archives"},{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://xbrl.io/modules/bizql/entities",prefix:"entities"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/import",prefix:"imp"},{uri:"http://www.28msec.com/modules/mongodb",prefix:"m"},{uri:"http://zorba.io/modules/string",prefix:"string"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"disclosure-for-network-label",qname:"imp:disclosure-for-network-label",signature:"($component as object()) as object()",description:'

\n Compute the disclore for a component\'s network label.\n

\n',summary:"

\n Compute the disclore for a component's network label.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"component",type:"object()",occurrence:null,description:'
the component
'}],returns:{type:"object()",description:"returns the given component ammended with the disclosure"},errors:[]}],variables:[{name:"imp:disclosure-matching",type:"object()",description:" Declarative description of the disclosure matching heuristics.\n"}]},"http://xbrl.io/modules/bizql/profiles/sec/core":{ns:"http://xbrl.io/modules/bizql/profiles/sec/core",description:'

This module provides functionality for querying XBRL Models of financial reports submitted to the SEC.\n

\n

Standard $options Parameter

\n

Most functions in the BizQL package allow an additional $options\n parameter. The options parameter is a JSON object which is defined in the documentation\n of the facts module.

\n

In addition to the option fields defined in the\n facts module the following\n fields can be used in the options of a function in the SEC profile:

\n \n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"http://xbrl.io/modules/bizql/archives",prefix:"archives"},{uri:"http://xbrl.io/modules/bizql/concept-maps",prefix:"concept-maps"},{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://xbrl.io/modules/bizql/entities",prefix:"entities"},{uri:"http://xbrl.io/modules/bizql/facts",prefix:"facts"},{uri:"http://xbrl.io/modules/bizql/hypercubes",prefix:"hypercubes"},{uri:"http://www.28msec.com/modules/mongodb",prefix:"m"},{uri:"http://xbrl.io/modules/bizql/report-schemas",prefix:"report-schemas"},{uri:"http://xbrl.io/modules/bizql/profiles/sec/core",prefix:"sec"},{uri:"http://zorba.io/modules/string",prefix:"string"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"edgar-facts-for-archives",qname:"sec:edgar-facts-for-archives",signature:"($archive_or_ids as item()*) as object()*",description:'

Return all facts for concepts that are defined by one of the common\n edgar taxonomies. In particular, this function returns facts for concepts\n having one of the following prefixes:

\n \n',summary:"

Return all facts for concepts that are defined by one of the common\n edgar taxonomies.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive_or_ids",type:"item()",occurrence:"*",description:'
a sequence of archive or archive IDs to filter.
'}],returns:{type:"object()*",description:"all facts having one of the above prefixes."},errors:[]},{isDocumented:!0,arity:1,name:"end-date",qname:"sec:end-date",signature:"($filing-fact-or-id as item()?) as xs:date?",description:'

Retrieves the document end date of a filing or a fact.

\n',summary:"

Retrieves the document end date of a filing or a fact.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"filing-fact-or-id",type:"item()",occurrence:"?",description:'
a filing, a fact, or its id.
'}],returns:{type:"xs:date?",description:'the document end date (e.g., xs:date("2011-04-30")).'},errors:[]},{isDocumented:!0,arity:1,name:"extension-facts-for-archives",qname:"sec:extension-facts-for-archives",signature:"($archive_or_ids as item()*) as object()*",description:'

Return all facts for concepts that are NOT defined by one of the common\n edgar taxonomies. In particular, this function returns facts for concepts\n having none of the prefixes listed under function\n sec:edgar-facts-for-archives.

\n',summary:"

Return all facts for concepts that are NOT defined by one of the common\n edgar taxonomies.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive_or_ids",type:"item()",occurrence:"*",description:'
a sequence of archive or archive IDs to filter.
'}],returns:{type:"object()*",description:"all facts having none of the common edgar prefixes."},errors:[]},{isDocumented:!0,arity:2,name:"fact-table-for-schema",qname:"sec:fact-table-for-schema",signature:"($schema as item(), $archives as item()*) as array()",description:'

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema, and populates them with the default dimension values\n when missing.

\n',summary:"

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema, and populates them with the default dimension values\n when missing.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"schema",type:"item()",occurrence:null,description:'
a report schema or its RID.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $sec:ALL_OF_THEM for no filtering.
'}],returns:{type:"array()",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:2,name:"facts-for-archives-and-concepts",qname:"sec:facts-for-archives-and-concepts",signature:"($archive_or_ids as item()*, $concepts as item()*) as object()*",description:'

Retrieves the facts associated with the supplied concepts\n from the supplied archive, that match the fiscal focus of the archive.

\n',summary:"

Retrieves the facts associated with the supplied concepts\n from the supplied archive, that match the fiscal focus of the archive.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive_or_ids",type:"item()",occurrence:"*",description:'
a sequence of archives or their ids or $sec:ALL_OF_THEM for no filtering.
'},{name:"concepts",type:"item()",occurrence:"*",description:'
the concepts or $sec:ALL_OF_THEM for no filtering.
'}],returns:{type:"object()*",description:"the latest facts associated with the supplied concept."},errors:[]},{isDocumented:!0,arity:3,name:"facts-for-archives-and-concepts",qname:"sec:facts-for-archives-and-concepts",signature:"($archive_or_ids as item()*, $concepts as item()*, $options as object()?) as object()*",description:'

Retrieves the facts associated with the supplied concepts\n from the supplied archive, that match the fiscal focus of the archive.

\n',summary:"

Retrieves the facts associated with the supplied concepts\n from the supplied archive, that match the fiscal focus of the archive.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive_or_ids",type:"item()",occurrence:"*",description:'
a sequence of archives or their ids or $sec:ALL_OF_THEM for no filtering.
'},{name:"concepts",type:"item()",occurrence:"*",description:'
the concepts or $sec:ALL_OF_THEM for no filtering.
'},{name:"options",type:"object()",occurrence:"?",description:'
standard SEC BizQL options.
'}],returns:{type:"object()*",description:"the latest facts associated with the supplied concept."},errors:[]},{isDocumented:!0,arity:2,name:"facts-for-schema",qname:"sec:facts-for-schema",signature:"($schema as item(), $archives as item()*) as item()*",description:'

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema and to the fiscal focus, and populates\n them with the default dimension values when missing.

\n',summary:"

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema and to the fiscal focus, and populates\n them with the default dimension values when missing.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"schema",type:"item()",occurrence:null,description:'
a schema.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $sec:ALL_OF_THEM for no filtering.
'}],returns:{type:"item()*",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:1,name:"hide-amended-facts",qname:"sec:hide-amended-facts",signature:"($facts as object()*) as object()*",description:'

Filters a list of facts and returns only the latest amending facts.\n Accordingly, all amended facts are filtered out.

\n',summary:"

Filters a list of facts and returns only the latest amending facts.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"facts",type:"object()",occurrence:"*",description:'
a list of facts.
'}],returns:{type:"object()*",description:"a sequence of facts without amended facts."},errors:[]},{isDocumented:!0,arity:2,name:"populate-schema-with-facts",qname:"sec:populate-schema-with-facts",signature:"($schema as item(), $archives as item()*) as object()*",description:'

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied schema. Default dimension values are added to the facts\n when missing.

\n',summary:"

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied schema.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"schema",type:"item()",occurrence:null,description:'
a report schema or its RID.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs.
'}],returns:{type:"object()*",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:3,name:"populate-schema-with-facts",qname:"sec:populate-schema-with-facts",signature:"($schema as item(), $archives as item()*, $options as object()?) as object()*",description:'

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied schema. Default dimension values are added to the facts\n when missing.

\n',summary:"

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied schema.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"schema",type:"item()",occurrence:null,description:'
a report schema or its RID.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $sec:ALL_OF_THEM for no filtering.
'},{name:"options",type:"object()",occurrence:"?",description:'
standard SEC BizQL options.
'}],returns:{type:"object()*",description:"a sequence of facts with populated dimension values."},errors:[]}],variables:[{name:"sec:CIK",type:"xs:string",description:" Scheme for the SEC entity identifiers (i.e. http://www.sec.gov/CIK)\n"},{name:"sec:ALL_OF_THEM",type:"boolean",description:" Joker value for all archives or all concepts.\n"},{name:"sec:EDGAR_PREFIXES",type:"item()*",description:" All prefixes pre-declared in SEC's EDGAR.\n"}]},"http://zorba.io/modules/excel/logical":{ns:"http://zorba.io/modules/excel/logical",description:" This is a library module offering the same set of functions\n defined by Microsoft Excel, under Logical Functions.\n",sees:['Excel Documentation: Logical Functions'],authors:['Sorin Nasoi'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/excel/errors",prefix:"excel-err"},{uri:"http://zorba.io/modules/excel/logical",prefix:"excel-logical"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"and",qname:"excel-logical:and",signature:"($values as xs:anyAtomicType*) as xs:boolean",description:" Returns TRUE if all its arguments are TRUE; FALSE if one or more arguments are FALSE.\n",summary:"

Returns TRUE if all its arguments are TRUE; FALSE if one or more arguments are FALSE.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"values",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequence of arguments.
'}],returns:{type:"xs:boolean",description:"TRUE if all its arguments are TRUE; FALSE if one or more arguments are FALSE."},errors:['excel-err:Value provided sequence is empty.']},{isDocumented:!0,arity:2,name:"and",qname:"excel-logical:and",signature:"($arg1 as xs:anyAtomicType, $arg2 as xs:anyAtomicType) as xs:boolean",description:" Returns TRUE if all its arguments are TRUE; FALSE if one or more arguments are FALSE.\n",summary:"

Returns TRUE if all its arguments are TRUE; FALSE if one or more arguments are FALSE.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:anyAtomicType",occurrence:null,description:'
the first argument.
'},{name:"arg2",type:"xs:anyAtomicType",occurrence:null,description:'
the second argument.
'}],returns:{type:"xs:boolean",description:"TRUE if all its arguments are TRUE; FALSE if one or more arguments are FALSE."},errors:[]},{isDocumented:!0,arity:3,name:"if",qname:"excel-logical:if",signature:"($logical_test as xs:boolean, $value_if_true as item()*, $value_if_false as item()*) as item()*",description:" Returns one value if a condition you specify evaluates to TRUE and another value if it evaluates to FALSE.\n",summary:"

Returns one value if a condition you specify evaluates to TRUE and another value if it evaluates to FALSE.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"logical_test",type:"xs:boolean",occurrence:null,description:'
is any value or expression that can be evaluated to TRUE or FALSE.
'},{name:"value_if_true",type:"item()",occurrence:"*",description:'
the value that is returned if logical_test is TRUE.
'},{name:"value_if_false",type:"item()",occurrence:"*",description:'
the value that is returned if logical_test is FALSE.
'}],returns:{type:"item()*",description:"One value if a condition you specify evaluates to TRUE and another value if it evaluates to FALSE."},errors:[]},{isDocumented:!0,arity:1,name:"or",qname:"excel-logical:or",signature:"($values as xs:anyAtomicType*) as xs:boolean",description:" Returns TRUE if any argument is TRUE; FALSE if all arguments are FALSE.\n",summary:"

Returns TRUE if any argument is TRUE; FALSE if all arguments are FALSE.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"values",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequence of arguments.
'}],returns:{type:"xs:boolean",description:"TRUE if any argument is TRUE; FALSE if all arguments are FALSE."},errors:['excel-err:Value provided sequence is empty.']},{isDocumented:!0,arity:2,name:"or",qname:"excel-logical:or",signature:"($arg1 as xs:anyAtomicType, $arg2 as xs:anyAtomicType) as xs:boolean",description:" Returns TRUE if any argument is TRUE; FALSE if all arguments are FALSE.\n",summary:"

Returns TRUE if any argument is TRUE; FALSE if all arguments are FALSE.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:anyAtomicType",occurrence:null,description:'
the first argument.
'},{name:"arg2",type:"xs:anyAtomicType",occurrence:null,description:'
the second argument.
'}],returns:{type:"xs:boolean",description:"TRUE if any argument is TRUE; FALSE if all arguments are FALSE."},errors:[]}],variables:[]},"http://www.28msec.com/modules/sequence":{ns:"http://www.28msec.com/modules/sequence",description:" The sequence module allows you to generate consecutive\n application-unique xs:integer ids. This is required e.g. in accounting\n applications as some legislations require consecutive invoice numbers.\n",sees:[],authors:['28msec'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://zorba.io/modules/store/static/collections/dml",prefix:"cdml"},{uri:"http://zorba.io/modules/store/static/indexes/dml",prefix:"idml"},{uri:"http://www.28msec.com/modules/lock",prefix:"lock"},{uri:"http://www.28msec.com/modules/sequence",prefix:"seq"},{uri:"http://www.28msec.com/modules/sleep",prefix:"sleep"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"id",qname:"seq:id",signature:"($uri as xs:string) as xs:integer",description:' Returns a unique (sequentially incremented) id for the\n uri specified as parameter.\n Here the function is used to create consecutive invoice numbers:\n
\n if (order:fulfilled($order-id))\n then\n   {\n     variable $invoice-id := seq:id("invoice");\n     invoice:create($invoice-id, $order-id);\n   }\n else\n   ...\n 
\n',summary:"

Returns a unique (sequentially incremented) id for the\n uri specified as parameter.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:null,description:'
The name of the sequence counter as uri.
'}],returns:{type:"xs:integer",description:"A sequentially incremented id."},errors:[]},{isDocumented:!0,arity:1,name:"reset",qname:"seq:reset",signature:"($uri as xs:string) as empty-sequence()",description:" Resets the unique (sequentially incremented) id generation\n for the uri specified as parameter.\n",summary:"

Resets the unique (sequentially incremented) id generation\n for the uri specified as parameter.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:null,description:'
The name of the sequence counter as uri.
'}],returns:{type:"empty-sequence()",description:"empty-sequence()"},errors:[]},{isDocumented:!0,arity:1,name:"value",qname:"seq:value",signature:"($uri as xs:string) as xs:integer",description:" Returns the id for the uri specified as parameter without incrementing it.\n",summary:"

Returns the id for the uri specified as parameter without incrementing it.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:null,description:'
The name of the sequence counter as uri.
'}],returns:{type:"xs:integer",description:"The current value"},errors:['seq:not-found if no counter with the given $uri was found']}],variables:[{name:"seq:counters",type:"item()*",description:" The QName for the counters collection.\n"},{name:"seq:counters-by-uri",type:"item()*",description:" The QName for the counters-by-uri collection.\n"}]},"http://api.28.io/databrowser":{ns:"http://api.28.io/databrowser",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"",prefix:"an"},{uri:"http://api.28.io/databrowser",prefix:"api"},{uri:"http://zorba.io/modules/base64",prefix:"base64"},{uri:"http://zorba.io/modules/store/static/collections/dml",prefix:"dml"},{uri:"http://www.zorba-xquery.com/extensions",prefix:"ext"},{uri:"http://www.functx.com",prefix:"functx"},{uri:"http://expath.org/ns/http-client",prefix:"http"},{uri:"http://www.zorba-xquery.com/modules/http-client",prefix:"http-client"},{uri:"http://zorba.io/modules/xml-options",prefix:"opt"},{uri:"http://www.28msec.com/modules/project",prefix:"project"},{uri:"http://zorba.io/modules/reflection",prefix:"r"},{uri:"http://zorba.io/modules/reference",prefix:"ref"},{uri:"http://www.28msec.com/modules/http/request",prefix:"req"},{uri:"http://www.28msec.com/modules/http/response",prefix:"res"},{uri:"http://zorba.io/modules/xml",prefix:"xmlmod"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!1,arity:1,name:"collection",qname:"api:collection",signature:"($name as xs:string)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:0,name:"delete",qname:"api:delete",signature:"()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!0,arity:0,name:"dispatch",qname:"api:dispatch",signature:"()",description:" Data Browser API dispatched.\n Handles API authorization to the portal and dispatching.\n",summary:"

Data Browser API dispatched.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:0,name:"edit",qname:"api:edit",signature:"()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:0,name:"options",qname:"api:options",signature:"()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"run",qname:"api:run",signature:"($sequential as xs:boolean) as object()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"sequential",type:"xs:boolean",occurrence:null,description:""}],returns:{type:"object()",description:""},errors:[]},{isDocumented:!1,arity:1,name:"serialize",qname:"api:serialize",signature:"($items as item()*) as object()",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"items",type:"item()",occurrence:"*",description:""}],returns:{type:"object()",description:""},errors:[]},{isDocumented:!1,arity:0,name:"upload",qname:"api:upload",signature:"()",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:null,description:""},errors:[]}],variables:[]},"http://xbrl.io/modules/bizql/footnotes":{ns:"http://xbrl.io/modules/bizql/footnotes",description:'

This module provides functions for retrieving XBRL footnotes\n (see section 4.11 Footnotes of the XBRL 2.1 specification).

\n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"http://xbrl.io/modules/bizql/archives",prefix:"archives"},{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://xbrl.io/modules/bizql/entities",prefix:"entities"},{uri:"http://xbrl.io/modules/bizql/facts",prefix:"facts"},{uri:"http://xbrl.io/modules/bizql/footnotes",prefix:"footnotes"},{uri:"http://www.28msec.com/modules/mongodb/types",prefix:"m"},{uri:"http://www.28msec.com/modules/mongodb",prefix:"mongo"},{uri:"http://zorba.io/modules/string",prefix:"string"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"fnid",qname:"footnotes:fnid",signature:"($footnote-or-id as item()) as atomic",description:'

Converts the input to a normalized footnote id (FNID). The input\n can be either an FNID, or a footnote object which contains an _id.

\n',summary:"

Converts the input to a normalized footnote id (FNID).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"footnote-or-id",type:"item()",occurrence:null,description:'
an footnote object or FNID.
'}],returns:{type:"atomic",description:"the normalized FNID."},errors:['footnotes:INVALID-PARAMETER if the FNID or footnote is not valid.']},{isDocumented:!0,arity:1,name:"footnotes-for-archives",qname:"footnotes:footnotes-for-archives",signature:"($archive-or-ids as item()*) as object()*",description:'

Return all footnotes reported within a given archive.

\n',summary:"

Return all footnotes reported within a given archive.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive-or-ids",type:"item()",occurrence:"*",description:'
a sequence of archives or AIDs to filter.
'}],returns:{type:"object()*",description:"all footnotes reported in these archives."},errors:[]},{isDocumented:!0,arity:1,name:"footnotes-for-facts",qname:"footnotes:footnotes-for-facts",signature:"($facts-or-ids as item()*) as object()*",description:'

Return all footnotes associated with the given facts.

\n',summary:"

Return all footnotes associated with the given facts.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"facts-or-ids",type:"item()",occurrence:"*",description:'
a sequence of facts or fact IDs to filter
'}],returns:{type:"object()*",description:"all footnotes associated with these facts."},errors:[]},{isDocumented:!0,arity:2,name:"footnotes-for-facts",qname:"footnotes:footnotes-for-facts",signature:"($facts-or-ids as item()*, $options as object()?) as object()*",description:'

Return all footnotes associated with the given facts.

\n',summary:"

Return all footnotes associated with the given facts.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"facts-or-ids",type:"item()",occurrence:"*",description:'
a sequence of facts or fact IDs to filter
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"object()*",description:"all footnotes associated with these facts."},errors:[]},{isDocumented:!0,arity:1,name:"footnotes-search",qname:"footnotes:footnotes-search",signature:"($search as string) as object()*",description:'

Return all footnotes that match the given search term.

\n',summary:"

Return all footnotes that match the given search term.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"search",type:"string",occurrence:null,description:'
the search query
'}],returns:{type:"object()*",description:"all footnotes matching the given search query"},errors:[]},{isDocumented:!0,arity:0,name:"footnotes",qname:"footnotes:footnotes",signature:"() as object()*",description:'

Return all footnotes.

\n',summary:"

Return all footnotes.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()*",description:"all footnotes."},errors:[]},{isDocumented:!0,arity:1,name:"footnotes",qname:"footnotes:footnotes",signature:"($footnote-or-ids as item()*) as object()?",description:'

Return the footnote with the given FNIDs.

\n',summary:"

Return the footnote with the given FNIDs.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"footnote-or-ids",type:"item()",occurrence:"*",description:'
the FNIDs or the footnotes themselves.
'}],returns:{type:"object()?",description:"the footnotes with the given FNIDs the empty sequence if no footnote was found or if the input is an empty sequence."},errors:[]}],variables:[{name:"footnotes:col",type:"string",description:" Name of the collection the footnotes are stored in.\n"},{name:"footnotes:ARCHIVE",type:"string",description:" Name of the field that points to the archive.\n"},{name:"footnotes:FACTS",type:"string",description:" Name of the field that points to the facts linked to this footnote.\n"},{name:"footnotes:LANG",type:"string",description:" Name of the field that holds the language attribute of the footnote.\n"}]},"http://zorba.io/modules/store/static/indexes/dml":{ns:"http://zorba.io/modules/store/static/indexes/dml",description:' This module defines a set of functions to probe and refresh indexes which are\n declared in the prolog of a module.\n

\n This module is part of\n Zorba\'s XQuery Data Definition Facility.\n All the indexes managed by this module have to be pre-declared in the prolog\n of a library module.\n Please refer to the\n general documentation\n for more information and examples.\n',sees:['Data Lifecycle','XQuery Data Definition Facility','http://zorba.io/modules/store/static/indexes/ddl','http://zorba.io/modules/store/static/collections/dml','http://zorba.io/modules/store/static/collections/ddl','http://zorba.io/modules/store/static/integrity-constraints/ddl','http://zorba.io/modules/store/static/integrity-constraints/dml','http://zorba.io/errors'],authors:['Zorba Team'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://zorba.io/modules/store/static/indexes/dml",prefix:"idml"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:1,name:"keys",qname:"idml:keys",signature:"($name as xs:QName) as node()* external",description:' Gets a sequence of all keys contained in the index with the given name.\n Each element has the following structure:\n

\n   <key xmlns="http://zorba.io/modules/store/static/indexes/dml">\n     <attribute value="key1_value"/>\n     <attribute value="key2_value"/>\n     <attribute value="key3_value"/>\n   </key>\n  
\n Note that the order of the attribute elements reflects the order of\n the keys in the index specification. Also note that the values in\n these attributes have the type that is declared in the corresponding\n index specification.\n',summary:"

Gets a sequence of all keys contained in the index with the given name.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the index to get the keys for.
'}],returns:{type:"node()*",description:"A sequence of elements comprising the keys in the index."},errors:['zerr:ZDDY0021 if the index was not declared.','zerr:ZDDY0023 if the index does not exist.']},{isDocumented:!0,arity:2,name:"probe-index-point-general",qname:"idml:probe-index-point-general",signature:"($name as xs:QName, $key as xs:anyAtomicType*) as node()* external",description:' Gets from an index the domain nodes associated by general equality with a\n given search sequence .\n The search sequence consists of an arbitrary number of search keys\n where each search key is an atomic item.\n The function is supported by general indexes only.\n',summary:"

Gets from an index the domain nodes associated by general equality with a\n given search sequence .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the index to probe.
'},{name:"key",type:"xs:anyAtomicType",occurrence:"*",description:'
The search sequence.
'}],returns:{type:"node()*",description:'The set of domain nodes for which the following XQuery expression returns true:
 $keys = $node/keyExpr 
where keyExpr is the expression specified in the keyspec of the index (remember that for general indexes, there can be only one keyspec).'},errors:['err:XPTY0004 if the search sequence contains a search key whose type does not match the sequence type specified in the keyspec of the index.','zerr:ZDDY0021 if the index with name $name is not declared.','zerr:ZDDY0023 if the index with name $name does not exist.','zerr:ZDDY0029 if the index is not general.']},{isDocumented:!0,arity:3,name:"probe-index-point-value-skip",qname:"idml:probe-index-point-value-skip",signature:"($name as xs:QName, $skip as xs:integer, $key_i as xs:anyAtomicType?) as node()* external",description:' This is an extension of the probe-index-point-value() function\n in that it allows index items to be skipped.\n',summary:"

This is an extension of the probe-index-point-value() function\n in that it allows index items to be skipped.

",annotation_str:" %an:variadic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"variadic",value:""}],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the index to probe.
'},{name:"skip",type:"xs:integer",occurrence:null,description:'
The number of index items to skip.
'},{name:"key_i",type:"xs:anyAtomicType",occurrence:"?",description:'
The search keys used to probe the index with. The i-th search key corresponds to the i-th key expression in the index declaration.
'}],returns:{type:"node()*",description:"The set of domain nodes that satisfy the search condition."},errors:['zerr:ZDDY0021 if the index is not declared.','zerr:ZDDY0023 if the index does not exist.','zerr:ZDDY0025 if the number of search keys passed as arguments is not the same as the number of keys declared for the index.','err:XPTY0004 if a non-empty seach key is given whose type does not match the sequence type specified in the corresponding keyspec.']},{isDocumented:!0,arity:2,name:"probe-index-point-value",qname:"idml:probe-index-point-value",signature:"($name as xs:QName, $key_i as xs:anyAtomicType?) as node()* external",description:' Gets the domain nodes from an index associated by value equality with a\n given search tuple.\n

\n The search tuple consists of a number of search keys where each\n search key is either an atomic item or the empty sequence. The number of\n search keys given must be equal to the number of keys declared for the\n index. Since the number of keys differs from one index to another, this\n function is variadic.\n',summary:"

Gets the domain nodes from an index associated by value equality with a\n given search tuple .

",annotation_str:" %an:variadic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"variadic",value:""}],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The of the index to probe.
'},{name:"key_i",type:"xs:anyAtomicType",occurrence:"?",description:'
A search key used to probe the index with. The i-th search key corresponds to the i-th key expression in the index declaration.
'}],returns:{type:"node()*",description:'The set of domain nodes for which the following XQuery expression returns true:
 $key1 eq $node/keyExpr1 and ... and $keyM eq $node/keyExprM 
where keyExpri is the expression specified in the i-th keyspec of the index.'},errors:['zerr:ZDDY0021 if the index is not declared.','zerr:ZDDY0023 if the index does not exist.','zerr:ZDDY0025 if the number of search keys passed as arguments is not the same as the number of keys declared for the index.','err:XPTY0004 if a non-empty seach key is given whose type does not match the sequence type specified in the corresponding keyspec.']},{isDocumented:!0,arity:7,name:"probe-index-range-general",qname:"idml:probe-index-range-general",signature:"($name as xs:QName, $lowerBound as xs:anyAtomicType*, $upperBound as xs:anyAtomicType*, $haveLowerBound as xs:boolean, $haveUpperBound as xs:boolean, $lowerBoundIncluded as xs:boolean, $upperBoundIncluded as xs:boolean) as node()* external",description:' Gets the domain nodes associated by general order-comparison (operators\n <=, <, >=,\n >) with one or two search sequences.\n

\n Each search sequence consists of an arbitrary number of\n search keys where each search key is an atomic item.\n This method is supported by general range indexes only.\n Its result is either an error or the set of domain nodes for which the\n following XQuery expression returns true:\n

\n    if ( $haveLowerBound and $haveUpperBound ) then\n      $lowerBoundKeys lop $node/keyExpr and $node/keyExpr uop $upperBoundKeys\n    else if ( $haveLowerBound ) then\n      $lowerBoundKeys lop $node/keyExpr\n    else if ( $haveUpperBound ) then\n      $node/keyExpr uop $upperBoundKeys\n    else\n      fn:true()\n  
\n where keyExpr is the expression specified in the keyspec of the\n index, lop is either the <= or the <\n operator depending on whether $lowerBoundsIncluded is true or\n false, and uop is either the <= or the\n < operator depending on whether\n $upperBoundsIncluded is true or false.\n',summary:"

Gets the domain nodes associated by general order-comparison (operators\n <= , < , >= ,\n > ) with one or two search sequences .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The of the index to probe.
'},{name:"lowerBound",type:"xs:anyAtomicType",occurrence:"*",description:'
The lower bound search sequence.
'},{name:"upperBound",type:"xs:anyAtomicType",occurrence:"*",description:'
The upper bound search sequence.
'},{name:"haveLowerBound",type:"xs:boolean",occurrence:null,description:'
Whether a lower bound search sequence exists or not.
'},{name:"haveUpperBound",type:"xs:boolean",occurrence:null,description:'
Whether an upper bound search sequence exists or not.
'},{name:"lowerBoundIncluded",type:"xs:boolean",occurrence:null,description:'
Whether to use the <= or the < operator when comparing a search key from $lowerBound with an index key.
'},{name:"upperBoundIncluded",type:"xs:boolean",occurrence:null,description:'
Whether to use the <= or the < operator when comparing an index key with a search key from $upperBound.
'}],returns:{type:"node()*",description:"The set of domain nodes that satisfy the search condition."},errors:['zerr:ZDDY0021 if the index was not declared.','zerr:ZDDY0023 if the index does not exist.','zerr:ZDDY0030 if the index is not a general range index.','err:XPTY0004 if $haveLowerBound is true and $lowerBoundKeys contains an atomic item whose type does not match the sequence type specified by the index keyspec, or $haveUpperBound is true and $upperBoundKeys contains an atomic item whose type does not match the sequence type specified by the index keyspec.']},{isDocumented:!0,arity:8,name:"probe-index-range-value-skip",qname:"idml:probe-index-range-value-skip",signature:"($name as xs:QName, $skip as xs:integer, $lowerBound-i as xs:anyAtomicType?, $upperBound-i as xs:anyAtomicType?, $haveLowerBound-i as xs:boolean, $haveUpperBound-i as xs:boolean, $lowerBoundIncluded-i as xs:boolean, $upperBoundIncluded-i as xs:boolean) as node()* external",description:' This function is an extension of the probe-index-range-value()\n function that index items to be skipped.\n',summary:"

This function is an extension of the probe-index-range-value() \n function that index items to be skipped.

",annotation_str:" %an:variadic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"variadic",value:""}],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The QName of the index to probe
'},{name:"skip",type:"xs:integer",occurrence:null,description:'
The number of index items to skip.
'},{name:"lowerBound-i",type:"xs:anyAtomicType",occurrence:"?",description:'
The lower bound in a range of key values.
'},{name:"upperBound-i",type:"xs:anyAtomicType",occurrence:"?",description:'
The upper bound in a range of key values.
'},{name:"haveLowerBound-i",type:"xs:boolean",occurrence:null,description:'
If false, then there is no lower bound, or equivalently, the lower bound is -INFINITY. Otherwise, the lower bound is the one given by the $lowerBound-i value.
'},{name:"haveUpperBound-i",type:"xs:boolean",occurrence:null,description:'
If false, then there is no upper bound, or equivalently, the upper bound is +INFINITY. Otherwise, the upper bound is the one given by the $upperBound-i value.
'},{name:"lowerBoundIncluded-i",type:"xs:boolean",occurrence:null,description:'
If false, then the range is open from below, i.e., the lowerBound-i value is not considered part of the range. Otherwise, the range is closed from below, i.e., the $lowerBound-i value is part of the range.
'},{name:"upperBoundIncluded-i",type:"xs:boolean",occurrence:null,description:'
If false, then the range is open from above, i.e., the upperBound-i value is not considered part of the range. Otherwise, the range is closed from above, i.e., the $upperBound-i value is part of the range.
'}],returns:{type:"node()*",description:"The set of domain nodes that satisfy the search condition."},errors:['zerr:ZDDY0021 if the index with name $name is not declared.','zerr:ZDDY0023 if the index with name $name does not exist.','zerr:ZDDY0025 if the number of rangespecs passed as arguments is zero or greater than the number of keys declared for the index.','zerr:ZDDY0026 if the index is not a range index.','err:XPTY0004 if $haveLowerBound-i is true and $lowerBound-i is an atomic item whose type does not match the sequence type specified by the ith keyspec, or $haveUpperBound-i is true and $upperBound-i is an atomic item whose type does not match the sequence type specified by the ith keyspec.','zerr:ZDDY0034 if (a) the index is general (in which case there is only one rangespac), (b) the index is untyped, (c) there is both a lower and an upper bound, and (d) if T1 and T2 are the types of the lower and upper bound, neither T1 is a subtype of T2 nor T2 is a subtype of T1.']},{isDocumented:!0,arity:7,name:"probe-index-range-value",qname:"idml:probe-index-range-value",signature:"($name as xs:QName, $lowerBound-i as xs:anyAtomicType?, $upperBound-i as xs:anyAtomicType?, $haveLowerBound-i as xs:boolean, $haveUpperBound-i as xs:boolean, $lowerBoundIncluded-i as xs:boolean, $upperBoundIncluded-i as xs:boolean) as node()* external",description:' Gets the domain nodes associated by value order-comparison (operators\n le, lt, ge, gt) with a\n given search box.\n

\n The search box is specified as a number M of rangespecs\n where each rangespec consists of six values.\n The number M must be greater than 0 and less than or equal to the\n number N of keyspecs found in the index declaration.\n If M < N, then the "missing" rangespecs are assumed to have\n the following value: [(), (), false, false, false, false].\n As a result, we can assume that M = N.\n Remember that for general indexes, there can be only one IndexKeySpec and,\n as a result for general indexes, M = N = 1.\n Since the number of keys differs from one index to another,\n this function is variadic.\n

\n The ith rangespec corresponds to the ith keyspec, and\n specifies a search condition on the key values that are produced by\n evaluating that keyspec for every domain node.\n Specifically, we define the ith rangespec result as the\n set of domain nodes for which the following XQuery expression returns\n true:\n

\n    if ( $haveLowerBound-i and $haveUpperBound-i ) then\n      $lowerBound-i lop $node/keyExpr-i and $node/keyExpr-i uop $upperBound-i\n    else if ( $haveLowerBound-i ) then\n      $lowerBound-i lop $node/keyExpr-i\n    else if ( $haveUpperBound-i ) then\n      $node/keyExpr-i uop $upperBound-i\n    else\n      fn:true()\n  
\n where keyExpr-i is the expression specified by the ith\n keyspec of the index, lop is either the le or the\n lt operator depending on whether\n $lowerBoundsIncluded-i is true or false, and uop is\n either the le or the lt operator depending on whether\n $upperBoundsIncluded-i is true or false.\n',summary:"

Gets the domain nodes associated by value order-comparison (operators\n le , lt , ge , gt ) with a\n given search box .

",annotation_str:" %an:variadic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"variadic",value:""}],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the index to probe.
'},{name:"lowerBound-i",type:"xs:anyAtomicType",occurrence:"?",description:'
The lower bound in a range of key values.
'},{name:"upperBound-i",type:"xs:anyAtomicType",occurrence:"?",description:'
The upper bound in a range of key values.
'},{name:"haveLowerBound-i",type:"xs:boolean",occurrence:null,description:'
If false, then there is no lower bound, or equivalently, the lower bound is -INFINITY. Otherwise, the lower bound is the one given by the $lowerBound-i value.
'},{name:"haveUpperBound-i",type:"xs:boolean",occurrence:null,description:'
If false, then there is no upper bound, or equivalently, the upper bound is +INFINITY. Otherwise, the upper bound is the one given by the $upperBound-i value.
'},{name:"lowerBoundIncluded-i",type:"xs:boolean",occurrence:null,description:'
If false, then the range is open from below, i.e., the $lowerBound-i value is not considered part of the range. Otherwise, the range is closed from below, i.e., the $lowerBound-i value is part of the range.
'},{name:"upperBoundIncluded-i",type:"xs:boolean",occurrence:null,description:'
If false, then the range is open from above, i.e., the $upperBound-i value is not considered part of the range. Otherwise, the range is closed from above, i.e., the $upperBound-i value is part of the range.
'}],returns:{type:"node()*",description:"The intersection of all the rangespec results."},errors:['zerr:ZDDY0021 if the index is not declared.','zerr:ZDDY0023 if the index does not exist.','zerr:ZDDY0025 if the number of rangespecs passed as arguments is zero or greater than the number of keys declared for the index.','zerr:ZDDY0026 if the index is not a range index.','err:XPTY0004 if $haveLowerBound-i is true and $lowerBound-i is an atomic item whose type does not match the sequence type specified by the ith keyspec, or $haveUpperBound-i is true and $upperBound-i is an atomic item whose type does not match the sequence type specified by the ith keyspec.','zerr:ZDDY0034 if (a) the index is general (in which case there is only one rangespac), (b) the index is untyped, (c) there is both a lower and an upper bound, and (d) if T1 and T2 are the types of the lower and upper bound, neither T1 is a subtype of T2 nor T2 is a subtype of T1.']},{isDocumented:!0,arity:1,name:"refresh-index",qname:"idml:refresh-index",signature:"($name as xs:QName) external",description:" Updates the index with the given name. Note that if the maintenance\n property of the index is automatic, this function does nothing.\n",summary:"

Updates the index with the given name.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the index to refresh.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, when applied, refreshes the contents of the index."},errors:['zerr:ZDDY0021 if the index is not declared.','zerr:ZDDY0023 if the index does not exist.']}],variables:[]},"http://www.28msec.com/modules/full-text":{ns:"http://www.28msec.com/modules/full-text",description:' This module provides an API to full-text functions such as tokenization,\n stemming, or stop word detection. The default language is set to english\n for all functions that don\'t take an explicit language parameter.\n

Notes on stemming

\n The stem() functions return the\n stem\n of a word.\n On 28.io,\n the stem of a word itself, however, is not guaranteed to be a word.\n It is best to consider a stem as an opaque byte sequence.\n All that is guaranteed about a stem is that,\n for a given word,\n the stem of that word will always be the same byte sequence.\n Hence,\n you sould never compare the result of one of the stem()\n functions against a non-stemmed string,\n for example:\n
\n  if ( ft:stem( "apples" ) eq "apple" )             ** WRONG **\n 
\n Instead do:\n
\n  if ( ft:stem( "apples" ) eq ft:stem( "apple" ) )  ** CORRECT **\n 
\n

Notes on the thesaurus

\n 28msec uses the\n WordNet lexical database version 3.0,\n In WordNet, the number of "levels" that two phrases are apart\n are how many hierarchical meanings apart they are.\n For example,\n "canary" is 5 levels away from "vertebrate"\n (carary > finch > oscine > passerine > bird > vertebrate).\n

\n When using the WordNet implementation,\n 28msec supports all of the relationships (and their abbreviations)\n specified by\n ISO 2788\n and\n ANSI/NISO Z39.19-2005\n with the exceptions of "HN" (history note)\n and "X SN" (see scope note for).\n These relationships are:\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
Rel.MeaningWordNet Rel.
BTbroader termhypernym
BTGbroader term generichypernym
BTIbroader term instanceinstance hypernym
BTPbroader term partitivepart meronym
NTnarrower termhyponym
NTGnarrower term generichyponym
NTInarrower term instanceinstance hyponym
NTPnarrower term partitivepart holonym
RTrelated termalso see
SNscope noten/a
TTtop termhypernym
UFnon-preferred termn/a
USEpreferred termn/a
\n Note that you can specify relationships\n either by their abbreviation\n or their meaning.\n Relationships are case-insensitive.\n In addition to the\n ISO 2788\n and\n ANSI/NISO Z39.19-2005\n relationships,\n 28msec also supports all of the relationships offered by WordNet.\n These relationships are:\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
RelationshipMeaning
also see\n A word that is related to another,\n e.g., for "varnished" (furniture)\n one should also see "finished."\n
antonym\n A word opposite in meaning to another,\n e.g., "light" is an antonym for "heavy."\n
attribute\n A noun for which adjectives express values,\n e.g., "weight" is an attribute\n for which the adjectives "light" and "heavy"\n express values.\n
cause\n A verb that causes another,\n e.g., "show" is a cause of "see."\n
derivationally related form\n A word that is derived from a root word,\n e.g., "metric" is a derivationally related form of "meter."\n
derived from adjective\n An adverb that is derived from an adjective,\n e.g., "correctly" is derived from the adjective "correct."\n
entailment\n A verb that presupposes another,\n e.g., "snoring" entails "sleeping."\n
hypernym\n A word with a broad meaning that more specific words fall under,\n e.g., "meal" is a hypernym of "breakfast."\n
hyponym\n A word of more specific meaning than a general term applicable to it,\n e.g., "breakfast" is a hyponym of "meal."\n
instance hypernym\n A word that denotes a category of some specific instance,\n e.g., "author" is an instance hypernym of "Asimov."\n
instance hyponym\n A term that donotes a specific instance of some general category,\n e.g., "Asimov" is an instance hyponym of "author."\n
member holonym\n A word that denotes a collection of individuals,\n e.g., "faculty" is a member holonym of "professor."\n
member meronym\n A word that denotes a member of a larger group,\n e.g., a "person" is a member meronym of a "crowd."\n
part holonym\n A word that denotes a larger whole comprised of some part,\n e.g., "car" is a part holonym of "engine."\n
part meronym\n A word that denotes a part of a larger whole,\n e.g., an "engine" is part meronym of a "car."\n
participle of verb\n An adjective that is the participle of some verb,\n e.g., "breaking" is the participle of the verb "break."\n
pertainym\n An adjective that classifies its noun,\n e.g., "musical" is a pertainym in "musical instrument."\n
similar to\n Similar, though not necessarily interchangeable, adjectives.\n For example, "shiny" is similar to "bright",\n but they have subtle differences.\n
substance holonym\n A word that denotes a larger whole containing some constituent\n substance, e.g., "bread" is a substance holonym of "flour."\n
substance meronym\n A word that denotes a constituant substance of some larger whole,\n e.g., "flour" is a substance meronym of "bread."\n
verb group\n A verb that is a member of a group of similar verbs,\n e.g., "live" is in the verb group\n of "dwell", "live", "inhabit", etc.\n
\n',sees:[],authors:['Paul J. Lucas'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://www.28msec.com/modules/full-text",prefix:"ft"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"},{uri:"http://zorba.io/modules/full-text",prefix:"zft"}],functions:[{isDocumented:!0,arity:1,name:"is-stem-lang-supported",qname:"ft:is-stem-lang-supported",signature:"($lang as language) as boolean",description:" Checks whether the given language is supported for stemming.\n",summary:"

Checks whether the given language is supported for stemming.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"lang",type:"language",occurrence:null,description:'
The language to check.
'}],returns:{type:"boolean",description:'true only if the language is supported.'},errors:[]},{isDocumented:!0,arity:1,name:"is-stop-word-lang-supported",qname:"ft:is-stop-word-lang-supported",signature:"($lang as language) as boolean",description:" Checks whether the given language\n is supported for stop words.\n",summary:"

Checks whether the given language\n is supported for stop words.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"lang",type:"language",occurrence:null,description:'
The language to check.
'}],returns:{type:"boolean",description:'true only if the language is supported.'},errors:[]},{isDocumented:!0,arity:1,name:"is-stop-word",qname:"ft:is-stop-word",signature:"($word as string) as boolean",description:" Checks whether the given word is a stop-word.\n",summary:"

Checks whether the given word is a stop-word.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"word",type:"string",occurrence:null,description:'
The word to check. The word\'s language is assumed to be the one returned by ft:current-lang().
'}],returns:{type:"boolean",description:'true only if $word is a stop-word.'},errors:['err:FTST0009 if ft:current-lang() is not supported.']},{isDocumented:!0,arity:2,name:"is-stop-word",qname:"ft:is-stop-word",signature:"($word as string, $lang as language) as boolean",description:" Checks whether the given word is a stop-word.\n",summary:"

Checks whether the given word is a stop-word.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"word",type:"string",occurrence:null,description:'
The word to check.
'},{name:"lang",type:"language",occurrence:null,description:'
The language of $word.
'}],returns:{type:"boolean",description:'true only if $word is a stop-word.'},errors:['err:FTST0009 if $lang is not supported.']},{isDocumented:!0,arity:1,name:"is-thesaurus-lang-supported",qname:"ft:is-thesaurus-lang-supported",signature:"($lang as language) as boolean",description:" Checks whether the given language\n is supported for look-up using the Wordnet thesaurus.\n",summary:"

Checks whether the given language\n is supported for look-up using the Wordnet thesaurus.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"lang",type:"language",occurrence:null,description:'
The language to check.
'}],returns:{type:"boolean",description:'true only if the language is supported.'},errors:[]},{isDocumented:!0,arity:1,name:"is-tokenizer-lang-supported",qname:"ft:is-tokenizer-lang-supported",signature:"($lang as language) as boolean",description:" Checks whether the given language\n is supported for tokenization.\n",summary:"

Checks whether the given language\n is supported for tokenization.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"lang",type:"language",occurrence:null,description:'
The language to check.
'}],returns:{type:"boolean",description:'true only if the language is supported.'},errors:[]},{isDocumented:!0,arity:1,name:"stem",qname:"ft:stem",signature:"($word as string) as string",description:" Stems the given word.\n",summary:"

Stems the given word.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"word",type:"string",occurrence:null,description:'
The word to stem. The word\'s language is assumed to be the one returned by ft:current-lang().
'}],returns:{type:"string",description:'the stem of $word.'},errors:['err:FTST0009 if ft:current-lang() is not supported.']},{isDocumented:!0,arity:2,name:"stem",qname:"ft:stem",signature:"($word as string, $lang as language) as string",description:" Stems the given word.\n",summary:"

Stems the given word.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"word",type:"string",occurrence:null,description:'
The word to stem.
'},{name:"lang",type:"language",occurrence:null,description:'
The language of $word.
'}],returns:{type:"string",description:'the stem of $word.'},errors:['err:FTST0009 if $lang is not supported.']},{isDocumented:!0,arity:1,name:"strip-diacritics",qname:"ft:strip-diacritics",signature:"($string as string) as string",description:" Strips all diacritical marks from all characters.\n",summary:"

Strips all diacritical marks from all characters.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"string",type:"string",occurrence:null,description:'
The string to strip diacritical marks from.
'}],returns:{type:"string",description:'$string with diacritical marks stripped.'},errors:[]},{isDocumented:!0,arity:1,name:"thesaurus-lookup",qname:"ft:thesaurus-lookup",signature:"($phrase as string) as string*",description:" Looks-up the given phrase in the Wordnet thesaurus.\n",summary:"

Looks-up the given phrase in the Wordnet thesaurus.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"phrase",type:"string",occurrence:null,description:'
The phrase to look up.
'}],returns:{type:"string*",description:'the related phrases if $phrase is found in the thesaurus or the empty sequence if not.'},errors:['err:FTST0009 if ft:current-lang() is not supported.','zerr:ZXQP8401 if the thesaurus data file\'s version is not supported by the currently running version of Zorba.','zerr:ZXQP8402 if the thesaurus data file\'s endianness does not match that of the CPU on which Zorba is currently running.','zerr:ZXQP8403 if there was an error reading the thesaurus data.']},{isDocumented:!0,arity:2,name:"thesaurus-lookup",qname:"ft:thesaurus-lookup",signature:"($phrase as string, $relationship as string) as string*",description:" Looks-up the given phrase in a thesaurus.\n",summary:"

Looks-up the given phrase in a thesaurus.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"phrase",type:"string",occurrence:null,description:'
The phrase to look up.
'},{name:"relationship",type:"string",occurrence:null,description:'
The relationship the results are to have to $phrase.
'}],returns:{type:"string*",description:'the related phrases if $phrase is found in the thesaurus or the empty sequence if not.'},errors:['err:FTST0018 if $uri refers to a thesaurus that is not found in the statically known thesauri.','err:FTST0009 if $lang is not supported.','zerr:ZOSE0001 if the thesaurus data file could not be found.','zerr:ZOSE0002 if the thesaurus data file is not a plain file.','zerr:ZXQP8401 if the thesaurus data file\'s version is not supported by the currently running version of Zorba.','zerr:ZXQP8402 if the thesaurus data file\'s endianness does not match that of the CPU on which Zorba is currently running.','zerr:ZXQP8403 if there was an error reading the thesaurus data file.']},{isDocumented:!0,arity:4,name:"thesaurus-lookup",qname:"ft:thesaurus-lookup",signature:"($phrase as string, $relationship as string, $level-least as integer, $level-most as integer) as string*",description:" Looks-up the given phrase in a thesaurus.\n",summary:"

Looks-up the given phrase in a thesaurus.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"phrase",type:"string",occurrence:null,description:'
The phrase to look up.
'},{name:"relationship",type:"string",occurrence:null,description:'
The relationship the results are to have to $phrase.
'},{name:"level-least",type:"integer",occurrence:null,description:'
The minimum number of levels within the thesaurus to be traversed.
'},{name:"level-most",type:"integer",occurrence:null,description:'
The maximum number of levels within the thesaurus to be traversed.
'}],returns:{type:"string*",description:'the related phrases if $phrase is found in the thesaurus or the empty sequence if not.'},errors:['err:FOCA0003 if either $level-least or $level-most is either negative or too large.','err:FTST0018 if $uri refers to a thesaurus that is not found in the statically known thesauri.','err:FTST0009 if $lang is not supported.','zerr:ZOSE0001 if the thesaurus data file could not be found.','zerr:ZOSE0002 if the thesaurus data file is not a plain file.','zerr:ZXQP8401 if the thesaurus data file\'s version is not supported by the currently running version of Zorba.','zerr:ZXQP8402 if the thesaurus data file\'s endianness does not match that of the CPU on which Zorba is currently running.','zerr:ZXQP8403 if there was an error reading the thesaurus data file.']},{isDocumented:!0,arity:1,name:"tokenize",qname:"ft:tokenize",signature:"($string as string) as string*",description:" Tokenizes the given string.\n",summary:"

Tokenizes the given string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"string",type:"string",occurrence:null,description:'
The string to tokenize. The string\'s language is assumed to be the one returned by ft:current-lang().
'}],returns:{type:"string*",description:"a (possibly empty) sequence of tokens."},errors:['err:FTST0009 if ft:current-lang() is not supported.']},{isDocumented:!0,arity:2,name:"tokenize",qname:"ft:tokenize",signature:"($string as string, $lang as language) as string*",description:" Tokenizes the given string.\n",summary:"

Tokenizes the given string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"string",type:"string",occurrence:null,description:'
The string to tokenize.
'},{name:"lang",type:"language",occurrence:null,description:'
The language of $string.
'}],returns:{type:"string*",description:"a (possibly empty) sequence of tokens."},errors:['err:FTST0009 if $lang is not supported.']}],variables:[{name:"ft:lang-da",type:"language",description:" Predeclared constant for the Danish language.\n"},{name:"ft:lang-de",type:"language",description:" Predeclared constant for the German language.\n"},{name:"ft:lang-en",type:"language",description:" Predeclared constant for the English language.\n"},{name:"ft:lang-es",type:"language",description:" Predeclared constant for the Spanish language.\n"},{name:"ft:lang-fi",type:"language",description:" Predeclared constant for the Finnish language.\n"},{name:"ft:lang-fr",type:"language",description:" Predeclared constant for the French language.\n"},{name:"ft:lang-hu",type:"language",description:" Predeclared constant for the Hungarian language.\n"},{name:"ft:lang-it",type:"language",description:" Predeclared constant for the Italian language.\n"},{name:"ft:lang-nl",type:"language",description:" Predeclared constant for the Dutch language.\n"},{name:"ft:lang-no",type:"language",description:" Predeclared constant for the Norwegian language.\n"},{name:"ft:lang-pt",type:"language",description:" Predeclared constant for the Portuguese language.\n"},{name:"ft:lang-ro",type:"language",description:" Predeclared constant for the Romanian language.\n"},{name:"ft:lang-ru",type:"language",description:" Predeclared constant for the Russian language.\n"},{name:"ft:lang-sv",type:"language",description:" Predeclared constant for the Swedish language.\n"},{name:"ft:lang-tr",type:"language",description:" Predeclared constant for the Turkish language.\n"}]},"http://xbrl.io/modules/bizql/report-schemas":{ns:"http://xbrl.io/modules/bizql/report-schemas",description:'

This module provides functions for storing, retrieving, and modifying\n report schemas. Report schemas can be used in BizQL queries. They can be\n instantiated generating a business report.

\n

Report schemas are nothing else than a user-defined component. However,\n one of their hypercubes (the default hypercube), as well as two of their\n networks (presentation, concept-map) are special. A report schema is identified\n with an RID (Report schema ID).

\n

With this module, you can retrieve facts from an archive according to a report\n schema. You can retrieve them as a (2D) fact table, or populate the presentation\n network of the report schema with them. The concept map network will be used\n by default to map the report schema concepts to reported concepts.

\n

Report schemas are stored in the collection reportschemas in\n the project\'s MongoDB database.

\n

A report schema needs to be a syntactically valid JSound document.

\n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"",prefix:"an"},{uri:"http://xbrl.io/modules/bizql/hypercubes",prefix:"hypercubes"},{uri:"http://xbrl.io/modules/bizql/networks",prefix:"networks"},{uri:"http://xbrl.io/modules/bizql/report-schemas",prefix:"report-schemas"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"add",qname:"report-schemas:add",signature:"($report-schema as object()) as empty-sequence()",description:'

Adds the given report schema to the database.

\n',summary:"

Adds the given report schema to the database.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"report-schema",type:"object()",occurrence:null,description:'
the report schema to add.
'}],returns:{type:"empty-sequence()",description:"the empty sequence."},errors:['report-schemas:INVALID-SCHEMA if the given report schema object does not contain a name field','report-schemas:EXISTS if a report schema with the given name already exists']},{isDocumented:!0,arity:1,name:"delete",qname:"report-schemas:delete",signature:"($report-schema-or-id as item()) as empty-sequence()",description:'

Deletes a report schema from the database.

\n',summary:"

Deletes a report schema from the database.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"report-schema-or-id",type:"item()",occurrence:null,description:'
the report schema to delete or its RID.
'}],returns:{type:"empty-sequence()",description:"the empty sequence."},errors:['report-schemas:DOES-NOT-EXIST if no report schema with the given RID exists.']},{isDocumented:!0,arity:2,name:"fact-table",qname:"report-schemas:fact-table",signature:"($schema as item(), $archives as item()*) as array()",description:'

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema, and populates them with the default dimension values\n when missing.

\n',summary:"

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema, and populates them with the default dimension values\n when missing.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"schema",type:"item()",occurrence:null,description:'
a schema or its RID,
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs.
'}],returns:{type:"array()",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:3,name:"fact-table",qname:"report-schemas:fact-table",signature:"($schema as item(), $archives as item()*, $options as object()?) as array()",description:'

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema, and populates them with the default dimension values\n when missing.

\n',summary:"

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema, and populates them with the default dimension values\n when missing.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"schema",type:"item()",occurrence:null,description:'
a schema or its RID,
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $report-schemas:ALL_ARCHIVES for no filtering.
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"array()",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:2,name:"facts",qname:"report-schemas:facts",signature:"($schema as item(), $archives as item()*) as object()*",description:'

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema, and populates them with the default dimension values\n when missing.

\n',summary:"

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema, and populates them with the default dimension values\n when missing.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"schema",type:"item()",occurrence:null,description:'
a report schema or its RID,
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $report-schemas:ALL_ARCHIVES for no filtering.
'}],returns:{type:"object()*",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:3,name:"facts",qname:"report-schemas:facts",signature:"($schema as item(), $archives as item()*, $options as object()?) as object()*",description:'

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema, and populates them with the default dimension values\n when missing.

\n',summary:"

Retrieves all facts from the supplied archives, that are relevant to the\n supplied schema, and populates them with the default dimension values\n when missing.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"schema",type:"item()",occurrence:null,description:'
a report schema or its RID,
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $report-schemas:ALL_ARCHIVES for no filtering.
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"object()*",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:2,name:"populate-with-facts",qname:"report-schemas:populate-with-facts",signature:"($schema as item(), $archives as item()*) as object()*",description:'

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied schema. Default dimension values are added to the facts\n when missing.

\n',summary:"

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied schema.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"schema",type:"item()",occurrence:null,description:'
.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $report-schemas:ALL_ARCHIVES for no filtering.
'}],returns:{type:"object()*",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:3,name:"populate-with-facts",qname:"report-schemas:populate-with-facts",signature:"($schema as item(), $archives as item()*, $options as object()?) as object()*",description:'

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied schema. Default dimension values are added to the facts\n when missing.

\n',summary:"

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied schema.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"schema",type:"item()",occurrence:null,description:'
.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $report-schemas:ALL_ARCHIVES for no filtering.
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"object()*",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:0,name:"report-schemas",qname:"report-schemas:report-schemas",signature:"() as object()*",description:'

Retrieves all report schemas.

\n',summary:"

Retrieves all report schemas.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()*",description:"all report schemas."},errors:[]},{isDocumented:!0,arity:1,name:"report-schemas",qname:"report-schemas:report-schemas",signature:"($report-schemas-or-ids as item()*) as object()*",description:'

Return the report schemas with the given names (RIDs).

\n',summary:"

Return the report schemas with the given names (RIDs).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"report-schemas-or-ids",type:"item()",occurrence:"*",description:'
the ids of the report schemas (RIDs) or the report schemas themselves.
'}],returns:{type:"object()*",description:"the report schemas with the given RIDs or the empty sequence if no report schema was found or the input is an empty sequence."},errors:[]},{isDocumented:!0,arity:1,name:"rid",qname:"report-schemas:rid",signature:"($report-schema-or-id as item()) as atomic",description:'

Converts the input to a normalized report schema identifier (RID). The input\n can be either a pure RID, or a report schema object which contains an RID.

\n',summary:"

Converts the input to a normalized report schema identifier (RID).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"report-schema-or-id",type:"item()",occurrence:null,description:'
a report schema identifier (RID)) or a report schema object.
'}],returns:{type:"atomic",description:"the normalized RID."},errors:['report-schemas:INVALID_PARAMETER if the RID or report schema is not valid']},{isDocumented:!0,arity:1,name:"update",qname:"report-schemas:update",signature:"($report-schema as object()) as empty-sequence()",description:'

Updates a report schema.

\n

Replaces a report schema in the database with the given schema.\n The schema to be replaced is identified by the value of the _id\n field of the given schema (RID).

\n',summary:"

Updates a report schema.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"report-schema",type:"object()",occurrence:null,description:'
the new report schema
'}],returns:{type:"empty-sequence()",description:"the empty sequence"},errors:['report-schemas:DOES-NOT-EXIST if a report schema with the given name does not exist.']}],variables:[{name:"report-schemas:col",type:"string",description:" Name of the collection the report schemas are stored in.\n"},{name:"report-schemas:ALL_ARCHIVES",type:"boolean",description:" Joker for all archives.\n"}]},"http://zorba.io/modules/store/static/integrity-constraints/ddl":{ns:"http://zorba.io/modules/store/static/integrity-constraints/ddl",description:' This module defines a set of functions to manage integrity constraints\n that are declared in the prolog of a module.\n For example, it provides functions to activate or deactivate integrity\n constraints.\n

\n This module is part of\n Zorba\'s XQuery Data Definition Facility.\n All the integrity constraints managed by this module have to be pre-declared\n in the prolog of a module.\n Please refer to the\n general documentation\n for more information and examples.\n',sees:['Data Lifecycle','XQuery Data Definition Facility','http://zorba.io/modules/store/static/collections/dml','http://zorba.io/modules/store/static/collections/ddl','http://zorba.io/modules/store/static/indexes/ddl','http://zorba.io/modules/store/static/indexes/dml','http://zorba.io/modules/store/static/integrity-constraints/dml','http://zorba.io/errors'],authors:['Nicolae Brinza, Matthias Brantner, David Graf, Till Westmann, Markos Zaharioudakis'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/store/static/integrity-constraints/ddl",prefix:"icddl"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:1,name:"activate",qname:"icddl:activate",signature:"($name as xs:QName) external",description:" Activates an integrity constraint in the dynamic context.\n",summary:"

Activates an integrity constraint in the dynamic context.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the integrity constraint to activate.
'}],returns:{type:null,description:'An empty XDM instance and a pending update list that consists of a upd:activateIntegrityConstraint($name) update primitive.'},errors:['zerr:ZDDY0031 if the integrity constraint does not exist in the static context.']},{isDocumented:!0,arity:0,name:"activated-integrity-constraints",qname:"icddl:activated-integrity-constraints",signature:"() as xs:QName* external",description:" Gets the integrity constraints that are activated, if any.\n",summary:"

Gets the integrity constraints that are activated, if any.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence of QNames, one for each activated integrity constraint, or an empty sequence if none."},errors:[]},{isDocumented:!0,arity:1,name:"deactivate",qname:"icddl:deactivate",signature:"($name as xs:QName) external",description:" Deactivates the integrity constraint.\n",summary:"

Deactivates the integrity constraint.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the integrity constraint to deactivate.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, deactivates the integrity constraint."},errors:['zerr:ZDDY0032 if the integrity constraint was not declared in the the static context.','zerr:ZDDY0032 if the integrity constraints is not activated.']},{isDocumented:!0,arity:0,name:"declared-integrity-constraints",qname:"icddl:declared-integrity-constraints",signature:"() as xs:QName* external",description:" Gets the sequence of QNames representing the integrity constraints that have\n been declared in the prolog of the static context.\n",summary:"

Gets the sequence of QNames representing the integrity constraints that have\n been declared in the prolog of the static context.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:QName*",description:"A sequence of QNames, one for each created integrity constraints, or an emtpy sequence if none."},errors:[]},{isDocumented:!0,arity:1,name:"is-activated-integrity-constraint",qname:"icddl:is-activated-integrity-constraint",signature:"($name as xs:QName) as xs:boolean external",description:" Gets whether an integrity constraints is activated.\n",summary:"

Gets whether an integrity constraints is activated.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the constraint to check.
'}],returns:{type:"xs:boolean",description:"true if the integrity constraint is activated; false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"is-declared-integrity-constraint",qname:"icddl:is-declared-integrity-constraint",signature:"($name as xs:QName) as xs:boolean external",description:" Gets whether an integrity constraint is declared in the prolog of the static\n context.\n",summary:"

Gets whether an integrity constraint is declared in the prolog of the static\n context.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the constraint to check.
'}],returns:{type:"xs:boolean",description:"true if the constraint is declared; false otherwise."},errors:[]}],variables:[]},"http://www.functx.com":{ns:"http://www.functx.com",description:" --------------------------------\n The FunctX XQuery Function Library\n --------------------------------\n Copyright (C) 2007 Datypic\n This library is free software; you can redistribute it and/or\n modify it under the terms of the GNU Lesser General Public\n License as published by the Free Software Foundation; either\n version 2.1 of the License.\n This library is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n Lesser General Public License for more details.\n You should have received a copy of the GNU Lesser General Public\n License along with this library; if not, write to the Free Software\n Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n For more information on the FunctX XQuery library, contact contrib@functx.com.\n",sees:['http://www.xqueryfunctions.com'],authors:[],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.functx.com",prefix:"functx"}],functions:[{isDocumented:!0,arity:3,name:"add-attributes",qname:"functx:add-attributes",signature:"($elements as element(*)*, $attrNames as xs:QName*, $attrValues as xs:anyAtomicType*) as element(*)?",description:" Adds attributes to XML elements\n",summary:"

Adds attributes to XML elements\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"elements",type:"element(*)",occurrence:"*",description:'
the element(s) to which you wish to add the attribute
'},{name:"attrNames",type:"xs:QName",occurrence:"*",description:'
the name(s) of the attribute(s) to add
'},{name:"attrValues",type:"xs:anyAtomicType",occurrence:"*",description:'
the value(s) of the attribute(s) to add
'}],returns:{type:"element(*)?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"add-months",qname:"functx:add-months",signature:"($date as xs:anyAtomicType?, $months as xs:integer) as xs:date?",description:" Adds months to a date\n",summary:"

Adds months to a date\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'},{name:"months",type:"xs:integer",occurrence:null,description:'
the number of months to add
'}],returns:{type:"xs:date?",description:""},errors:[]},{isDocumented:!0,arity:3,name:"add-or-update-attributes",qname:"functx:add-or-update-attributes",signature:"($elements as element(*)*, $attrNames as xs:QName*, $attrValues as xs:anyAtomicType*) as element(*)?",description:" Adds attributes to XML elements\n",summary:"

Adds attributes to XML elements\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"elements",type:"element(*)",occurrence:"*",description:'
the element(s) to which you wish to add the attribute
'},{name:"attrNames",type:"xs:QName",occurrence:"*",description:'
the name(s) of the attribute(s) to add
'},{name:"attrValues",type:"xs:anyAtomicType",occurrence:"*",description:'
the value(s) of the attribute(s) to add
'}],returns:{type:"element(*)?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"all-whitespace",qname:"functx:all-whitespace",signature:"($arg as xs:string?) as xs:boolean",description:" Whether a value is all whitespace or a zero-length string\n",summary:"

Whether a value is all whitespace or a zero-length string\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string (or node) to test
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"are-distinct-values",qname:"functx:are-distinct-values",signature:"($seq as xs:anyAtomicType*) as xs:boolean",description:" Whether all the values in a sequence are distinct\n",summary:"

Whether all the values in a sequence are distinct\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequence of values
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"atomic-type",qname:"functx:atomic-type",signature:"($values as xs:anyAtomicType*) as xs:string*",description:" The built-in type of an atomic value\n",summary:"

The built-in type of an atomic value\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"values",type:"xs:anyAtomicType",occurrence:"*",description:'
the value(s) whose type you want to determine
'}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"avg-empty-is-zero",qname:"functx:avg-empty-is-zero",signature:"($values as xs:anyAtomicType*, $allNodes as node()*) as xs:double",description:' The average, counting "empty" values as zero\n',summary:'

The average, counting "empty" values as zero\n

',annotation_str:"",annotations:[],updating:!1,parameters:[{name:"values",type:"xs:anyAtomicType",occurrence:"*",description:'
the values to be averaged
'},{name:"allNodes",type:"node()",occurrence:"*",description:'
the sequence of all nodes to find the average over
'}],returns:{type:"xs:double",description:""},errors:[]},{isDocumented:!0,arity:3,name:"between-exclusive",qname:"functx:between-exclusive",signature:"($value as xs:anyAtomicType?, $minValue as xs:anyAtomicType, $maxValue as xs:anyAtomicType) as xs:boolean",description:" Whether a value is between two provided values\n",summary:"

Whether a value is between two provided values\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the value to be tested
'},{name:"minValue",type:"xs:anyAtomicType",occurrence:null,description:'
the minimum value
'},{name:"maxValue",type:"xs:anyAtomicType",occurrence:null,description:'
the maximum value
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:3,name:"between-inclusive",qname:"functx:between-inclusive",signature:"($value as xs:anyAtomicType?, $minValue as xs:anyAtomicType, $maxValue as xs:anyAtomicType) as xs:boolean",description:" Whether a value is between two provided values, or equal to one of them\n",summary:"

Whether a value is between two provided values, or equal to one of them\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the value to be tested
'},{name:"minValue",type:"xs:anyAtomicType",occurrence:null,description:'
the minimum value
'},{name:"maxValue",type:"xs:anyAtomicType",occurrence:null,description:'
the maximum value
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"camel-case-to-words",qname:"functx:camel-case-to-words",signature:"($arg as xs:string?, $delim as xs:string) as xs:string",description:" Turns a camelCase string into space-separated words\n",summary:"

Turns a camelCase string into space-separated words\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to modify
'},{name:"delim",type:"xs:string",occurrence:null,description:'
the delimiter for the words (e.g. a space)
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"capitalize-first",qname:"functx:capitalize-first",signature:"($arg as xs:string?) as xs:string?",description:" Capitalizes the first character of a string\n",summary:"

Capitalizes the first character of a string\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the word or phrase to capitalize
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:3,name:"change-element-names-deep",qname:"functx:change-element-names-deep",signature:"($nodes as node()*, $oldNames as xs:QName*, $newNames as xs:QName*) as node()*",description:" Changes the names of elements in an XML fragment\n",summary:"

Changes the names of elements in an XML fragment\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the element(s) to change
'},{name:"oldNames",type:"xs:QName",occurrence:"*",description:'
the sequence of names to change from
'},{name:"newNames",type:"xs:QName",occurrence:"*",description:'
the sequence of names to change to
'}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"change-element-ns-deep",qname:"functx:change-element-ns-deep",signature:"($nodes as node()*, $newns as xs:string, $prefix as xs:string) as node()*",description:" Changes the namespace of XML elements and its descendants\n",summary:"

Changes the namespace of XML elements and its descendants\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the nodes to change
'},{name:"newns",type:"xs:string",occurrence:null,description:'
the new namespace
'},{name:"prefix",type:"xs:string",occurrence:null,description:'
the prefix to use for the new namespace
'}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"change-element-ns",qname:"functx:change-element-ns",signature:"($elements as element(*)*, $newns as xs:string, $prefix as xs:string) as element(*)?",description:" Changes the namespace of XML elements\n",summary:"

Changes the namespace of XML elements\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"elements",type:"element(*)",occurrence:"*",description:'
the elements to change
'},{name:"newns",type:"xs:string",occurrence:null,description:'
the new namespace
'},{name:"prefix",type:"xs:string",occurrence:null,description:'
the prefix to use for the new namespace
'}],returns:{type:"element(*)?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"chars",qname:"functx:chars",signature:"($arg as xs:string?) as xs:string*",description:" Converts a string to a sequence of characters\n",summary:"

Converts a string to a sequence of characters\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to split
'}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"contains-any-of",qname:"functx:contains-any-of",signature:"($arg as xs:string?, $searchStrings as xs:string*) as xs:boolean",description:" Whether a string contains any of a sequence of strings\n",summary:"

Whether a string contains any of a sequence of strings\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to test
'},{name:"searchStrings",type:"xs:string",occurrence:"*",description:'
the strings to look for
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"contains-case-insensitive",qname:"functx:contains-case-insensitive",signature:"($arg as xs:string?, $substring as xs:string) as xs:boolean?",description:" Whether one string contains another, without regard to case\n",summary:"

Whether one string contains another, without regard to case\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to search
'},{name:"substring",type:"xs:string",occurrence:null,description:'
the substring to find
'}],returns:{type:"xs:boolean?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"contains-word",qname:"functx:contains-word",signature:"($arg as xs:string?, $word as xs:string) as xs:boolean",description:" Whether one string contains another, as a separate word\n",summary:"

Whether one string contains another, as a separate word\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to search
'},{name:"word",type:"xs:string",occurrence:null,description:'
the word to find
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"copy-attributes",qname:"functx:copy-attributes",signature:"($copyTo as element(*), $copyFrom as element(*)) as element(*)",description:" Copies attributes from one element to another\n",summary:"

Copies attributes from one element to another\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"copyTo",type:"element(*)",occurrence:null,description:'
the element to copy attributes to
'},{name:"copyFrom",type:"element(*)",occurrence:null,description:'
the element to copy attributes from
'}],returns:{type:"element(*)",description:""},errors:[]},{isDocumented:!0,arity:3,name:"date",qname:"functx:date",signature:"($year as xs:anyAtomicType, $month as xs:anyAtomicType, $day as xs:anyAtomicType) as xs:date",description:" Construct a date from a year, month and day\n",summary:"

Construct a date from a year, month and day\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"year",type:"xs:anyAtomicType",occurrence:null,description:'
the year
'},{name:"month",type:"xs:anyAtomicType",occurrence:null,description:'
the month
'},{name:"day",type:"xs:anyAtomicType",occurrence:null,description:'
the day
'}],returns:{type:"xs:date",description:""},errors:[]},{isDocumented:!0,arity:6,name:"dateTime",qname:"functx:dateTime",signature:"($year as xs:anyAtomicType, $month as xs:anyAtomicType, $day as xs:anyAtomicType, $hour as xs:anyAtomicType, $minute as xs:anyAtomicType, $second as xs:anyAtomicType) as xs:dateTime",description:" Construct a date/time from individual components\n",summary:"

Construct a date/time from individual components\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"year",type:"xs:anyAtomicType",occurrence:null,description:'
the year
'},{name:"month",type:"xs:anyAtomicType",occurrence:null,description:'
the month
'},{name:"day",type:"xs:anyAtomicType",occurrence:null,description:'
the day
'},{name:"hour",type:"xs:anyAtomicType",occurrence:null,description:'
the hour
'},{name:"minute",type:"xs:anyAtomicType",occurrence:null,description:'
the minute
'},{name:"second",type:"xs:anyAtomicType",occurrence:null,description:'
the second
'}],returns:{type:"xs:dateTime",description:""},errors:[]},{isDocumented:!0,arity:1,name:"day-in-year",qname:"functx:day-in-year",signature:"($date as xs:anyAtomicType?) as xs:integer?",description:" The day of the year (a number between 1 and 366)\n",summary:"

The day of the year (a number between 1 and 366)\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"day-of-week-abbrev-en",qname:"functx:day-of-week-abbrev-en",signature:"($date as xs:anyAtomicType?) as xs:string?",description:" The abbreviated day of the week, from a date, in English\n",summary:"

The abbreviated day of the week, from a date, in English\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"day-of-week-name-en",qname:"functx:day-of-week-name-en",signature:"($date as xs:anyAtomicType?) as xs:string?",description:" The name of the day of the week, from a date, in English\n",summary:"

The name of the day of the week, from a date, in English\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"day-of-week",qname:"functx:day-of-week",signature:"($date as xs:anyAtomicType?) as xs:integer?",description:" The day of the week, from a date\n",summary:"

The day of the week, from a date\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:4,name:"dayTimeDuration",qname:"functx:dayTimeDuration",signature:"($days as xs:decimal?, $hours as xs:decimal?, $minutes as xs:decimal?, $seconds as xs:decimal?) as xs:dayTimeDuration",description:" Construct a dayTimeDuration from a number of days, hours, etc.\n",summary:"

Construct a dayTimeDuration from a number of days, hours, etc.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"days",type:"xs:decimal",occurrence:"?",description:'
the number of days
'},{name:"hours",type:"xs:decimal",occurrence:"?",description:'
the number of hours
'},{name:"minutes",type:"xs:decimal",occurrence:"?",description:'
the number of minutes
'},{name:"seconds",type:"xs:decimal",occurrence:"?",description:'
the number of seconds
'}],returns:{type:"xs:dayTimeDuration",description:""},errors:[]},{isDocumented:!0,arity:1,name:"days-in-month",qname:"functx:days-in-month",signature:"($date as xs:anyAtomicType?) as xs:integer?",description:" Number of days in the month\n",summary:"

Number of days in the month\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"depth-of-node",qname:"functx:depth-of-node",signature:"($node as node()?) as xs:integer",description:" The depth (level) of a node in an XML tree\n",summary:"

The depth (level) of a node in an XML tree\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:"?",description:'
the node to check
'}],returns:{type:"xs:integer",description:""},errors:[]},{isDocumented:!0,arity:1,name:"distinct-attribute-names",qname:"functx:distinct-attribute-names",signature:"($nodes as node()*) as xs:string*",description:" The distinct names of all attributes in an XML fragment\n",summary:"

The distinct names of all attributes in an XML fragment\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the root to start from
'}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"distinct-deep",qname:"functx:distinct-deep",signature:"($nodes as node()*) as node()*",description:" The XML nodes with distinct values, taking into account attributes and descendants\n",summary:"

The XML nodes with distinct values, taking into account attributes and descendants\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the sequence of nodes to test
'}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"distinct-element-names",qname:"functx:distinct-element-names",signature:"($nodes as node()*) as xs:string*",description:" The distinct names of all elements in an XML fragment\n",summary:"

The distinct names of all elements in an XML fragment\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the root(s) to start from
'}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"distinct-element-paths",qname:"functx:distinct-element-paths",signature:"($nodes as node()*) as xs:string*",description:" The distinct paths of all descendant elements in an XML fragment\n",summary:"

The distinct paths of all descendant elements in an XML fragment\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the root(s) to start from
'}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"distinct-nodes",qname:"functx:distinct-nodes",signature:"($nodes as node()*) as node()*",description:" The distinct XML nodes in a sequence (by node identity)\n",summary:"

The distinct XML nodes in a sequence (by node identity)\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the node sequence
'}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"duration-from-timezone",qname:"functx:duration-from-timezone",signature:"($timezone as xs:string) as xs:dayTimeDuration",description:' Converts a timezone like "-05:00" or "Z" into xs:dayTimeDuration\n',summary:'

Converts a timezone like "-05:00" or "Z" into xs:dayTimeDuration\n

',annotation_str:"",annotations:[],updating:!1,parameters:[{name:"timezone",type:"xs:string",occurrence:null,description:'
the time zone, in (+|-)HH:MM format
'}],returns:{type:"xs:dayTimeDuration",description:""},errors:[]},{isDocumented:!0,arity:2,name:"dynamic-path",qname:"functx:dynamic-path",signature:"($parent as node(), $path as xs:string) as item()*",description:" Dynamically evaluates a simple XPath path\n",summary:"

Dynamically evaluates a simple XPath path\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"parent",type:"node()",occurrence:null,description:'
the root to start from
'},{name:"path",type:"xs:string",occurrence:null,description:'
the path expression
'}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"escape-for-regex",qname:"functx:escape-for-regex",signature:"($arg as xs:string?) as xs:string",description:" Escapes regex special characters\n",summary:"

Escapes regex special characters\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to escape
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"exclusive-or",qname:"functx:exclusive-or",signature:"($arg1 as xs:boolean?, $arg2 as xs:boolean?) as xs:boolean?",description:" Whether one (and only one) of two boolean values is true\n",summary:"

Whether one (and only one) of two boolean values is true\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:boolean",occurrence:"?",description:'
the first boolean value
'},{name:"arg2",type:"xs:boolean",occurrence:"?",description:'
the second boolean value
'}],returns:{type:"xs:boolean?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"first-day-of-month",qname:"functx:first-day-of-month",signature:"($date as xs:anyAtomicType?) as xs:date?",description:" The first day of the month of a date\n",summary:"

The first day of the month of a date\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:date?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"first-day-of-year",qname:"functx:first-day-of-year",signature:"($date as xs:anyAtomicType?) as xs:date?",description:" The first day of the year of a date\n",summary:"

The first day of the year of a date\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:date?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"first-node",qname:"functx:first-node",signature:"($nodes as node()*) as node()?",description:" The XML node in a sequence that appears first in document order\n",summary:"

The XML node in a sequence that appears first in document order\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the sequence of nodes
'}],returns:{type:"node()?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"follows-not-descendant",qname:"functx:follows-not-descendant",signature:"($a as node()?, $b as node()?) as xs:boolean",description:" Whether an XML node follows another without being its descendant\n",summary:"

Whether an XML node follows another without being its descendant\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"a",type:"node()",occurrence:"?",description:'
the first node
'},{name:"b",type:"node()",occurrence:"?",description:'
the second node
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"format-as-title-en",qname:"functx:format-as-title-en",signature:"($titles as xs:string*) as xs:string*",description:' Moves title words like "the" and "a" to the end of strings\n',summary:'

Moves title words like "the" and "a" to the end of strings\n

',annotation_str:"",annotations:[],updating:!1,parameters:[{name:"titles",type:"xs:string",occurrence:"*",description:'
the titles to format
'}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"fragment-from-uri",qname:"functx:fragment-from-uri",signature:"($uri as xs:string?) as xs:string?",description:" Returns the fragment from a URI\n",summary:"

Returns the fragment from a URI\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:"?",description:'
the URI
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"get-matches-and-non-matches",qname:"functx:get-matches-and-non-matches",signature:"($string as xs:string?, $regex as xs:string) as element(*)*",description:" Splits a string into matching and non-matching regions\n",summary:"

Splits a string into matching and non-matching regions\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"string",type:"xs:string",occurrence:"?",description:'
the string to split
'},{name:"regex",type:"xs:string",occurrence:null,description:'
the pattern
'}],returns:{type:"element(*)*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"get-matches",qname:"functx:get-matches",signature:"($string as xs:string?, $regex as xs:string) as xs:string*",description:" Return the matching regions of a string\n",summary:"

Return the matching regions of a string\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"string",type:"xs:string",occurrence:"?",description:'
the string to split
'},{name:"regex",type:"xs:string",occurrence:null,description:'
the pattern
'}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"has-element-only-content",qname:"functx:has-element-only-content",signature:"($element as element(*)) as xs:boolean",description:" Whether an element has element-only content\n",summary:"

Whether an element has element-only content\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"element",type:"element(*)",occurrence:null,description:'
the XML element to test
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"has-empty-content",qname:"functx:has-empty-content",signature:"($element as element(*)) as xs:boolean",description:" Whether an element has empty content\n",summary:"

Whether an element has empty content\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"element",type:"element(*)",occurrence:null,description:'
the XML element to test
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"has-mixed-content",qname:"functx:has-mixed-content",signature:"($element as element(*)) as xs:boolean",description:" Whether an element has mixed content\n",summary:"

Whether an element has mixed content\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"element",type:"element(*)",occurrence:null,description:'
the XML element to test
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"has-simple-content",qname:"functx:has-simple-content",signature:"($element as element(*)) as xs:boolean",description:" Whether an element has simple content\n",summary:"

Whether an element has simple content\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"element",type:"element(*)",occurrence:null,description:'
the XML element to test
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"id-from-element",qname:"functx:id-from-element",signature:"($element as element(*)?) as xs:string?",description:" Gets the ID of an XML element\n",summary:"

Gets the ID of an XML element\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"element",type:"element(*)",occurrence:"?",description:'
the element
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"id-untyped",qname:"functx:id-untyped",signature:"($node as node()*, $id as xs:anyAtomicType) as element(*)*",description:" Gets XML element(s) that have an attribute with a particular value\n",summary:"

Gets XML element(s) that have an attribute with a particular value\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:"*",description:'
the root node(s) to start from
'},{name:"id",type:"xs:anyAtomicType",occurrence:null,description:'
the "id" to find
'}],returns:{type:"element(*)*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"if-absent",qname:"functx:if-absent",signature:"($arg as item()*, $value as item()*) as item()*",description:" The first argument if it is not empty, otherwise the second argument\n",summary:"

The first argument if it is not empty, otherwise the second argument\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"*",description:'
the item(s) that may be absent
'},{name:"value",type:"item()",occurrence:"*",description:'
the item(s) to use if the item is absent
'}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"if-empty",qname:"functx:if-empty",signature:"($arg as item()?, $value as item()*) as item()*",description:" The first argument if it is not blank, otherwise the second argument\n",summary:"

The first argument if it is not blank, otherwise the second argument\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:"?",description:'
the node that may be empty
'},{name:"value",type:"item()",occurrence:"*",description:'
the item(s) to use if the node is empty
'}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"index-of-deep-equal-node",qname:"functx:index-of-deep-equal-node",signature:"($nodes as node()*, $nodeToFind as node()) as xs:integer*",description:" The position of a node in a sequence, based on contents and attributes\n",summary:"

The position of a node in a sequence, based on contents and attributes\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the node sequence
'},{name:"nodeToFind",type:"node()",occurrence:null,description:'
the node to find in the sequence
'}],returns:{type:"xs:integer*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"index-of-match-first",qname:"functx:index-of-match-first",signature:"($arg as xs:string?, $pattern as xs:string) as xs:integer?",description:" The first position of a matching substring\n",summary:"

The first position of a matching substring\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string
'},{name:"pattern",type:"xs:string",occurrence:null,description:'
the pattern to match
'}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"index-of-node",qname:"functx:index-of-node",signature:"($nodes as node()*, $nodeToFind as node()) as xs:integer*",description:" The position of a node in a sequence, based on node identity\n",summary:"

The position of a node in a sequence, based on node identity\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the node sequence
'},{name:"nodeToFind",type:"node()",occurrence:null,description:'
the node to find in the sequence
'}],returns:{type:"xs:integer*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"index-of-string-first",qname:"functx:index-of-string-first",signature:"($arg as xs:string?, $substring as xs:string) as xs:integer?",description:" The first position of a substring\n",summary:"

The first position of a substring\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string
'},{name:"substring",type:"xs:string",occurrence:null,description:'
the substring to find
'}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"index-of-string-last",qname:"functx:index-of-string-last",signature:"($arg as xs:string?, $substring as xs:string) as xs:integer?",description:" The last position of a substring\n",summary:"

The last position of a substring\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string
'},{name:"substring",type:"xs:string",occurrence:null,description:'
the substring to find
'}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"index-of-string",qname:"functx:index-of-string",signature:"($arg as xs:string?, $substring as xs:string) as xs:integer*",description:" The position(s) of a substring\n",summary:"

The position(s) of a substring\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string
'},{name:"substring",type:"xs:string",occurrence:null,description:'
the substring to find
'}],returns:{type:"xs:integer*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"insert-string",qname:"functx:insert-string",signature:"($originalString as xs:string?, $stringToInsert as xs:string?, $pos as xs:integer) as xs:string",description:" Inserts a string at a specified position\n",summary:"

Inserts a string at a specified position\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"originalString",type:"xs:string",occurrence:"?",description:'
the original string to insert into
'},{name:"stringToInsert",type:"xs:string",occurrence:"?",description:'
the string to insert
'},{name:"pos",type:"xs:integer",occurrence:null,description:'
the position
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"is-a-number",qname:"functx:is-a-number",signature:"($value as xs:anyAtomicType?) as xs:boolean",description:" Whether a value is numeric\n",summary:"

Whether a value is numeric\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the value to test
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"is-absolute-uri",qname:"functx:is-absolute-uri",signature:"($uri as xs:string?) as xs:boolean",description:" Whether a URI is absolute\n",summary:"

Whether a URI is absolute\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:"?",description:'
the URI to test
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"is-ancestor",qname:"functx:is-ancestor",signature:"($node1 as node(), $node2 as node()) as xs:boolean",description:" Whether an XML node is an ancestor of another node\n",summary:"

Whether an XML node is an ancestor of another node\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node1",type:"node()",occurrence:null,description:'
the first node
'},{name:"node2",type:"node()",occurrence:null,description:'
the second node
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"is-descendant",qname:"functx:is-descendant",signature:"($node1 as node(), $node2 as node()) as xs:boolean",description:" Whether an XML node is a descendant of another node\n",summary:"

Whether an XML node is a descendant of another node\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node1",type:"node()",occurrence:null,description:'
the first node
'},{name:"node2",type:"node()",occurrence:null,description:'
the second node
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"is-leap-year",qname:"functx:is-leap-year",signature:"($date as xs:anyAtomicType?) as xs:boolean",description:" Whether a date falls in a leap year\n",summary:"

Whether a date falls in a leap year\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date or year
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"is-node-among-descendants-deep-equal",qname:"functx:is-node-among-descendants-deep-equal",signature:"($node as node()?, $seq as node()*) as xs:boolean",description:" Whether an XML node is among the descendants of a sequence, based on contents and attributes\n",summary:"

Whether an XML node is among the descendants of a sequence, based on contents and attributes\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:"?",description:'
the node to test
'},{name:"seq",type:"node()",occurrence:"*",description:'
the sequence of nodes to search
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"is-node-among-descendants",qname:"functx:is-node-among-descendants",signature:"($node as node()?, $seq as node()*) as xs:boolean",description:" Whether an XML node is among the descendants of a sequence, based on node identity\n",summary:"

Whether an XML node is among the descendants of a sequence, based on node identity\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:"?",description:'
the node to test
'},{name:"seq",type:"node()",occurrence:"*",description:'
the sequence of nodes to search
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"is-node-in-sequence-deep-equal",qname:"functx:is-node-in-sequence-deep-equal",signature:"($node as node()?, $seq as node()*) as xs:boolean",description:" Whether an XML node is in a sequence, based on contents and attributes\n",summary:"

Whether an XML node is in a sequence, based on contents and attributes\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:"?",description:'
the node to test
'},{name:"seq",type:"node()",occurrence:"*",description:'
the sequence of nodes to search
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"is-node-in-sequence",qname:"functx:is-node-in-sequence",signature:"($node as node()?, $seq as node()*) as xs:boolean",description:" Whether an XML node is in a sequence, based on node identity\n",summary:"

Whether an XML node is in a sequence, based on node identity\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:"?",description:'
the node to test
'},{name:"seq",type:"node()",occurrence:"*",description:'
the sequence of nodes to search
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"is-value-in-sequence",qname:"functx:is-value-in-sequence",signature:"($value as xs:anyAtomicType?, $seq as xs:anyAtomicType*) as xs:boolean",description:" Whether an atomic value appears in a sequence\n",summary:"

Whether an atomic value appears in a sequence\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"value",type:"xs:anyAtomicType",occurrence:"?",description:'
the atomic value to test
'},{name:"seq",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequence of values to search
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"last-day-of-month",qname:"functx:last-day-of-month",signature:"($date as xs:anyAtomicType?) as xs:date?",description:" The last day of the month of a date\n",summary:"

The last day of the month of a date\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:date?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"last-day-of-year",qname:"functx:last-day-of-year",signature:"($date as xs:anyAtomicType?) as xs:date?",description:" The last day of the month of a date\n",summary:"

The last day of the month of a date\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:date?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"last-node",qname:"functx:last-node",signature:"($nodes as node()*) as node()?",description:" The XML node in a sequence that is last in document order\n",summary:"

The XML node in a sequence that is last in document order\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the sequence of nodes
'}],returns:{type:"node()?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"leaf-elements",qname:"functx:leaf-elements",signature:"($root as node()?) as element(*)*",description:" All XML elements that don't have any child elements\n",summary:"

All XML elements that don't have any child elements\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"root",type:"node()",occurrence:"?",description:'
the root
'}],returns:{type:"element(*)*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"left-trim",qname:"functx:left-trim",signature:"($arg as xs:string?) as xs:string",description:" Trims leading whitespace\n",summary:"

Trims leading whitespace\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to trim
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"line-count",qname:"functx:line-count",signature:"($arg as xs:string?) as xs:integer",description:" The number of lines\n",summary:"

The number of lines\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to test
'}],returns:{type:"xs:integer",description:""},errors:[]},{isDocumented:!0,arity:1,name:"lines",qname:"functx:lines",signature:"($arg as xs:string?) as xs:string*",description:" Split a string into separate lines\n",summary:"

Split a string into separate lines\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to split
'}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"max-depth",qname:"functx:max-depth",signature:"($root as node()?) as xs:integer?",description:" The maximum depth of elements in an XML tree\n",summary:"

The maximum depth of elements in an XML tree\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"root",type:"node()",occurrence:"?",description:'
the root to start from
'}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"max-determine-type",qname:"functx:max-determine-type",signature:"($seq as xs:anyAtomicType*) as xs:anyAtomicType?",description:" The maximum value in a sequence, figuring out its type (numeric or string)\n",summary:"

The maximum value in a sequence, figuring out its type (numeric or string)\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequence of values to test
'}],returns:{type:"xs:anyAtomicType?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"max-line-length",qname:"functx:max-line-length",signature:"($arg as xs:string?) as xs:integer",description:" The maximum line length\n",summary:"

The maximum line length\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to test
'}],returns:{type:"xs:integer",description:""},errors:[]},{isDocumented:!0,arity:1,name:"max-node",qname:"functx:max-node",signature:"($nodes as node()*) as node()*",description:" The XML node whose typed value is the maximum\n",summary:"

The XML node whose typed value is the maximum\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the sequence of nodes to test
'}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"max-string",qname:"functx:max-string",signature:"($strings as xs:anyAtomicType*) as xs:string?",description:" The maximum of a sequence of values, treating them like strings\n",summary:"

The maximum of a sequence of values, treating them like strings\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"strings",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequence of values
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"min-determine-type",qname:"functx:min-determine-type",signature:"($seq as xs:anyAtomicType*) as xs:anyAtomicType?",description:" The minimum value in a sequence, figuring out its type (numeric or string)\n",summary:"

The minimum value in a sequence, figuring out its type (numeric or string)\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequence of values to test
'}],returns:{type:"xs:anyAtomicType?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"min-node",qname:"functx:min-node",signature:"($nodes as node()*) as node()*",description:" The XML node whose typed value is the minimum\n",summary:"

The XML node whose typed value is the minimum\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the sequence of nodes to test
'}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"min-non-empty-string",qname:"functx:min-non-empty-string",signature:"($strings as xs:string*) as xs:string?",description:' The minimum of a sequence of strings, ignoring "empty" values\n',summary:'

The minimum of a sequence of strings, ignoring "empty" values\n

',annotation_str:"",annotations:[],updating:!1,parameters:[{name:"strings",type:"xs:string",occurrence:"*",description:'
the sequence of strings to search
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"min-string",qname:"functx:min-string",signature:"($strings as xs:anyAtomicType*) as xs:string?",description:" The minimum of a sequence of values, treating them like strings\n",summary:"

The minimum of a sequence of values, treating them like strings\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"strings",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequence of strings
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"mmddyyyy-to-date",qname:"functx:mmddyyyy-to-date",signature:"($dateString as xs:string?) as xs:date?",description:" Converts a string with format MMDDYYYY (with any delimiters) to a date\n",summary:"

Converts a string with format MMDDYYYY (with any delimiters) to a date\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"dateString",type:"xs:string",occurrence:"?",description:'
the MMDDYYYY string
'}],returns:{type:"xs:date?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"month-abbrev-en",qname:"functx:month-abbrev-en",signature:"($date as xs:anyAtomicType?) as xs:string?",description:" The month of a date as an abbreviated word (Jan, Feb, etc.)\n",summary:"

The month of a date as an abbreviated word (Jan, Feb, etc.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"month-name-en",qname:"functx:month-name-en",signature:"($date as xs:anyAtomicType?) as xs:string?",description:" The month of a date as a word (January, February, etc.)\n",summary:"

The month of a date as a word (January, February, etc.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"name-test",qname:"functx:name-test",signature:"($testname as xs:string?, $names as xs:string*) as xs:boolean",description:" Whether a name matches a list of names or name wildcards\n",summary:"

Whether a name matches a list of names or name wildcards\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"testname",type:"xs:string",occurrence:"?",description:'
the name to test
'},{name:"names",type:"xs:string",occurrence:"*",description:'
the list of names or name wildcards
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"namespaces-in-use",qname:"functx:namespaces-in-use",signature:"($root as node()?) as xs:anyURI*",description:" A list of namespaces used in element/attribute names in an XML fragment\n",summary:"

A list of namespaces used in element/attribute names in an XML fragment\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"root",type:"node()",occurrence:"?",description:'
the root node to start from
'}],returns:{type:"xs:anyURI*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"next-day",qname:"functx:next-day",signature:"($date as xs:anyAtomicType?) as xs:date?",description:" The next day\n",summary:"

The next day\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:date?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"node-kind",qname:"functx:node-kind",signature:"($nodes as node()*) as xs:string*",description:" The XML node kind (element, attribute, text, etc.)\n",summary:"

The XML node kind (element, attribute, text, etc.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the node(s) whose kind you want to determine
'}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"non-distinct-values",qname:"functx:non-distinct-values",signature:"($seq as xs:anyAtomicType*) as xs:anyAtomicType*",description:" Returns any values that appear more than once in a sequence\n",summary:"

Returns any values that appear more than once in a sequence\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"xs:anyAtomicType",occurrence:"*",description:'
the sequence of values
'}],returns:{type:"xs:anyAtomicType*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"number-of-matches",qname:"functx:number-of-matches",signature:"($arg as xs:string?, $pattern as xs:string) as xs:integer",description:" The number of regions that match a pattern\n",summary:"

The number of regions that match a pattern\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to test
'},{name:"pattern",type:"xs:string",occurrence:null,description:'
the regular expression
'}],returns:{type:"xs:integer",description:""},errors:[]},{isDocumented:!0,arity:1,name:"ordinal-number-en",qname:"functx:ordinal-number-en",signature:"($num as xs:integer?) as xs:string",description:" Reformats a number as an ordinal number, e.g. 1st, 2nd, 3rd.\n",summary:"

Reformats a number as an ordinal number, e.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"num",type:"xs:integer",occurrence:"?",description:'
the number
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"pad-integer-to-length",qname:"functx:pad-integer-to-length",signature:"($integerToPad as xs:anyAtomicType?, $length as xs:integer) as xs:string",description:" Pads an integer to a desired length by adding leading zeros\n",summary:"

Pads an integer to a desired length by adding leading zeros\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"integerToPad",type:"xs:anyAtomicType",occurrence:"?",description:'
the integer to pad
'},{name:"length",type:"xs:integer",occurrence:null,description:'
the desired length
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:3,name:"pad-string-to-length",qname:"functx:pad-string-to-length",signature:"($stringToPad as xs:string?, $padChar as xs:string, $length as xs:integer) as xs:string",description:" Pads a string to a desired length\n",summary:"

Pads a string to a desired length\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"stringToPad",type:"xs:string",occurrence:"?",description:'
the string to pad
'},{name:"padChar",type:"xs:string",occurrence:null,description:'
the character(s) to use as padding
'},{name:"length",type:"xs:integer",occurrence:null,description:'
the desired length
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"path-to-node-with-pos",qname:"functx:path-to-node-with-pos",signature:"($node as node()?) as xs:string",description:" A unique path to an XML node (or sequence of nodes)\n",summary:"

A unique path to an XML node (or sequence of nodes)\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:"?",description:'
the node sequence
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"path-to-node",qname:"functx:path-to-node",signature:"($nodes as node()*) as xs:string*",description:" A path to an XML node (or sequence of nodes)\n",summary:"

A path to an XML node (or sequence of nodes)\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the node sequence
'}],returns:{type:"xs:string*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"precedes-not-ancestor",qname:"functx:precedes-not-ancestor",signature:"($a as node()?, $b as node()?) as xs:boolean",description:" Whether an XML node precedes another without being its ancestor\n",summary:"

Whether an XML node precedes another without being its ancestor\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"a",type:"node()",occurrence:"?",description:'
the first node
'},{name:"b",type:"node()",occurrence:"?",description:'
the second node
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"previous-day",qname:"functx:previous-day",signature:"($date as xs:anyAtomicType?) as xs:date?",description:" The previous day\n",summary:"

The previous day\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"date",type:"xs:anyAtomicType",occurrence:"?",description:'
the date
'}],returns:{type:"xs:date?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"remove-attributes-deep",qname:"functx:remove-attributes-deep",signature:"($nodes as node()*, $names as xs:string*) as node()*",description:" Removes attributes from an XML fragment, based on name\n",summary:"

Removes attributes from an XML fragment, based on name\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the root(s) to start from
'},{name:"names",type:"xs:string",occurrence:"*",description:'
the names of the attributes to remove, or * for all attributes
'}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"remove-attributes",qname:"functx:remove-attributes",signature:"($elements as element(*)*, $names as xs:string*) as element(*)",description:" Removes attributes from an XML element, based on name\n",summary:"

Removes attributes from an XML element, based on name\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"elements",type:"element(*)",occurrence:"*",description:'
the element(s) from which to remove the attributes
'},{name:"names",type:"xs:string",occurrence:"*",description:'
the names of the attributes to remove, or * for all attributes
'}],returns:{type:"element(*)",description:""},errors:[]},{isDocumented:!0,arity:2,name:"remove-elements-deep",qname:"functx:remove-elements-deep",signature:"($nodes as node()*, $names as xs:string*) as node()*",description:" Removes descendant elements from an XML node, based on name\n",summary:"

Removes descendant elements from an XML node, based on name\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
root(s) to start from
'},{name:"names",type:"xs:string",occurrence:"*",description:'
the names of the elements to remove
'}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"remove-elements-not-contents",qname:"functx:remove-elements-not-contents",signature:"($nodes as node()*, $names as xs:string*) as node()*",description:" Removes descendant XML elements but keeps their content\n",summary:"

Removes descendant XML elements but keeps their content\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:"node()",occurrence:"*",description:'
the root(s) to start from
'},{name:"names",type:"xs:string",occurrence:"*",description:'
the names of the elements to remove
'}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"remove-elements",qname:"functx:remove-elements",signature:"($elements as element(*)*, $names as xs:string*) as element(*)*",description:" Removes child elements from an XML node, based on name\n",summary:"

Removes child elements from an XML node, based on name\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"elements",type:"element(*)",occurrence:"*",description:'
the element(s) from which you wish to remove the children
'},{name:"names",type:"xs:string",occurrence:"*",description:'
the names of the child elements to remove
'}],returns:{type:"element(*)*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"repeat-string",qname:"functx:repeat-string",signature:"($stringToRepeat as xs:string?, $count as xs:integer) as xs:string",description:" Repeats a string a given number of times\n",summary:"

Repeats a string a given number of times\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"stringToRepeat",type:"xs:string",occurrence:"?",description:'
the string to repeat
'},{name:"count",type:"xs:integer",occurrence:null,description:'
the desired number of copies
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:3,name:"replace-beginning",qname:"functx:replace-beginning",signature:"($arg as xs:string?, $pattern as xs:string, $replacement as xs:string) as xs:string",description:" Replaces the beginning of a string, up to a matched pattern\n",summary:"

Replaces the beginning of a string, up to a matched pattern\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the entire string to change
'},{name:"pattern",type:"xs:string",occurrence:null,description:'
the pattern of characters to replace up to
'},{name:"replacement",type:"xs:string",occurrence:null,description:'
the replacement string
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"replace-element-values",qname:"functx:replace-element-values",signature:"($elements as element(*)*, $values as xs:anyAtomicType*) as element(*)*",description:" Updates the content of one or more elements\n",summary:"

Updates the content of one or more elements\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"elements",type:"element(*)",occurrence:"*",description:'
the elements whose content you wish to replace
'},{name:"values",type:"xs:anyAtomicType",occurrence:"*",description:'
the replacement values
'}],returns:{type:"element(*)*",description:""},errors:[]},{isDocumented:!0,arity:3,name:"replace-first",qname:"functx:replace-first",signature:"($arg as xs:string?, $pattern as xs:string, $replacement as xs:string) as xs:string",description:" Replaces the first match of a pattern\n",summary:"

Replaces the first match of a pattern\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the entire string to change
'},{name:"pattern",type:"xs:string",occurrence:null,description:'
the pattern of characters to replace
'},{name:"replacement",type:"xs:string",occurrence:null,description:'
the replacement string
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:3,name:"replace-multi",qname:"functx:replace-multi",signature:"($arg as xs:string?, $changeFrom as xs:string*, $changeTo as xs:string*) as xs:string?",description:" Performs multiple replacements, using pairs of replace parameters\n",summary:"

Performs multiple replacements, using pairs of replace parameters\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to manipulate
'},{name:"changeFrom",type:"xs:string",occurrence:"*",description:'
the sequence of strings or patterns to change from
'},{name:"changeTo",type:"xs:string",occurrence:"*",description:'
the sequence of strings to change to
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"reverse-string",qname:"functx:reverse-string",signature:"($arg as xs:string?) as xs:string",description:" Reverses the order of characters\n",summary:"

Reverses the order of characters\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to reverse
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"right-trim",qname:"functx:right-trim",signature:"($arg as xs:string?) as xs:string",description:" Trims trailing whitespace\n",summary:"

Trims trailing whitespace\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to trim
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"scheme-from-uri",qname:"functx:scheme-from-uri",signature:"($uri as xs:string?) as xs:string?",description:" Returns the scheme from a URI\n",summary:"

Returns the scheme from a URI\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:"?",description:'
the URI
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"sequence-deep-equal",qname:"functx:sequence-deep-equal",signature:"($seq1 as item()*, $seq2 as item()*) as xs:boolean",description:" Whether two sequences have the same XML node content and/or values\n",summary:"

Whether two sequences have the same XML node content and/or values\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq1",type:"item()",occurrence:"*",description:'
the first sequence
'},{name:"seq2",type:"item()",occurrence:"*",description:'
the second sequence
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"sequence-node-equal-any-order",qname:"functx:sequence-node-equal-any-order",signature:"($seq1 as node()*, $seq2 as node()*) as xs:boolean",description:" Whether two sequences contain the same XML nodes, regardless of order\n",summary:"

Whether two sequences contain the same XML nodes, regardless of order\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq1",type:"node()",occurrence:"*",description:'
the first sequence of nodes
'},{name:"seq2",type:"node()",occurrence:"*",description:'
the second sequence of nodes
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:2,name:"sequence-node-equal",qname:"functx:sequence-node-equal",signature:"($seq1 as node()*, $seq2 as node()*) as xs:boolean",description:" Whether two sequences contain the same XML nodes, in the same order\n",summary:"

Whether two sequences contain the same XML nodes, in the same order\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq1",type:"node()",occurrence:"*",description:'
the first sequence of nodes
'},{name:"seq2",type:"node()",occurrence:"*",description:'
the second sequence of nodes
'}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!0,arity:1,name:"sequence-type",qname:"functx:sequence-type",signature:"($items as item()*) as xs:string",description:" The sequence type that represents a sequence of nodes or values\n",summary:"

The sequence type that represents a sequence of nodes or values\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"items",type:"item()",occurrence:"*",description:'
the items whose sequence type you want to determine
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"siblings-same-name",qname:"functx:siblings-same-name",signature:"($element as element(*)?) as element(*)*",description:" The siblings of an XML element that have the same name\n",summary:"

The siblings of an XML element that have the same name\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"element",type:"element(*)",occurrence:"?",description:'
the node
'}],returns:{type:"element(*)*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"siblings",qname:"functx:siblings",signature:"($node as node()?) as node()*",description:" The siblings of an XML node\n",summary:"

The siblings of an XML node\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:"?",description:'
the node
'}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"sort-as-numeric",qname:"functx:sort-as-numeric",signature:"($seq as item()*) as item()*",description:" Sorts a sequence of numeric values or nodes\n",summary:"

Sorts a sequence of numeric values or nodes\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"item()",occurrence:"*",description:'
the sequence to sort
'}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"sort-case-insensitive",qname:"functx:sort-case-insensitive",signature:"($seq as item()*) as item()*",description:" Sorts a sequence of values or nodes regardless of capitalization\n",summary:"

Sorts a sequence of values or nodes regardless of capitalization\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"item()",occurrence:"*",description:'
the sequence to sort
'}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"sort-document-order",qname:"functx:sort-document-order",signature:"($seq as node()*) as node()*",description:" Sorts a sequence of nodes in document order\n",summary:"

Sorts a sequence of nodes in document order\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"node()",occurrence:"*",description:'
the sequence to sort
'}],returns:{type:"node()*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"sort",qname:"functx:sort",signature:"($seq as item()*) as item()*",description:" Sorts a sequence of values or nodes\n",summary:"

Sorts a sequence of values or nodes\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"seq",type:"item()",occurrence:"*",description:'
the sequence to sort
'}],returns:{type:"item()*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"substring-after-if-contains",qname:"functx:substring-after-if-contains",signature:"($arg as xs:string?, $delim as xs:string) as xs:string?",description:" Performs substring-after, returning the entire string if it does not contain the delimiter\n",summary:"

Performs substring-after, returning the entire string if it does not contain the delimiter\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to substring
'},{name:"delim",type:"xs:string",occurrence:null,description:'
the delimiter
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"substring-after-last-match",qname:"functx:substring-after-last-match",signature:"($arg as xs:string?, $regex as xs:string) as xs:string",description:" The substring after the last text that matches a regex\n",summary:"

The substring after the last text that matches a regex\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to substring
'},{name:"regex",type:"xs:string",occurrence:null,description:'
the regular expression
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"substring-after-last",qname:"functx:substring-after-last",signature:"($arg as xs:string?, $delim as xs:string) as xs:string",description:" The substring after the last occurrence of a delimiter\n",summary:"

The substring after the last occurrence of a delimiter\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to substring
'},{name:"delim",type:"xs:string",occurrence:null,description:'
the delimiter
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"substring-after-match",qname:"functx:substring-after-match",signature:"($arg as xs:string?, $regex as xs:string) as xs:string?",description:" The substring after the first text that matches a regex\n",summary:"

The substring after the first text that matches a regex\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to substring
'},{name:"regex",type:"xs:string",occurrence:null,description:'
the regular expression
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"substring-before-if-contains",qname:"functx:substring-before-if-contains",signature:"($arg as xs:string?, $delim as xs:string) as xs:string?",description:" Performs substring-before, returning the entire string if it does not contain the delimiter\n",summary:"

Performs substring-before, returning the entire string if it does not contain the delimiter\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to substring
'},{name:"delim",type:"xs:string",occurrence:null,description:'
the delimiter
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"substring-before-last-match",qname:"functx:substring-before-last-match",signature:"($arg as xs:string?, $regex as xs:string) as xs:string?",description:" The substring after the first text that matches a regex\n",summary:"

The substring after the first text that matches a regex\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to substring
'},{name:"regex",type:"xs:string",occurrence:null,description:'
the regular expression
'}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"substring-before-last",qname:"functx:substring-before-last",signature:"($arg as xs:string?, $delim as xs:string) as xs:string",description:" The substring before the last occurrence of a delimiter\n",summary:"

The substring before the last occurrence of a delimiter\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to substring
'},{name:"delim",type:"xs:string",occurrence:null,description:'
the delimiter
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"substring-before-match",qname:"functx:substring-before-match",signature:"($arg as xs:string?, $regex as xs:string) as xs:string",description:" The substring before the last text that matches a regex\n",summary:"

The substring before the last text that matches a regex\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to substring
'},{name:"regex",type:"xs:string",occurrence:null,description:'
the regular expression
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:3,name:"time",qname:"functx:time",signature:"($hour as xs:anyAtomicType, $minute as xs:anyAtomicType, $second as xs:anyAtomicType) as xs:time",description:" Construct a time from an hour, minute and second\n",summary:"

Construct a time from an hour, minute and second\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"hour",type:"xs:anyAtomicType",occurrence:null,description:'
the hour
'},{name:"minute",type:"xs:anyAtomicType",occurrence:null,description:'
the minute
'},{name:"second",type:"xs:anyAtomicType",occurrence:null,description:'
the second
'}],returns:{type:"xs:time",description:""},errors:[]},{isDocumented:!0,arity:1,name:"timezone-from-duration",qname:"functx:timezone-from-duration",signature:"($duration as xs:dayTimeDuration) as xs:string",description:' Converts an xs:dayTimeDuration into a timezone like "-05:00" or "Z"\n',summary:'

Converts an xs:dayTimeDuration into a timezone like "-05:00" or "Z"\n

',annotation_str:"",annotations:[],updating:!1,parameters:[{name:"duration",type:"xs:dayTimeDuration",occurrence:null,description:'
the duration
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:1,name:"total-days-from-duration",qname:"functx:total-days-from-duration",signature:"($duration as xs:dayTimeDuration?) as xs:decimal?",description:" The total number of days in a dayTimeDuration\n",summary:"

The total number of days in a dayTimeDuration\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"duration",type:"xs:dayTimeDuration",occurrence:"?",description:'
the duration
'}],returns:{type:"xs:decimal?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"total-hours-from-duration",qname:"functx:total-hours-from-duration",signature:"($duration as xs:dayTimeDuration?) as xs:decimal?",description:" The total number of hours in a dayTimeDuration\n",summary:"

The total number of hours in a dayTimeDuration\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"duration",type:"xs:dayTimeDuration",occurrence:"?",description:'
the duration
'}],returns:{type:"xs:decimal?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"total-minutes-from-duration",qname:"functx:total-minutes-from-duration",signature:"($duration as xs:dayTimeDuration?) as xs:decimal?",description:" The total number of minutes in a dayTimeDuration\n",summary:"

The total number of minutes in a dayTimeDuration\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"duration",type:"xs:dayTimeDuration",occurrence:"?",description:'
the duration
'}],returns:{type:"xs:decimal?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"total-months-from-duration",qname:"functx:total-months-from-duration",signature:"($duration as xs:yearMonthDuration?) as xs:decimal?",description:" The total number of months in a yearMonthDuration\n",summary:"

The total number of months in a yearMonthDuration\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"duration",type:"xs:yearMonthDuration",occurrence:"?",description:'
the duration
'}],returns:{type:"xs:decimal?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"total-seconds-from-duration",qname:"functx:total-seconds-from-duration",signature:"($duration as xs:dayTimeDuration?) as xs:decimal?",description:" The total number of seconds in a dayTimeDuration\n",summary:"

The total number of seconds in a dayTimeDuration\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"duration",type:"xs:dayTimeDuration",occurrence:"?",description:'
the duration
'}],returns:{type:"xs:decimal?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"total-years-from-duration",qname:"functx:total-years-from-duration",signature:"($duration as xs:yearMonthDuration?) as xs:decimal?",description:" The total number of years in a yearMonthDuration\n",summary:"

The total number of years in a yearMonthDuration\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"duration",type:"xs:yearMonthDuration",occurrence:"?",description:'
the duration
'}],returns:{type:"xs:decimal?",description:""},errors:[]},{isDocumented:!0,arity:1,name:"trim",qname:"functx:trim",signature:"($arg as xs:string?) as xs:string",description:" Trims leading and trailing whitespace\n",summary:"

Trims leading and trailing whitespace\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to trim
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:3,name:"update-attributes",qname:"functx:update-attributes",signature:"($elements as element(*)*, $attrNames as xs:QName*, $attrValues as xs:anyAtomicType*) as element(*)?",description:" Updates the attribute value of an XML element\n",summary:"

Updates the attribute value of an XML element\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"elements",type:"element(*)",occurrence:"*",description:'
the element(s) for which you wish to update the attribute
'},{name:"attrNames",type:"xs:QName",occurrence:"*",description:'
the name(s) of the attribute(s) to add
'},{name:"attrValues",type:"xs:anyAtomicType",occurrence:"*",description:'
the value(s) of the attribute(s) to add
'}],returns:{type:"element(*)?",description:""},errors:[]},{isDocumented:!0,arity:2,name:"value-except",qname:"functx:value-except",signature:"($arg1 as xs:anyAtomicType*, $arg2 as xs:anyAtomicType*) as xs:anyAtomicType*",description:" The values in one sequence that aren't in another sequence\n",summary:"

The values in one sequence that aren't in another sequence\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:anyAtomicType",occurrence:"*",description:'
the first sequence
'},{name:"arg2",type:"xs:anyAtomicType",occurrence:"*",description:'
the second sequence
'}],returns:{type:"xs:anyAtomicType*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"value-intersect",qname:"functx:value-intersect",signature:"($arg1 as xs:anyAtomicType*, $arg2 as xs:anyAtomicType*) as xs:anyAtomicType*",description:" The intersection of two sequences of values\n",summary:"

The intersection of two sequences of values\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:anyAtomicType",occurrence:"*",description:'
the first sequence
'},{name:"arg2",type:"xs:anyAtomicType",occurrence:"*",description:'
the second sequence
'}],returns:{type:"xs:anyAtomicType*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"value-union",qname:"functx:value-union",signature:"($arg1 as xs:anyAtomicType*, $arg2 as xs:anyAtomicType*) as xs:anyAtomicType*",description:" The union of two sequences of values\n",summary:"

The union of two sequences of values\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg1",type:"xs:anyAtomicType",occurrence:"*",description:'
the first sequence
'},{name:"arg2",type:"xs:anyAtomicType",occurrence:"*",description:'
the second sequence
'}],returns:{type:"xs:anyAtomicType*",description:""},errors:[]},{isDocumented:!0,arity:1,name:"word-count",qname:"functx:word-count",signature:"($arg as xs:string?) as xs:integer",description:" The number of words\n",summary:"

The number of words\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to measure
'}],returns:{type:"xs:integer",description:""},errors:[]},{isDocumented:!0,arity:1,name:"words-to-camel-case",qname:"functx:words-to-camel-case",signature:"($arg as xs:string?) as xs:string",description:" Turns a string of words into camelCase\n",summary:"

Turns a string of words into camelCase\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"xs:string",occurrence:"?",description:'
the string to modify
'}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:2,name:"wrap-values-in-elements",qname:"functx:wrap-values-in-elements",signature:"($values as xs:anyAtomicType*, $elementName as xs:QName) as element(*)*",description:" Wraps a sequence of atomic values in XML elements\n",summary:"

Wraps a sequence of atomic values in XML elements\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"values",type:"xs:anyAtomicType",occurrence:"*",description:'
the values to wrap in elements
'},{name:"elementName",type:"xs:QName",occurrence:null,description:'
the name of the elements to construct
'}],returns:{type:"element(*)*",description:""},errors:[]},{isDocumented:!0,arity:2,name:"yearMonthDuration",qname:"functx:yearMonthDuration",signature:"($years as xs:decimal?, $months as xs:integer?) as xs:yearMonthDuration",description:" Construct a yearMonthDuration from a number of years and months\n",summary:"

Construct a yearMonthDuration from a number of years and months\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"years",type:"xs:decimal",occurrence:"?",description:'
the number of years
'},{name:"months",type:"xs:integer",occurrence:"?",description:'
the number of months
'}],returns:{type:"xs:yearMonthDuration",description:""},errors:[]}],variables:[]},"http://zorba.io/modules/zorba-query":{ns:"http://zorba.io/modules/zorba-query",description:" This module contains functions to compile and evaluate queries\n written in either JSONiq or XQuery. Also, it contains function that\n allow to parameterize the static or dynamic evaluation phase.\n",sees:[],authors:['Juan Zacarias'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://zorba.io/features",prefix:"f"},{uri:"http://zorba.io/options/features",prefix:"op"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/modules/zorba-query",prefix:"zq"}],functions:[{isDocumented:!0,arity:2,name:"bind-context-item",qname:"zq:bind-context-item",signature:"($query-key as xs:anyURI, $dot as item()) as empty-sequence() external",description:'

This function binds the context-item of the prepared query\n identified by the given key to the $dot argument.

\n',summary:"

This function binds the context-item of the prepared query\n identified by the given key to the $dot argument.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier for a compiled query
'},{name:"dot",type:"item()",occurrence:null,description:'
the context item to bind
'}],returns:{type:"empty-sequence()",description:"the function has side effects and returns the empty sequence."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.']},{isDocumented:!0,arity:3,name:"bind-variable",qname:"zq:bind-variable",signature:"($query-key as xs:anyURI, $var as xs:QName, $value as item()*) as empty-sequence() external",description:'

This function binds the variable with name $name of\n the prepared query identified by $query-key to the given sequence.

\n',summary:"

This function binds the variable with name $name of\n the prepared query identified by $query-key to the given sequence.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier for a compiled query
'},{name:"var",type:"xs:QName",occurrence:null,description:""},{name:"value",type:"item()",occurrence:"*",description:'
the sequence to which the external variable $name should be bound
'}],returns:{type:"empty-sequence()",description:"the function has side effects and returns the empty sequence."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.','zq:UNDECLARED_VARIABLE if the given variable is not declared in the query.']},{isDocumented:!0,arity:1,name:"delete-query",qname:"zq:delete-query",signature:"($query-key as xs:anyURI) as empty-sequence() external",description:'

Deletes the prepared query associated with the given identifier.

\n

After the query is deleted, the corresponding identifier should\n not be used as argument to any of the functions of this module.

\n',summary:"

Deletes the prepared query associated with the given identifier.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier for a compiled query
'}],returns:{type:"empty-sequence()",description:"the function has side effects and returns the empty sequence."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.']},{isDocumented:!0,arity:1,name:"evaluate-sequential",qname:"zq:evaluate-sequential",signature:"($query-key as xs:string) as item()* external",description:'

Evaluates the given prepared query and returns the result\n of the evaluation. The query must be sequential.

\n',summary:"

Evaluates the given prepared query and returns the result\n of the evaluation.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"query-key",type:"xs:string",occurrence:null,description:'
the identifier for a compiled query
'}],returns:{type:"item()*",description:"the result of evaluating the query."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.','zq:QUERY_NOT_SEQUENTIAL if the query is not sequential.','zq:QUERY_IS_UPDATING if the query is an updating query.','any dynamic error that is raised by evaluating the given query.']},{isDocumented:!0,arity:1,name:"evaluate-updating",qname:"zq:evaluate-updating",signature:"($query-key as xs:anyURI) external",description:'

Evaluates the given prepared query and applies the updates\n computed by this query. The query must be an updating query.

\n',summary:"

Evaluates the given prepared query and applies the updates\n computed by this query.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier for a compiled query
'}],returns:{type:null,description:"the function has side effects because it applies the updates of the query. It returns the empty sequence."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.','zq:QUERY_NOT_UPDATING if the query is not an updating query.','zq:QUERY_IS_SEQUENTIAL if the query is sequential.','any dynamic error that is raised by evaluating the given query or applying its updates.']},{isDocumented:!0,arity:1,name:"evaluate",qname:"zq:evaluate",signature:"($query-key as xs:anyURI) as item()* external",description:'

Evaluates the given prepared query and returns the result\n of the evaluation. The query must not be sequential or\n updating.

\n',summary:"

Evaluates the given prepared query and returns the result\n of the evaluation.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier for a compiled query
'}],returns:{type:"item()*",description:"the result of evaluating the given query"},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.','zq:QUERY_IS_UPDATING if the query is an updating query.','zq:QUERY_IS_SEQUENTIAL if the query is sequential.','any dynamic error that is raised by evaluating the given query.']},{isDocumented:!0,arity:1,name:"external-variables",qname:"zq:external-variables",signature:"($query-key as xs:anyURI) as xs:QName* external",description:'

The function returns the names of the external variables that\n are declared in the given query (either in the main module or\n in any of the imported library modules).

\n',summary:"

The function returns the names of the external variables that\n are declared in the given query (either in the main module or\n in any of the imported library modules).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier for a compiled query
'}],returns:{type:"xs:QName*",description:"the sequence of names of the said external variables."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.']},{isDocumented:!0,arity:1,name:"is-bound-context-item",qname:"zq:is-bound-context-item",signature:"($query-key as xs:anyURI) as xs:boolean external",description:'

The function tests if the context-item is bound for the\n execution of the query referred to by the given query identifier.

\n',summary:"

The function tests if the context-item is bound for the\n execution of the query referred to by the given query identifier.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier for a compiled query
'}],returns:{type:"xs:boolean",description:"true if the context-item is bound, false otherwise."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.']},{isDocumented:!0,arity:2,name:"is-bound-variable",qname:"zq:is-bound-variable",signature:"($query-key as xs:anyURI, $var-name as xs:QName) as xs:boolean external",description:'

The function tests if the given variable is bound for the\n execution of the query referred to by the given query identifier.

\n',summary:"

The function tests if the given variable is bound for the\n execution of the query referred to by the given query identifier.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier for a compiled query
'},{name:"var-name",type:"xs:QName",occurrence:null,description:'
the name of the variable
'}],returns:{type:"xs:boolean",description:"true if the variable is bound, false otherwise."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.','zq:UNDECLARED_VARIABLE if the given variable is not declared in the query.']},{isDocumented:!0,arity:1,name:"is-sequential",qname:"zq:is-sequential",signature:"($query-key as xs:anyURI) as xs:boolean external",description:'

The function tests if the query identified by the given key\n is sequential query.

\n',summary:"

The function tests if the query identified by the given key\n is sequential query.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier for a compiled query
'}],returns:{type:"xs:boolean",description:"true if the query is a sequential, false otherwise."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.']},{isDocumented:!0,arity:1,name:"is-updating",qname:"zq:is-updating",signature:"($query-key as xs:anyURI) as xs:boolean external",description:'

The function tests if the query identified by the given key\n is an updating query.

\n',summary:"

The function tests if the query identified by the given key\n is an updating query.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier for a compiled query
'}],returns:{type:"xs:boolean",description:"true if the query is an updating query, false otherwise."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.']},{isDocumented:!0,arity:1,name:"load-from-query-plan",qname:"zq:load-from-query-plan",signature:"($plan as xs:base64Binary) as xs:anyURI external",description:'

The function loads a given query for execution from a\n xs:base64Binary query plan, obtained through the zq:query-plan function.

\n

If the query was successfully loaded, the function returns an\n identifier as xs:anyURI. This URI can be passed to other functions\n of this module (e.g. to actually evaluate the query). The URI\n is opaque and its lifetime is bound by the lifetime of the query\n that invoked this function. Further reference or uses\n of the identifier lead to unexpected results.

\n

\n

Successfully prepared queries need to be deleted by passing the resulting\n identifier to the zq:delete-query function of this module.

\n',summary:"

The function loads a given query for execution from a\n xs:base64Binary query plan, obtained through the zq:query-plan function.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"plan",type:"xs:base64Binary",occurrence:null,description:'
the binary query plan.
'}],returns:{type:"xs:anyURI",description:"an identifier for the compiled query that can be passed as arguments to other functions of this module."},errors:['any (static or type) error that may be raised during the compilation of the query. For example, err:XPST0003 if the given query could not be parsed.']},{isDocumented:!0,arity:3,name:"load-from-query-plan",qname:"zq:load-from-query-plan",signature:"($plan as xs:base64Binary, $resolver as item()?, $mapper as item()?) as xs:anyURI external",description:'

The function loads a given query for execution from a\n xs:base64Binary query plan, obtained through the zq:query-plan function.

\n

If the query was successfully loaded, the function returns an\n identifier as xs:anyURI. This URI can be passed to other functions\n of this module (e.g. to actually evaluate the query). The URI\n is opaque and its lilfetime is bound by the lifetime of the query\n that invoked this function. Further reference or uses\n of the identifier lead to unexpected results.

\n

\n

For important notes regarding the second and third parameters of the\n function, review the comments in zq:prepare-main-module#3.

\n

\n

Successfully prepared queries need to be deleted by passing the resulting\n identifier to the zq:delete-query function of this module.

\n',summary:"

The function loads a given query for execution from a\n xs:base64Binary query plan, obtained through the zq:query-plan function.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"plan",type:"xs:base64Binary",occurrence:null,description:'
the binary query plan.
'},{name:"resolver",type:"item()",occurrence:"?",description:'
the URL resolver function.
'},{name:"mapper",type:"item()",occurrence:"?",description:'
the URI mapper function.
'}],returns:{type:"xs:anyURI",description:"an identifier for the compiled query that can be passed as arguments to other functions of this module."},errors:['any (static or type) error that may be raised during the compilation of the query. For example, err:XPST0003 if the given query could not be parsed.']},{isDocumented:!0,arity:1,name:"prepare-library-module",qname:"zq:prepare-library-module",signature:"($library-module-text as xs:string) as empty-sequence() external",description:'

This function compiles a given XQuery or JSONiq library module.\n It can be used to compile-check a module.

\n',summary:"

This function compiles a given XQuery or JSONiq library module.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"library-module-text",type:"xs:string",occurrence:null,description:'
the library module that should be prepared.
'}],returns:{type:"empty-sequence()",description:"the empty-sequence."},errors:['any (static or type) error that may be raised during the compilation of the library module. For example, err:XPST0003 if the given library module could not be parsed.']},{isDocumented:!0,arity:1,name:"prepare-main-module",qname:"zq:prepare-main-module",signature:"($main-module-text as xs:string) as xs:anyURI external",description:'

The function prepares a given a query for execution.

\n

If the query was successfully compiled, the function returns an\n identifier as xs:anyURI. This URI can be passed to other functions\n of this module (e.g. to actually evaluate the query). The URI\n is opaque and its lifetime is bound by the lifetime of the query\n that invoked this function. Further reference or uses\n of the identifier lead to unexpected results.

\n

\n

Successfully prepared queries need to be deleted by passing the resulting\n identifier to the zq:delete-query function of this module.

\n',summary:"

The function prepares a given a query for execution.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"main-module-text",type:"xs:string",occurrence:null,description:'
the query that should be prepared. The query needs to be a XQuery or JSONiq main module.
'}],returns:{type:"xs:anyURI",description:"an identifier for the compiled query that can be passed as arguments to other functions of this module."},errors:['any (static or type) error that may be raised during the compilation of the query. For example, err:XPST0003 if the given query could not be parsed.']},{isDocumented:!0,arity:3,name:"prepare-main-module",qname:"zq:prepare-main-module",signature:"($main-module-text as xs:string, $resolver as function (xs:string, xs:string) as item()??, $mapper as function (xs:string, xs:string) as xs:string*?) as xs:anyURI external",description:'

The function prepares a given query for execution.

\n

If the query was successfully compiled, the function returns an\n identifier as xs:anyURI. This URI can be passed to other functions\n of this module (e.g. to actually evaluate the query). The URI\n is opaque and its lifetime is bound by the lifetime of the query\n that invoked this function. Further reference or uses\n of the identifier lead to unexpected results.

\n

\n

Important notes regarding the second and third parameters of the function:

\n

--------------------------------------------------------------------------

\n

\n

These parameters allow you to specify a URL resolver and a URI mapper\n for Zorba to use when executing this query. See\n here

\n

\n

\n

The function must return the empty sequence when the specified $namespace\n or $entity are not the ones to be resolved.

\n

\n

Example:

\n

\n

declare function mymod:url-resolver($namespace as xs:string, $entity as xs:string) as item()?\n {\n  if($namespace = \'http://test.xq\')\n  then "module namespace test = \'http://test\'; declare function test:foo(){\'foo\'};"\n  else ()\n };
\n

\n

The URL resolver function\'s namespace, name, and parameter naming are\n not restricted by ZQ.

\n

\n

The URL resolver function\'s return type is not restricted, it could be a string, a sequence,\n a node, etc. All the outputs types are to be serialized as a string.

\n

\n

The third parameter is a function item for a URI mapper.

\n \n

The URI mapper must return an empty sequence when the specified $namesapce or $entity\n are not to be mapped. Unlike the URL resolver this function must return a sequence of strings.

\n

\n

Example:

\n

\n

declare function mymod:uri-mapper($namespace as xs:string, $entity as xs:string)\n {\n  if($namespace = \'http://test\')\n  then ("http://zorba.io/test", "http://foo.com/schema/test")\n  else ()\n };
\n

\n

The URI mapper function\'s namespace, name, and parameter naming are\n not restricted by ZQ.

\n

\n

In order to pass the above URL resolver and URI mapper to this function,\n use the following syntax:

\n

\n

variable $queryID := zq:prepare-main-module("..query text..",\n      mymod:url-resolver#2, mymod:uri-mapper#2);
\n

\n

That is, the QName of the function followed by "#2". This is XQuery\n "higher-order function" syntax, meaning the function with the specified\n QName which takes two arguments. Since URL resolvers and URI mappers\n must take two arguments, both will always be specified with "#2".

\n

\n

Both the URL resolver and URI mapper functions are optional, meaning you\n may pass the empty-sequence () for either.

\n

\n

Successfully prepared queries need to be deleted by passing the resulting\n identifier to the zq:delete-query function of this module.

\n',summary:"

The function prepares a given query for execution.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"main-module-text",type:"xs:string",occurrence:null,description:'
the query that should be prepared. The query needs to be a XQuery or JSONiq main module.
'},{name:"resolver",type:"function (xs:string, xs:string) as item()?",occurrence:"?",description:'
the URL resolver function.
'},{name:"mapper",type:"function (xs:string, xs:string) as xs:string*",occurrence:"?",description:'
the URI mapper function.
'}],returns:{type:"xs:anyURI",description:"an identifier for the compiled query that can be passed as arguments to other functions of this module."},errors:['any (static or type) error that may be raised during the compilation of the query. For example, err:XPST0003 if the given query could not be parsed.']},{isDocumented:!0,arity:1,name:"query-plan",qname:"zq:query-plan",signature:"($query-key as xs:anyURI) as xs:base64Binary external",description:'

Returns the compiled query identified by the given query-key\n as binary data.

\n',summary:"

Returns the compiled query identified by the given query-key\n as binary data.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier of a compiled query.
'}],returns:{type:"xs:base64Binary",description:"the query as xs:base64Binary."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.','zq:NO_QUERY_PLAN if there is an error serializing the query.']},{isDocumented:!0,arity:2,name:"variable-value",qname:"zq:variable-value",signature:"($query-key as xs:anyURI, $var-name as xs:QName) as item()* external",description:'

This function returns the value of a variable that is bound in the\n given query.

\n',summary:"

This function returns the value of a variable that is bound in the\n given query.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"query-key",type:"xs:anyURI",occurrence:null,description:'
the identifier of a compiled query.
'},{name:"var-name",type:"xs:QName",occurrence:null,description:'
the name of the variable whose value should be returned.
'}],returns:{type:"item()*",description:"the value bound to the given variable."},errors:['zq:NO_QUERY_MATCH if no query with the given identifier was prepared.','zq:UNDECLARED_VARIABLE if the given variable is not declared in the query.','zq:UNBOUND_VARIABLE if the given variable doesn\'t have a value.']}],variables:[]},"http://xbrl.io/modules/bizql/hypercubes":{ns:"http://xbrl.io/modules/bizql/hypercubes",description:'

This module provides functionality for manipulating hypercubes.

\n

A hypercube provides a multi-dimensional structure to organize facts.

\n

The dimensions of a hypercube correspond to XBRL aspects (concepts, entities, periods,\n units, further XBRL dimensions). An XBRL hypercube only is made of XBRL dimensions, however\n including the other aspects as well is very useful in the context of NOLAP, so that xbrl.io\n does so.

\n

xbrl.io introduces the notion of default hypercube. A default hypercube is implicitly added\n to each component, and only contains the concept, entity, period and unit aspects.\n In other words, the default hypercube\n of a component contains all these facts that do not have any XBRL dimensions.

\n

With this module, you can retrieve all hypercubes contained in a component. You can\n retrieve all facts contained in a hypercube (default dimension values are processed automatically),\n either in raw form, or organized as a (2D) fact table. You can also populate a network (for example,\n a presentation network) with the facts contained in a hypercube.

\n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"http://xbrl.io/modules/bizql/archives",prefix:"archives"},{uri:"http://xbrl.io/modules/bizql/concept-maps",prefix:"concept-maps"},{uri:"http://xbrl.io/modules/bizql/entities",prefix:"entities"},{uri:"http://xbrl.io/modules/bizql/facts",prefix:"facts"},{uri:"http://xbrl.io/modules/bizql/hypercubes",prefix:"hypercubes"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:0,name:"dimensionless-hypercube",qname:"hypercubes:dimensionless-hypercube",signature:"() as object()",description:'

Returns an instantiation of a dimensionless Hypercube containing only the basic\n characteristics (xbrl:Concept, xbrl:Period, xbrl:Entity, and xbrl:Unit).\n For each of those included aspects the value space is not limited.

\n',summary:"

Returns an instantiation of a dimensionless Hypercube containing only the basic\n characteristics (xbrl:Concept, xbrl:Period, xbrl:Entity, and xbrl:Unit).

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:"dimensionless hypercube instantiation."},errors:[]},{isDocumented:!0,arity:1,name:"dimensionless-hypercube",qname:"hypercubes:dimensionless-hypercube",signature:"($options as object()?) as object()",description:'

Returns an instantiation of a dimensionless Hypercube containing only the basic\n characteristics (xbrl:Concept, xbrl:Period, xbrl:Entity, and xbrl:Unit).\n For each of those included aspects the value space is not limited.

\n',summary:"

Returns an instantiation of a dimensionless Hypercube containing only the basic\n characteristics (xbrl:Concept, xbrl:Period, xbrl:Entity, and xbrl:Unit).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"options",type:"object()",occurrence:"?",description:'
: additional options among which: - Concepts: an array of concept names to include in the hypercube. - Periods: an array of periods to include in the hypercube. - Entities: an array of EIDs to include in the hypercube. - Units: an array of units to include in the hypercube.
'}],returns:{type:"object()",description:"dimensionless hypercube instantiation."},errors:[]},{isDocumented:!0,arity:2,name:"fact-table-for-hypercube",qname:"hypercubes:fact-table-for-hypercube",signature:"($hypercube as object(), $archives as item()*) as array()",description:'

Retrieves all facts from the supplied archives, that are relevant to the\n supplied hypercube, and populates them with the default dimension values\n when missing.

\n',summary:"

Retrieves all facts from the supplied archives, that are relevant to the\n supplied hypercube, and populates them with the default dimension values\n when missing.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"hypercube",type:"object()",occurrence:null,description:'
a hypercube.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $hypercubes:ALL_ARCHIVES for no filtering.
'}],returns:{type:"array()",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:3,name:"fact-table-for-hypercube",qname:"hypercubes:fact-table-for-hypercube",signature:"($hypercube as object(), $archives as item()*, $options as object()?) as array()",description:'

Retrieves all facts from the supplied archives, that are relevant to the\n supplied hypercube, and populates them with the default dimension values\n when missing.

\n',summary:"

Retrieves all facts from the supplied archives, that are relevant to the\n supplied hypercube, and populates them with the default dimension values\n when missing.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"hypercube",type:"object()",occurrence:null,description:'
a hypercube.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"array()",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:2,name:"facts-for-hypercube",qname:"hypercubes:facts-for-hypercube",signature:"($hypercube as object(), $archives as item()*) as item()*",description:'

Retrieves all facts from the supplied archives, that are relevant to the\n supplied hypercube, and populates them with the default dimension values\n when missing.

\n',summary:"

Retrieves all facts from the supplied archives, that are relevant to the\n supplied hypercube, and populates them with the default dimension values\n when missing.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"hypercube",type:"object()",occurrence:null,description:'
a hypercube.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $hypercubes:ALL_ARCHIVES for no filtering.
'}],returns:{type:"item()*",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:3,name:"facts-for-hypercube",qname:"hypercubes:facts-for-hypercube",signature:"($hypercube as object(), $archives as item()*, $options as object()?) as item()*",description:'

Retrieves all facts from the supplied archives, that are relevant to the\n supplied hypercube, and populates them with the default dimension values\n when missing.

\n',summary:"

Retrieves all facts from the supplied archives, that are relevant to the\n supplied hypercube, and populates them with the default dimension values\n when missing.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"hypercube",type:"object()",occurrence:null,description:'
a hypercube.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $hypercubes:ALL_ARCHIVES for no filtering.
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"item()*",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:1,name:"hypercubes-for-components",qname:"hypercubes:hypercubes-for-components",signature:"($components as object()*) as object()*",description:'

Retrieves all hypercubes in the supplied components.

\n',summary:"

Retrieves all hypercubes in the supplied components.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"components",type:"object()",occurrence:"*",description:'
a sequence of components.
'}],returns:{type:"object()*",description:"all hypercubes."},errors:[]},{isDocumented:!0,arity:2,name:"hypercubes-for-components",qname:"hypercubes:hypercubes-for-components",signature:"($components as object()*, $names as string*) as object()*",description:'

Retrieves all hypercubes in the supplied components and\n with the given names.

\n',summary:"

Retrieves all hypercubes in the supplied components and\n with the given names.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"components",type:"object()",occurrence:"*",description:'
a sequence of components.
'},{name:"names",type:"string",occurrence:"*",description:'
a sequence of names.
'}],returns:{type:"object()*",description:"all hypercubes."},errors:[]},{isDocumented:!0,arity:3,name:"populate-networks-with-facts",qname:"hypercubes:populate-networks-with-facts",signature:"($networks as object()*, $hypercube as object(), $archives as item()*) as object()*",description:'

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied hypercube. Default dimension values are added to the facts\n when missing.

\n',summary:"

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied hypercube.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"networks",type:"object()",occurrence:"*",description:'
networks.
'},{name:"hypercube",type:"object()",occurrence:null,description:'
a hypercube.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs or $hypercubes:ALL_ARCHIVES for no filtering.
'}],returns:{type:"object()*",description:"a sequence of facts with populated dimension values."},errors:[]},{isDocumented:!0,arity:4,name:"populate-networks-with-facts",qname:"hypercubes:populate-networks-with-facts",signature:"($networks as object()*, $hypercube as object(), $archives as item()*, $options as object()?) as object()*",description:'

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied hypercube. Default dimension values are added to the facts\n when missing.

\n',summary:"

Populates a concept-tree network with all facts from the supplied archives,\n that are relevant to the\n supplied hypercube.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"networks",type:"object()",occurrence:"*",description:'
networks.
'},{name:"hypercube",type:"object()",occurrence:null,description:'
a hypercube.
'},{name:"archives",type:"item()",occurrence:"*",description:'
a sequence of archives or their AIDs.
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"object()*",description:"a sequence of facts with populated dimension values."},errors:[]}],variables:[{name:"hypercubes:ALL_ARCHIVES",type:"boolean",description:" Joker for all archives.\n"}]},"http://www.zorba-xquery.com/modules/xqdoc/batch":{ns:"http://www.zorba-xquery.com/modules/xqdoc/batch",description:" Process XQDoc batches.\n This module generates XQDoc HTML documentation from multiple\n XQuery modules.\n",sees:[],authors:['William Candillon wcandillon at gmail dot com'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.zorba-xquery.com/modules/xqdoc/batch",prefix:"batch"},{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://expath.org/ns/file",prefix:"file"},{uri:"http://www.functx.com",prefix:"functx"},{uri:"http://www.w3.org/1999/xhtml",prefix:"h"},{uri:"http://www.zorba-xquery.com/modules/xqdoc/html",prefix:"html"},{uri:"http://www.zorba-xquery.com/modules/xqdoc/menu",prefix:"menu"},{uri:"http://www.w3.org/2010/xslt-xquery-serialization",prefix:"out"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://www.xqdoc.org/1.0",prefix:"xq"},{uri:"http://zorba.io/modules/xqdoc",prefix:"xqdoc"}],functions:[{isDocumented:!1,arity:2,name:"add-predeclared-namespaces",qname:"batch:add-predeclared-namespaces",signature:"($xqdoc as element(xq:xqdoc), $namespaces as element(namespace)*) as element(xq:xqdoc)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"xqdoc",type:"element(xq:xqdoc)",occurrence:null,description:""},{name:"namespaces",type:"element(namespace)",occurrence:"*",description:""}],returns:{type:"element(xq:xqdoc)",description:""},errors:[]},{isDocumented:!1,arity:1,name:"add-trailing-slash",qname:"batch:add-trailing-slash",signature:"($path as xs:string) as xs:string",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"path",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!0,arity:4,name:"build-xqdoc",qname:"batch:build-xqdoc",signature:"($output-folder as xs:string, $static-folders as xs:string*, $template as element(*), $modules as element(modules))",description:" Run an XQDoc batch.\n",summary:"

Run an XQDoc batch.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"output-folder",type:"xs:string",occurrence:null,description:'
Where to write the generated files.
'},{name:"static-folders",type:"xs:string",occurrence:"*",description:'
Where to copy the static files from.
'},{name:"template",type:"element(*)",occurrence:null,description:'
HTML layout of the generated files. The layount can contains different variables. For instance:
is a valid example. Three variable names are available: page, title, and menu.
'},{name:"modules",type:"element(modules)",occurrence:null,description:'
Document describing the documentation project. For instance:
   
'}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"copy-static-folders",qname:"batch:copy-static-folders",signature:"($output-folder as xs:string, $static-folders as xs:string*)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"output-folder",type:"xs:string",occurrence:null,description:""},{name:"static-folders",type:"xs:string",occurrence:"*",description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"create-page",qname:"batch:create-page",signature:"($output-folder as xs:string, $page-name as xs:string, $page as element(h:html))",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"output-folder",type:"xs:string",occurrence:null,description:""},{name:"page-name",type:"xs:string",occurrence:null,description:""},{name:"page",type:"element(h:html)",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"create-xml-folder",qname:"batch:create-xml-folder",signature:"($folder as xs:string)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"folder",type:"xs:string",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"page",qname:"batch:page",signature:"($template as element(*), $menu as element(ul), $section as element(*)) as element(h:html)",description:"",summary:"",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"template",type:"element(*)",occurrence:null,description:""},{name:"menu",type:"element(ul)",occurrence:null,description:""},{name:"section",type:"element(*)",occurrence:null,description:""}],returns:{type:"element(h:html)",description:""},errors:[]},{isDocumented:!1,arity:2,name:"save-xml",qname:"batch:save-xml",signature:"($output-file, $page)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"output-file",type:null,occurrence:null,description:""},{name:"page",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"section",qname:"batch:section",signature:"($sections as element(section)+) as element(section)+",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sections",type:"element(section)",occurrence:"+",description:""}],returns:{type:"element(section)+",description:""},errors:[]},{isDocumented:!1,arity:2,name:"section",qname:"batch:section",signature:"($sections as element(section)+, $level as xs:integer) as element(section)+",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"sections",type:"element(section)",occurrence:"+",description:""},{name:"level",type:"xs:integer",occurrence:null,description:""}],returns:{type:"element(section)+",description:""},errors:[]},{isDocumented:!1,arity:1,name:"xqdoc",qname:"batch:xqdoc",signature:"($module as element(module)) as element(xq:xqdoc)",description:"",summary:"",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"module",type:"element(module)",occurrence:null,description:""}],returns:{type:"element(xq:xqdoc)",description:""},errors:[]}],variables:[]},"http://zorba.io/modules/data-cleaning/hybrid-string-similarity":{ns:"http://zorba.io/modules/data-cleaning/hybrid-string-similarity",description:'

This library module provides hybrid string similarity functions, combining the properties of\n character-based string similarity functions and token-based string similarity functions.

\n

\n

The logic contained in this module is not specific to any particular XQuery implementation,\n although the module requires the trigonometic functions of XQuery 3.0 or a math extension\n function such as sqrt($x as numeric) for computing the square root.

\n',sees:[],authors:['Bruno Martins and Diogo Simões'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/2005/xpath-functions/math",prefix:"math"},{uri:"http://zorba.io/modules/data-cleaning/set-similarity",prefix:"set"},{uri:"http://zorba.io/modules/data-cleaning/character-based-string-similarity",prefix:"simc"},{uri:"http://zorba.io/modules/data-cleaning/hybrid-string-similarity",prefix:"simh"},{uri:"http://zorba.io/modules/data-cleaning/phonetic-string-similarity",prefix:"simp"},{uri:"http://zorba.io/modules/data-cleaning/token-based-string-similarity",prefix:"simt"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:4,name:"monge-elkan-jaro-winkler",qname:"simh:monge-elkan-jaro-winkler",signature:"($s1 as xs:string, $s2 as xs:string, $prefix as xs:integer, $fact as xs:double) as xs:double",description:'

Returns the Monge-Elkan similarity coefficient between two strings, using the Jaro-Winkler

\n

similarity function to discover token identity.

\n

\n

Example usage :

 monge-elkan-jaro-winkler("Comput. Sci. and Eng. Dept., University of California, San Diego", "Department of Computer Scinece, Univ. Calif., San Diego", 4, 0.1) 

\n

\n

The function invocation in the example above returns :

 0.992 

\n',summary:"

Returns the Monge-Elkan similarity coefficient between two strings, using the Jaro-Winkler \n similarity function to discover token identity.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s1",type:"xs:string",occurrence:null,description:'
The first string.
'},{name:"s2",type:"xs:string",occurrence:null,description:'
The second string.
'},{name:"prefix",type:"xs:integer",occurrence:null,description:'
The number of characters to consider when testing for equal prefixes with the Jaro-Winkler metric.
'},{name:"fact",type:"xs:double",occurrence:null,description:'
The weighting factor to consider when the input strings have equal prefixes with the Jaro-Winkler metric.
'}],returns:{type:"xs:double",description:"The Monge-Elkan similarity coefficient between the two strings."},errors:[]},{isDocumented:!0,arity:4,name:"soft-cosine-tokens-edit-distance",qname:"simh:soft-cosine-tokens-edit-distance",signature:"($s1 as xs:string, $s2 as xs:string, $r as xs:string, $t as xs:integer) as xs:double",description:'

Returns the cosine similarity coefficient between sets of tokens extracted from two strings.

\n

The tokens from each string are weighted according to their occurence frequency (i.e., weighted according to the\n term-frequency heuristic from Information Retrieval).

\n

The Edit Distance similarity function is used to discover token identity, and tokens having an edit distance\n bellow a given threshold are considered as matching tokens.

\n

\n

Example usage :

 soft-cosine-tokens-edit-distance("The FLWOR Foundation", "FLWOR Found.", " +", 0 ) 

\n

\n

The function invocation in the example above returns :

 0.408248290463863 

\n',summary:"

Returns the cosine similarity coefficient between sets of tokens extracted from two strings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s1",type:"xs:string",occurrence:null,description:'
The first string.
'},{name:"s2",type:"xs:string",occurrence:null,description:'
The second string.
'},{name:"r",type:"xs:string",occurrence:null,description:'
A regular expression forming the delimiter character(s) which mark the boundaries between adjacent tokens.
'},{name:"t",type:"xs:integer",occurrence:null,description:'
A threshold for the similarity function used to discover token identity.
'}],returns:{type:"xs:double",description:"The cosine similarity coefficient between the sets tokens extracted from the two strings."},errors:[]},{isDocumented:!0,arity:6,name:"soft-cosine-tokens-jaro-winkler",qname:"simh:soft-cosine-tokens-jaro-winkler",signature:"($s1 as xs:string, $s2 as xs:string, $r as xs:string, $t as xs:double, $prefix as xs:integer?, $fact as xs:double?) as xs:double",description:'

Returns the cosine similarity coefficient between sets of tokens extracted from two strings.

\n

The tokens from each string are weighted according to their occurence frequency (i.e., weighted according to the\n term-frequency heuristic from Information Retrieval).

\n

The Jaro-Winkler similarity function is used to discover token identity, and tokens having a Jaro-Winkler\n similarity above a given threshold are considered as matching tokens.

\n

\n

Example usage :

 soft-cosine-tokens-jaro-winkler("The FLWOR Foundation", "FLWOR Found.", " +", 1, 4, 0.1 ) 

\n

\n

The function invocation in the example above returns :

 0.45 

\n',summary:"

Returns the cosine similarity coefficient between sets of tokens extracted from two strings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s1",type:"xs:string",occurrence:null,description:'
The first string.
'},{name:"s2",type:"xs:string",occurrence:null,description:'
The second string.
'},{name:"r",type:"xs:string",occurrence:null,description:'
A regular expression forming the delimiter character(s) which mark the boundaries between adjacent tokens.
'},{name:"t",type:"xs:double",occurrence:null,description:'
A threshold for the similarity function used to discover token identity.
'},{name:"prefix",type:"xs:integer",occurrence:"?",description:'
The number of characters to consider when testing for equal prefixes with the Jaro-Winkler metric.
'},{name:"fact",type:"xs:double",occurrence:"?",description:'
The weighting factor to consider when the input strings have equal prefixes with the Jaro-Winkler metric.
'}],returns:{type:"xs:double",description:"The cosine similarity coefficient between the sets tokens extracted from the two strings."},errors:[]},{isDocumented:!0,arity:4,name:"soft-cosine-tokens-jaro",qname:"simh:soft-cosine-tokens-jaro",signature:"($s1 as xs:string, $s2 as xs:string, $r as xs:string, $t as xs:double) as xs:double",description:'

Returns the cosine similarity coefficient between sets of tokens extracted from two strings.

\n

The tokens from each string are weighted according to their occurence frequency (i.e., weighted according to the\n term-frequency heuristic from Information Retrieval).

\n

The Jaro similarity function is used to discover token identity, and tokens having a Jaro similarity above\n a given threshold are considered as matching tokens.

\n

\n

Example usage :

 soft-cosine-tokens-jaro("The FLWOR Foundation", "FLWOR Found.", " +", 1 ) 

\n

\n

The function invocation in the example above returns :

 0.5 

\n',summary:"

Returns the cosine similarity coefficient between sets of tokens extracted from two strings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s1",type:"xs:string",occurrence:null,description:'
The first string.
'},{name:"s2",type:"xs:string",occurrence:null,description:'
The second string.
'},{name:"r",type:"xs:string",occurrence:null,description:'
A regular expression forming the delimiter character(s) which mark the boundaries between adjacent tokens.
'},{name:"t",type:"xs:double",occurrence:null,description:'
A threshold for the similarity function used to discover token identity.
'}],returns:{type:"xs:double",description:"The cosine similarity coefficient between the sets tokens extracted from the two strings."},errors:[]},{isDocumented:!0,arity:3,name:"soft-cosine-tokens-metaphone",qname:"simh:soft-cosine-tokens-metaphone",signature:"($s1 as xs:string, $s2 as xs:string, $r as xs:string) as xs:double",description:'

Returns the cosine similarity coefficient between sets of tokens extracted from two strings.

\n

The tokens from each string are weighted according to their occurence frequency (i.e., weighted according to the\n term-frequency heuristic from Information Retrieval).

\n

The Metaphone phonetic similarity function is used to discover token identity, which is equivalent to saying that\n this function returns the cosine similarity coefficient between sets of Metaphone keys.

\n

\n

Example usage :

 soft-cosine-tokens-metaphone("ALEKSANDER SMITH", "ALEXANDER SMYTH", " +" ) 

\n

\n

The function invocation in the example above returns :

 1.0 

\n',summary:"

Returns the cosine similarity coefficient between sets of tokens extracted from two strings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s1",type:"xs:string",occurrence:null,description:'
The first string.
'},{name:"s2",type:"xs:string",occurrence:null,description:'
The second string.
'},{name:"r",type:"xs:string",occurrence:null,description:'
A regular expression forming the delimiter character(s) which mark the boundaries between adjacent tokens.
'}],returns:{type:"xs:double",description:"The cosine similarity coefficient between the sets Metaphone keys extracted from the two strings."},errors:[]},{isDocumented:!0,arity:3,name:"soft-cosine-tokens-soundex",qname:"simh:soft-cosine-tokens-soundex",signature:"($s1 as xs:string, $s2 as xs:string, $r as xs:string) as xs:double",description:'

Returns the cosine similarity coefficient between sets of tokens extracted from two strings.

\n

\n

The tokens from each string are weighted according to their occurence frequency (i.e., weighted according to the\n term-frequency heuristic from Information Retrieval).

\n

The Soundex phonetic similarity function is used to discover token identity, which is equivalent to saying that\n this function returns the cosine similarity coefficient between sets of Soundex keys.

\n

\n

Example usage :

 soft-cosine-tokens-soundex("ALEKSANDER SMITH", "ALEXANDER SMYTH", " +") 

\n

\n

The function invocation in the example above returns :

 1.0 

\n',summary:"

Returns the cosine similarity coefficient between sets of tokens extracted from two strings.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s1",type:"xs:string",occurrence:null,description:'
The first string.
'},{name:"s2",type:"xs:string",occurrence:null,description:'
The second string.
'},{name:"r",type:"xs:string",occurrence:null,description:'
A regular expression forming the delimiter character(s) which mark the boundaries between adjacent tokens.
'}],returns:{type:"xs:double",description:"The cosine similarity coefficient between the sets of Soundex keys extracted from the two strings."},errors:[]}],variables:[]},"http://xbrl.io/modules/bizql/rules":{ns:"http://xbrl.io/modules/bizql/rules",description:'

This module provides functions for storing, retrieving, and modifying\n rules. Rules can be used in BizQL queries to:

\n \n

A Rule is an object containing a BizQL fomula to execute if a condition is met.\n For example if a user queries for a certain concept and a rule exists for this\n concept then the rule is applied to get the fact.

\n

With this module, you can retrieve the rules associated with each report\n schema. You can also query for facts by making implicitly use of the mapping.

\n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"http://xbrl.io/modules/bizql/archives",prefix:"archives"},{uri:"http://xbrl.io/modules/bizql/facts",prefix:"facts"},{uri:"http://xbrl.io/modules/bizql/networks",prefix:"networks"},{uri:"http://xbrl.io/modules/bizql/report-schemas",prefix:"report-schemas"},{uri:"http://xbrl.io/modules/bizql/rules",prefix:"rules"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:7,name:"create-computed-fact",qname:"rules:create-computed-fact",signature:"($template-fact as object(), $concept-name-or-aspects as item(), $value as item(), $rule as object(), $audit-trail-message as string, $source-facts as object()*, $options as object()?) as object()",description:'

Helper function to create a new fact within a rule.

\n',summary:"

Helper function to create a new fact within a rule.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"template-fact",type:"object()",occurrence:null,description:'
a fact object that will be used as a template for the newly created fact
'},{name:"concept-name-or-aspects",type:"item()",occurrence:null,description:'
either a name of the concept for the newly created fact or a complete aspects object to be used in the new fact.
'},{name:"value",type:"item()",occurrence:null,description:'
a value for the newly created fact
'},{name:"rule",type:"object()",occurrence:null,description:'
the rule in which this fact has been created
'},{name:"audit-trail-message",type:"string",occurrence:null,description:'
a verbose string message explaining how and why this fact has been created
'},{name:"source-facts",type:"object()",occurrence:"*",description:'
sequence of facts that have been used to compute the new fact (this will only be added to the AuditTrails if the audit-trail option is set to "debug")
'},{name:"options",type:"object()",occurrence:"?",description:'
standard fact retrieving options.
'}],returns:{type:"object()",description:"the decimal value of the fact or 0."},errors:[]},{isDocumented:!0,arity:1,name:"fact-trail",qname:"rules:fact-trail",signature:"($fact as object()?) as string",description:'

Serializes a fact to a simple string format that can be used in\n audit trail messages to trail the value of the fact.

\n

The returned string follows the pattern: fact-concept-name[fact-value]

\n',summary:"

Serializes a fact to a simple string format that can be used in\n audit trail messages to trail the value of the fact.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"fact",type:"object()",occurrence:"?",description:'
a single fact to serialize to a simple informative string
'}],returns:{type:"string",description:"the string with key information about the fact."},errors:[]},{isDocumented:!0,arity:2,name:"fact-trail",qname:"rules:fact-trail",signature:"($fact as object()?, $name as string) as string",description:'

Serializes a fact to a simple string format that can be used in\n audit trail messages to trail the value of the fact.

\n

The returned string follows the pattern: fact-concept-name[fact-value]

\n',summary:"

Serializes a fact to a simple string format that can be used in\n audit trail messages to trail the value of the fact.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"fact",type:"object()",occurrence:"?",description:'
an empty-sequence or a single fact to serialize to a simple informative string
'},{name:"name",type:"string",occurrence:null,description:'
an alternative name to use if the $fact is an empty-sequence otherwise the name will be taken from the fact
'}],returns:{type:"string",description:"the string with key information about the fact."},errors:[]},{isDocumented:!0,arity:0,name:"rules",qname:"rules:rules",signature:"() as object()*",description:'

Retrieves all rules from all report schemas.

\n',summary:"

Retrieves all rules from all report schemas.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()*",description:"all rules."},errors:[]},{isDocumented:!0,arity:1,name:"rules",qname:"rules:rules",signature:"($report-schemas-or-ids as item()*) as object()*",description:'

Return the rules from the given report schemas.

\n',summary:"

Return the rules from the given report schemas.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"report-schemas-or-ids",type:"item()",occurrence:"*",description:""}],returns:{type:"object()*",description:"the rules from the report schemas."},errors:[]}],variables:[]},"http://www.28msec.com/modules/lock":{ns:"http://www.28msec.com/modules/lock",description:" Sausalito provides a an application level locking mechanism that can be\n used e.g. to ensure exclusive access to data.\n As the store ensures atomicity of of single document updates, atomic\n updates to multiple documents are implemented using this mechanism.\n Locks can be acquired and re-acquired at any time during a request and\n are released at the end of the request.\n",sees:[],authors:['28msec'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.28msec.com/modules/lock",prefix:"lock"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"try-acquire",qname:"lock:try-acquire",signature:"($lock-name as xs:string) as xs:boolean external",description:' Tries to acquire a lock.\n This operation is non-blocking if the lock cannot be acquired immediately.\n To check and modify the stock of a product wihtout interference from\n concurrent requests a lock could be used like this:\n
\n if (lock:try-acquire("stock-update"))\n then\n   if (stock:check($product-id))\n   then\n     {\n       order:finalize($order-id);\n       stock:decrement($product-id);\n     }\n   else\n     order:hold($order-id);\n else\n   ...\n 
\n',summary:"

Tries to acquire a lock.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"lock-name",type:"xs:string",occurrence:null,description:'
The name of the lock.
'}],returns:{type:"xs:boolean",description:"true if the lock could be acquired, false otherwise."},errors:[]},{isDocumented:!0,arity:2,name:"try-acquire",qname:"lock:try-acquire",signature:"($lock-name as xs:string, $reason as xs:string) as xs:boolean external",description:" tries to acquire a lock\n",summary:"

tries to acquire a lock\n

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"lock-name",type:"xs:string",occurrence:null,description:'
The name of the lock.
'},{name:"reason",type:"xs:string",occurrence:null,description:'
a reason for the acquisition of the lock that can be used for
'}],returns:{type:"xs:boolean",description:"true if the lock could be acquired, false otherwise."},errors:[]}],variables:[]},"http://www.zorba-xquery.com/modules/xqdoc/html":{ns:"http://www.zorba-xquery.com/modules/xqdoc/html",description:' Convert an XQDoc document into an HTML document.\n This module contains a single convert() function\n that transform an XQDoc document into an HTML document.\n Usage:\n
\n let $xqdoc := xqdoc:xqdoc("http://expath.org/ns/file")\n return html:convert($xqdoc)\n 
\n',sees:[],authors:['William Candillon wcandillon at gmail dot com'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.zorba-xquery.com/modules/xqdoc/html",prefix:"html"},{uri:"http://www.w3.org/2010/xslt-xquery-serialization",prefix:"o"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://www.xqdoc.org/1.0",prefix:"xq"}],functions:[{isDocumented:!1,arity:1,name:"convert",qname:"html:convert",signature:"($xqdoc as element(xq:xqdoc)) as element(div)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"xqdoc",type:"element(xq:xqdoc)",occurrence:null,description:""}],returns:{type:"element(div)",description:""},errors:[]}],variables:[]},"http://api.28.io/model":{ns:"http://api.28.io/model",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"",prefix:"an"},{uri:"http://zorba.io/modules/store/static/collections/ddl",prefix:"cddl"},{uri:"http://zorba.io/modules/store/static/collections/dml",prefix:"cdml"},{uri:"http://zorba.io/modules/store/static/indexes/ddl",prefix:"iddl"},{uri:"http://zorba.io/modules/store/static/indexes/dml",prefix:"idml"},{uri:"http://api.28.io/model",prefix:"model"},{uri:"http://www.zorba-xquery.com/schemas/pul",prefix:"pul"},{uri:"http://zorba.io/modules/reference",prefix:"ref"},{uri:"http://www.zorba-xquery.com/schemas/xdm",prefix:"xdm"}],functions:[{isDocumented:!1,arity:1,name:"applyPUL",qname:"model:applyPUL",signature:"($pul as schema-element(pul:pending-update-list))",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"pul",type:"schema-element(pul:pending-update-list)",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"applyPULOp",qname:"model:applyPULOp",signature:"($pul)",description:"",summary:"",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"pul",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"build-nodes",qname:"model:build-nodes",signature:"($definition)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"definition",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!0,arity:1,name:"collection-qname",qname:"model:collection-qname",signature:"($name as xs:string) as xs:QName",description:" Returns the QName for a collection. Returns the empty sequence if no collection with the given name exists.\n",summary:"

Returns the QName for a collection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the collection as string
'}],returns:{type:"xs:QName",description:"the QName for the collection or the empty sequence"},errors:[]},{isDocumented:!1,arity:2,name:"delete-node-collection",qname:"model:delete-node-collection",signature:"($collection as xs:QName, $noderef as xs:anyURI?)",description:"",summary:"",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"collection",type:"xs:QName",occurrence:null,description:""},{name:"noderef",type:"xs:anyURI",occurrence:"?",description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"delete-node",qname:"model:delete-node",signature:"($noderef as xs:anyURI)",description:"",summary:"",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"noderef",type:"xs:anyURI",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"element-node",qname:"model:element-node",signature:"($definition as schema-element(xdm:element))",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"definition",type:"schema-element(xdm:element)",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"find-keys",qname:"model:find-keys",signature:"($collection)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"collection",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!0,arity:0,name:"get-collection-names",qname:"model:get-collection-names",signature:"() as xs:string*",description:" Returns all collection names\n",summary:"

Returns all collection names\n

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string*",description:"collection names as a sequence of strings"},errors:[]},{isDocumented:!0,arity:1,name:"get-collection-size",qname:"model:get-collection-size",signature:"($name as xs:string) as xs:integer",description:" Returns the size of a collection\n",summary:"

Returns the size of a collection\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the collection as string
'}],returns:{type:"xs:integer",description:"the size of the collection"},errors:['if the collection chosen by $name does not exist']},{isDocumented:!0,arity:1,name:"get-collection",qname:"model:get-collection",signature:"($name as xs:string) as node()*",description:" Returns the whole collection with a given name\n",summary:"

Returns the whole collection with a given name\n

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
name of collection to return
'}],returns:{type:"node()*",description:"sequence of nodes of the collection"},errors:[]},{isDocumented:!0,arity:4,name:"get-collection",qname:"model:get-collection",signature:"($name as xs:string, $first-noderef as xs:anyURI?, $offset as xs:integer?, $limit as xs:integer)",description:' Returns "a page" of the collection (a part)\n',summary:'

Returns "a page" of the collection (a part)\n

',annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the collection as string
'},{name:"first-noderef",type:"xs:anyURI",occurrence:"?",description:""},{name:"offset",type:"xs:integer",occurrence:"?",description:""},{name:"limit",type:"xs:integer",occurrence:null,description:""}],returns:{type:null,description:"a sequence of nodes from the collection"},errors:[]},{isDocumented:!1,arity:4,name:"get-column-id",qname:"model:get-column-id",signature:"($basepath as xs:string?, $name as xs:string, $isattribute as xs:boolean, $columns) as xs:integer",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"basepath",type:"xs:string",occurrence:"?",description:""},{name:"name",type:"xs:string",occurrence:null,description:""},{name:"isattribute",type:"xs:boolean",occurrence:null,description:""},{name:"columns",type:null,occurrence:null,description:""}],returns:{type:"xs:integer",description:""},errors:[]},{isDocumented:!0,arity:0,name:"get-index-names",qname:"model:get-index-names",signature:"() as xs:string*",description:" Returns all index names\n",summary:"

Returns all index names\n

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string*",description:"index names as a sequence of strings"},errors:[]},{isDocumented:!1,arity:2,name:"get-index-point",qname:"model:get-index-point",signature:"($index-name as xs:string, $index-key)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"index-name",type:"xs:string",occurrence:null,description:""},{name:"index-key",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"get-node-group",qname:"model:get-node-group",signature:"($noderef as xs:anyURI)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"noderef",type:"xs:anyURI",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"get-node-path",qname:"model:get-node-path",signature:"($node)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"get-node",qname:"model:get-node",signature:"($noderef as xs:anyURI)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"noderef",type:"xs:anyURI",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!0,arity:1,name:"index-qname",qname:"model:index-qname",signature:"($name as xs:string) as xs:QName",description:" Returns the QName for an index. Returns the empty sequence if no index with the given name exists.\n",summary:"

Returns the QName for an index.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the index as string
'}],returns:{type:"xs:QName",description:"the QName for the index or the empty sequence"},errors:[]},{isDocumented:!1,arity:3,name:"insert-attribute",qname:"model:insert-attribute",signature:"($noderef as xs:anyURI, $attribute as xs:string, $value)",description:"",summary:"",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"noderef",type:"xs:anyURI",occurrence:null,description:""},{name:"attribute",type:"xs:string",occurrence:null,description:""},{name:"value",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:4,name:"insert-node-collection-ordered",qname:"model:insert-node-collection-ordered",signature:"($collection as xs:QName, $noderef as xs:anyURI?, $position as xs:string, $nodes)",description:"",summary:"",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"collection",type:"xs:QName",occurrence:null,description:""},{name:"noderef",type:"xs:anyURI",occurrence:"?",description:""},{name:"position",type:"xs:string",occurrence:null,description:""},{name:"nodes",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:4,name:"insert-node-collection",qname:"model:insert-node-collection",signature:"($collection as xs:QName, $noderef as xs:anyURI?, $position as xs:string, $nodes)",description:"",summary:"",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"collection",type:"xs:QName",occurrence:null,description:""},{name:"noderef",type:"xs:anyURI",occurrence:"?",description:""},{name:"position",type:"xs:string",occurrence:null,description:""},{name:"nodes",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:5,name:"insert-node-collection",qname:"model:insert-node-collection",signature:"($collection as xs:QName, $noderef as xs:anyURI?, $position as xs:string, $nodes, $validate as xs:boolean)",description:"",summary:"",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"collection",type:"xs:QName",occurrence:null,description:""},{name:"noderef",type:"xs:anyURI",occurrence:"?",description:""},{name:"position",type:"xs:string",occurrence:null,description:""},{name:"nodes",type:null,occurrence:null,description:""},{name:"validate",type:"xs:boolean",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"insert-node",qname:"model:insert-node",signature:"($noderef as xs:anyURI, $position as xs:string, $newnodes)",description:"",summary:"",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"noderef",type:"xs:anyURI",occurrence:null,description:""},{name:"position",type:"xs:string",occurrence:null,description:""},{name:"newnodes",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:4,name:"make-table-row",qname:"model:make-table-row",signature:"($idx, $node, $columns, $namespaces)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"idx",type:null,occurrence:null,description:""},{name:"node",type:null,occurrence:null,description:""},{name:"columns",type:null,occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:5,name:"make-table-row",qname:"model:make-table-row",signature:"($node, $path as xs:string?, $row, $columns, $namespaces)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"node",type:null,occurrence:null,description:""},{name:"path",type:"xs:string",occurrence:"?",description:""},{name:"row",type:null,occurrence:null,description:""},{name:"columns",type:null,occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"make-table",qname:"model:make-table",signature:"($nodes, $namespaces)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"nodes",type:null,occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"node-name",qname:"model:node-name",signature:"($node as element(*), $namespaces) as xs:string",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"node",type:"element(*)",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!1,arity:2,name:"node-path-index",qname:"model:node-path-index",signature:"($node as node(), $parent as node()) as xs:integer?",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:null,description:""},{name:"parent",type:"node()",occurrence:null,description:""}],returns:{type:"xs:integer?",description:""},errors:[]},{isDocumented:!1,arity:2,name:"node-prefix",qname:"model:node-prefix",signature:"($node as element(*), $namespaces) as xs:string?",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"node",type:"element(*)",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!1,arity:1,name:"node-reference",qname:"model:node-reference",signature:"($node) as xs:string",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:null,occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!1,arity:1,name:"node",qname:"model:node",signature:"($definition)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"definition",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"rename-node",qname:"model:rename-node",signature:"($noderef as xs:anyURI, $name as xs:QName)",description:"",summary:"",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"noderef",type:"xs:anyURI",occurrence:null,description:""},{name:"name",type:"xs:QName",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"replace-node",qname:"model:replace-node",signature:"($noderef as xs:anyURI, $nodes)",description:"",summary:"",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"noderef",type:"xs:anyURI",occurrence:null,description:""},{name:"nodes",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"replace-value",qname:"model:replace-value",signature:"($noderef as xs:anyURI, $value)",description:"",summary:"",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"noderef",type:"xs:anyURI",occurrence:null,description:""},{name:"value",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"resolve-qname",qname:"model:resolve-qname",signature:"($name as xs:QName, $namespaces) as xs:string",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!1,arity:1,name:"type-save",qname:"model:type-save",signature:"($val) as xs:string",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"val",type:null,occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!1,arity:1,name:"type",qname:"model:type",signature:"($val as xs:anyAtomicType?) as xs:string",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"val",type:"xs:anyAtomicType",occurrence:"?",description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!1,arity:1,name:"unused-prefix",qname:"model:unused-prefix",signature:"($namespaces) as xs:string",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]}],variables:[]},"http://api.28.io/validation":{ns:"http://api.28.io/validation",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"http://zorba.io/modules/reflection",prefix:"reflection"},{uri:"http://www.28msec.com/modules/http/response",prefix:"resp"},{uri:"http://api.28.io/validation",prefix:"validate"}],functions:[{isDocumented:!1,arity:3,name:"by-schema-array",qname:"validate:by-schema-array",signature:"($obj, $schema as array(), $path as xs:string)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"obj",type:null,occurrence:null,description:""},{name:"schema",type:"array()",occurrence:null,description:""},{name:"path",type:"xs:string",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"by-schema-obj",qname:"validate:by-schema-obj",signature:"($obj as object(), $schema as object(), $path as xs:string)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"obj",type:"object()",occurrence:null,description:""},{name:"schema",type:"object()",occurrence:null,description:""},{name:"path",type:"xs:string",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"by-schema-primitive",qname:"validate:by-schema-primitive",signature:"($obj, $schema-type as xs:string, $path)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"obj",type:null,occurrence:null,description:""},{name:"schema-type",type:"xs:string",occurrence:null,description:""},{name:"path",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"by-schema",qname:"validate:by-schema",signature:"($obj as object(), $schema as object())",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"obj",type:"object()",occurrence:null,description:""},{name:"schema",type:"object()",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"expression",qname:"validate:expression",signature:"($expression as xs:string, $is-domain-expr as xs:boolean) as xs:boolean",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"expression",type:"xs:string",occurrence:null,description:""},{name:"is-domain-expr",type:"xs:boolean",occurrence:null,description:""}],returns:{type:"xs:boolean",description:""},errors:[]},{isDocumented:!1,arity:1,name:"type",qname:"validate:type",signature:"($type as xs:string) as xs:boolean",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:boolean",description:""},errors:[]}],variables:[]},"http://api.28.io/sandbox":{ns:"http://api.28.io/sandbox",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"http://zorba.io/modules/reference",prefix:"ref"},{uri:"http://zorba.io/modules/reflection",prefix:"reflection"},{uri:"http://api.28.io/sandbox",prefix:"sandbox"}],functions:[{isDocumented:!1,arity:3,name:"filter",qname:"sandbox:filter",signature:"($nodes, $xpath as xs:string, $namespaces)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:null,occurrence:null,description:""},{name:"xpath",type:"xs:string",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"get-names",qname:"sandbox:get-names",signature:"($nodes, $path as xs:string, $namespaces)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:null,occurrence:null,description:""},{name:"path",type:"xs:string",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"get-values",qname:"sandbox:get-values",signature:"($nodes, $path as xs:string, $namespaces)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:null,occurrence:null,description:""},{name:"path",type:"xs:string",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"key-constraint",qname:"sandbox:key-constraint",signature:"($nodes, $condition as xs:string, $namespaces)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:null,occurrence:null,description:""},{name:"condition",type:"xs:string",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:1,name:"ns-declarations",qname:"sandbox:ns-declarations",signature:"($namespaces) as xs:string",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!1,arity:4,name:"order",qname:"sandbox:order",signature:"($nodes, $path as xs:string, $descending as xs:boolean, $namespaces)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:null,occurrence:null,description:""},{name:"path",type:"xs:string",occurrence:null,description:""},{name:"descending",type:"xs:boolean",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:3,name:"tuple-constraint",qname:"sandbox:tuple-constraint",signature:"($nodes, $condition as xs:string, $namespaces)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"nodes",type:null,occurrence:null,description:""},{name:"condition",type:"xs:string",occurrence:null,description:""},{name:"namespaces",type:null,occurrence:null,description:""}],returns:{type:null,description:""},errors:[]}],variables:[]},"http://zorba.io/modules/store/static/collections/dml":{ns:"http://zorba.io/modules/store/static/collections/dml",description:' This modules provides a set of functions to modify a collection\n and retrieve the items contained in a particular collection.\n

\n This module is part of\n Zorba\'s XQuery Data Definition Facility.\n All the collections managed by this module have to be pre-declared in the\n prolog of a module.\n Please refer to the\n general documentation\n for more information and examples.\n',sees:['Data Lifecycle','XQuery Data Definition Facility','http://zorba.io/modules/store/static/collections/ddl','http://zorba.io/modules/store/static/indexes/ddl','http://zorba.io/modules/store/static/indexes/dml','http://zorba.io/modules/store/static/integrity-constraints/ddl','http://zorba.io/modules/store/static/integrity-constraints/dml','http://zorba.io/errors'],authors:['Nicolae Brinza, Matthias Brantner, David Graf, Till Westmann, Markos Zaharioudakis'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://zorba.io/modules/store/static/collections/dml",prefix:"cdml"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:3,name:"apply-insert-after",qname:"cdml:apply-insert-after",signature:"($name as xs:QName, $pos as item(), $content as item()*) as item()* external",description:' This function does the same thing as the insert-after()\n function except it immediately applies the resulting pending updates and\n returns the items that have been inserted.\n',summary:"

This function does the same thing as the insert-after() \n function except it immediately applies the resulting pending updates and\n returns the items that have been inserted.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to insert into.
'},{name:"pos",type:"item()",occurrence:null,description:""},{name:"content",type:"item()",occurrence:"*",description:'
The sequence of items whose copies to insert.
'}],returns:{type:"item()*",description:"The sequence of items that have been inserted."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is const, append-only, or queue.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDTY0001 if $content does not match the expected type as specified in the collection declaration according to the rules for SequenceType Matching.','zerr:ZDDY0011 if $target is not in the collection.']},{isDocumented:!0,arity:3,name:"apply-insert-before",qname:"cdml:apply-insert-before",signature:"($name as xs:QName, $target as item(), $content as item()*) as item()* external",description:' This function does the same thing as insert-before() except it\n immediately applies the resulting pending updates and returns the items that\n have been inserted.\n',summary:"

This function does the same thing as insert-before() except it\n immediately applies the resulting pending updates and returns the items that\n have been inserted.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to insert into.
'},{name:"target",type:"item()",occurrence:null,description:'
The item in the collection before which $content will be inserted.
'},{name:"content",type:"item()",occurrence:"*",description:'
The sequence of items whose copies to insert.
'}],returns:{type:"item()*",description:"The sequence of items that have been inserted."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection $name is const, append-only, or queue.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDTY0001 if $content does not match the expected type as specified in the collection declaration according to the rules for SequenceType Matching.','zerr:ZDDY0011 if $target is not an item that is contained in the collection.']},{isDocumented:!0,arity:2,name:"apply-insert-first",qname:"cdml:apply-insert-first",signature:"($name as xs:QName, $content as item()*) as item()* external",description:' This function does the same thing as insert-first() except it\n immediately applies the resulting pending updates and returns the items that\n have been inserted.\n',summary:"

This function does the same thing as insert-first() except it\n immediately applies the resulting pending updates and returns the items that\n have been inserted.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to insert into.
'},{name:"content",type:"item()",occurrence:"*",description:'
The sequence of items whose copies to insert.
'}],returns:{type:"item()*",description:"The Sequence of items that have been inserted."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection $name is append-only, const, or queue.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDTY0001 if $content does not match the expected type as specified in the collection declaration according to the rules for SequenceType Matching.']},{isDocumented:!0,arity:2,name:"apply-insert-last",qname:"cdml:apply-insert-last",signature:"($name as xs:QName, $content as item()*) as item()* external",description:' This function does the same thing as insert-last() except it\n immediately applies the resulting pending updates and returns the items that\n have been inserted.\n',summary:"

This function does the same thing as insert-last() except it\n immediately applies the resulting pending updates and returns the items that\n have been inserted.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to insert into.
'},{name:"content",type:"item()",occurrence:"*",description:'
The sequence of items whose copies to insert.
'}],returns:{type:"item()*",description:"The sequence of items that have been inserted."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is const.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDTY0001 if $content does not match the expected type as specified in the collection declaration according to the rules for SequenceType Matching.']},{isDocumented:!0,arity:2,name:"apply-insert",qname:"cdml:apply-insert",signature:"($name as xs:QName, $content as item()*) as item()* external",description:' This function does the same thing as insert() except it\n immediately applies the resulting pending updates and returns the items that\n have been inserted.\n',summary:"

This function does the same thing as insert() except it\n immediately applies the resulting pending updates and returns the items that\n have been inserted.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to insert into.
'},{name:"content",type:"item()",occurrence:"*",description:'
The sequence of items whose copies to insert.
'}],returns:{type:"item()*",description:"The sequence of items that have been inserted."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is append-only, const, or queue.','zerr:ZDTY0001 if $content does not match the expected type as specified in the collection declaration according to the rules for SequenceType Matching.']},{isDocumented:!0,arity:1,name:"collection-name",qname:"cdml:collection-name",signature:"($item as item()) as xs:QName external",description:" Gets the name of the collection the given item (node or JSON item) belongs\n to.\n",summary:"

Gets the name of the collection the given item (node or JSON item) belongs\n to.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"item",type:"item()",occurrence:null,description:'
The item for which to get the name of its collection.
'}],returns:{type:"xs:QName",description:"The name of the collection to which the given item belongs."},errors:['zerr:ZDDY0011 if $item does not belong to a collection.']},{isDocumented:!0,arity:1,name:"collection",qname:"cdml:collection",signature:"($name as xs:QName) as item()* external",description:" Gets the sequence of nodes or JSON items from a collection.\n",summary:"

Gets the sequence of nodes or JSON items from a collection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection.
'}],returns:{type:"item()*",description:"The seqnence of items from the collection."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.']},{isDocumented:!0,arity:2,name:"collection",qname:"cdml:collection",signature:"($name as xs:QName, $skip as xs:integer) as item()* external",description:" Gets the sequence of nodes or JSON items from a collection.\n",summary:"

Gets the sequence of nodes or JSON items from a collection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection.
'},{name:"skip",type:"xs:integer",occurrence:null,description:'
The initial number of items to skip.
'}],returns:{type:"item()*",description:"The (sub)sequence of items from the collection."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.']},{isDocumented:!0,arity:3,name:"collection",qname:"cdml:collection",signature:"($name as xs:QName, $start as xs:anyURI, $skip as xs:integer) as item()* external",description:' Gets the sequence of items (nodes or JSON items) from a collection.\n The parameters $start and $skip can be used to\n skip over some items at the beginning of the collection.\n If both are given, both are applied:\n first $start to skip to the referenced item\n and then $skip to skip that additional number of items.\n',summary:"

Gets the sequence of items (nodes or JSON items) from a collection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection.
'},{name:"start",type:"xs:anyURI",occurrence:null,description:'
The reference to the first item to return.
'},{name:"skip",type:"xs:integer",occurrence:null,description:'
The number of additional items to skip.
'}],returns:{type:"item()*",description:"The sub-sequence from the collection."},errors:['zerr:ZAPI0028 If the given URI is not a valid node position computed by the np:node-position function.','zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZSTR0066 if $start does not reference a node from the collection.']},{isDocumented:!0,arity:1,name:"delete-first",qname:"cdml:delete-first",signature:"($name as xs:QName) external",description:" Deletes the first item from a collection.\n",summary:"

Deletes the first item from a collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to delete from.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, deletes the first item from the collection."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is const or append-only.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDDY0011 if the collection is empty.']},{isDocumented:!0,arity:2,name:"delete-first",qname:"cdml:delete-first",signature:"($name as xs:QName, $number as xs:integer) external",description:' Deletes the first N items from a collection.\n',summary:"

Deletes the first N items from a collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to delete from.
'},{name:"number",type:"xs:integer",occurrence:null,description:'
The number of items to delete.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, deletes the items from the collection."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is const or append-only.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDDY0011 if the collection contains less than $number items.']},{isDocumented:!0,arity:1,name:"delete-last",qname:"cdml:delete-last",signature:"($name as xs:QName) external",description:" Deletes the last item from a collection.\n",summary:"

Deletes the last item from a collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to delete from.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, deletes the last item from the collection."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is const, append-only, or queue.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDDY0011 if the collection is empty.']},{isDocumented:!0,arity:2,name:"delete-last",qname:"cdml:delete-last",signature:"($name as xs:QName, $number as xs:integer) external",description:' Deletes the last N items from a collection.\n',summary:"

Deletes the last N items from a collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to delete from.
'},{name:"number",type:"xs:integer",occurrence:null,description:'
The number of items to delete.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, deletes the items."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDDY0011 if the collection contains less than $number items.']},{isDocumented:!0,arity:1,name:"delete",qname:"cdml:delete",signature:"($items as item()*) external",description:" Deletes items (nodes or JSON items) from a collection.\n",summary:"

Deletes items (nodes or JSON items) from a collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"items",type:"item()",occurrence:"*",description:'
The items in the collection to delete.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, deletes the items from their collections."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is const, append-only, or queue.','zerr:ZDDY0011 if any item in $items is not a member of a collection or not all items belong to the same collection.']},{isDocumented:!0,arity:2,name:"edit",qname:"cdml:edit",signature:"($target as item(), $content as item()) external",description:" Edits the first supplied item so as to make it look exactly like a copy of\n the second supplied item while retaining its original identity.\n",summary:"

Edits the first supplied item so as to make it look exactly like a copy of\n the second supplied item while retaining its original identity.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"target",type:"item()",occurrence:null,description:'
The target item to be edited.
'},{name:"content",type:"item()",occurrence:null,description:'
The item that serves as an edit goal.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, performs the edit."},errors:['zerr:ZDDY0001 if the collection to which $target belongs is not declared.','zerr:ZDDY0003 if the collection to which $target belongs is not available.','zerr:ZDDY0006 if the collection to which $target belongs is append-only, const, or queue.','zerr:ZDDY0017 if $target is not a member of a collection.','zerr:ZDDY0037 if the collection is append-only.','zerr:ZDDY0038 if the collection is a queue.','zerr:ZDDY0039 if $target is not a root.','zerr:ZDDY0040 if $target cannot be updated to match the content (for example, because the target is a node and the content is an object).','zerr:ZDTY0001 if $content does not match the expected type (as specified in the collection declaration) according to the rules for SequenceType Matching.']},{isDocumented:!0,arity:1,name:"index-of",qname:"cdml:index-of",signature:"($item as item()) as xs:integer external",description:" Gets the position of the given item (node or JSON item) within its\n collection.\n",summary:"

Gets the position of the given item (node or JSON item) within its\n collection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"item",type:"item()",occurrence:null,description:'
The item to get the index of.
'}],returns:{type:"xs:integer",description:'The position of $item in its collection.'},errors:['zerr:ZDDY0011 if $item does not belong to a collection.','zerr:ZDDY0012 if the collection is unordered.']},{isDocumented:!0,arity:3,name:"insert-after",qname:"cdml:insert-after",signature:"($name as xs:QName, $target as item(), $content as item()*) external",description:" The insert-after function is an updating function that inserts copies of the\n given items (nodes or JSON items) into a collection at the position\n directly following the given target item.\n",summary:"

The insert-after function is an updating function that inserts copies of the\n given items (nodes or JSON items) into a collection at the position\n directly following the given target item.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to insert into.
'},{name:"target",type:"item()",occurrence:null,description:'
The item in the collection after which $content will be inserted.
'},{name:"content",type:"item()",occurrence:"*",description:'
The sequence of items whose copies to insert.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, inserts the items into the collection."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is const, append-only, or queue.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDTY0001 if $content does not match the expected type as specified in the collection declaration according to the rules for SequenceType Matching.','zerr:ZDDY0011 if $target is not a node that is contained in the collection.']},{isDocumented:!0,arity:3,name:"insert-before",qname:"cdml:insert-before",signature:"($name as xs:QName, $target as item(), $content as item()*) external",description:" Inserts copies of the given items (nodes or JSON items) into a collection at\n the position directly preceding the given target item.\n",summary:"

Inserts copies of the given items (nodes or JSON items) into a collection at\n the position directly preceding the given target item.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to insert into.
'},{name:"target",type:"item()",occurrence:null,description:'
The item in the collection before which $content will be inserted.
'},{name:"content",type:"item()",occurrence:"*",description:'
The sequence of items whose copies to insert.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, inserts the items into the collection."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is const, append-only, or queue.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDTY0001 if $content does not match the expected type as specified in the collection declaration according to the rules for SequenceType Matching.','zerr:ZDDY0011 if $target is not an item that is contained in the collection.']},{isDocumented:!0,arity:2,name:"insert-first",qname:"cdml:insert-first",signature:"($name as xs:QName, $content as item()*) external",description:" Inserts copies of the given items (nodes or JSON items) at the beginning of\n a collection.\n",summary:"

Inserts copies of the given items (nodes or JSON items) at the beginning of\n a collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to insert into.
'},{name:"content",type:"item()",occurrence:"*",description:'
The sequence of items whose copies to insert.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, inserts the items into the collection."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is append-only, const, or queue.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDTY0001 if $content does not match the expected type as specified in the collection declaration according to the rules for SequenceType Matching.']},{isDocumented:!0,arity:2,name:"insert-last",qname:"cdml:insert-last",signature:"($name as xs:QName, $content as item()*) external",description:" Inserts copies of the given items (nodes or JSON items) at the end of a\n collection.\n",summary:"

Inserts copies of the given items (nodes or JSON items) at the end of a\n collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to insert into.
'},{name:"content",type:"item()",occurrence:"*",description:'
The sequence of itemss whose copies to insert.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, inserts the items into the collection."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is const.','zerr:ZDDY0012 if the collection is unordered.','zerr:ZDTY0001 if $content does not match the expected type as specified in the collection declaration according to the rules for SequenceType Matching.']},{isDocumented:!0,arity:2,name:"insert",qname:"cdml:insert",signature:"($name as xs:QName, $content as item()*) external",description:" Inserts copies of the given items (nodes or JSON items) into a collection.\n Note that the insertion position of the items in the collection is not\n defined.\n",summary:"

Inserts copies of the given items (nodes or JSON items) into a collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection to insert into.
'},{name:"content",type:"item()",occurrence:"*",description:'
The sequence of items whose copies to insert.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, inserts the items into the collection."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.','zerr:ZDDY0006 if the collection is append-only, const, or queue.','zerr:ZDTY0001 if $content does not match the expected type as specified in the collection declaration according to the rules for SequenceType Matching.']},{isDocumented:!0,arity:1,name:"truncate",qname:"cdml:truncate",signature:"($name as xs:QName) external",description:" Deletes the entire contents of collection.\n Please note that applying this function can not be undone in case\n an error happens during the application of the containing PUL.\n",summary:"

Deletes the entire contents of collection.

",annotation_str:"",annotations:[],updating:!0,parameters:[{name:"name",type:"xs:QName",occurrence:null,description:'
The name of the collection whose content to delete.
'}],returns:{type:null,description:"An empty XDM instance and a pending update list that, once applied, deletes the nodes."},errors:['zerr:ZDDY0001 if the collection is not declared.','zerr:ZDDY0003 if the collection is not available.']}],variables:[]},"http://www.28msec.com/modules/http-request":{ns:"http://www.28msec.com/modules/http-request",description:' The request module provides functions for accessing\n information contained in the HTTP request used to evaluate the current\n query. For example, the param-names function can be used to\n retrieve all the names of the parameters contained in a request.\n',sees:[],authors:['Matthias Brantner'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://www.28msec.com/modules/http/request#2.0",prefix:"req"},{uri:"http://www.28msec.com/modules/http-request",prefix:"request"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:0,name:"binary-content",qname:"request:binary-content",signature:"() as xs:base64Binary",description:'

Returns the content of the request as base64Binary.

\n',summary:"

Returns the content of the request as base64Binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:base64Binary",description:"The content of the request as base64Binary."},errors:['request:no-binary-content if the content contained in the body of the request cannot be treated as binary because it is a request with multipart or url-encoded content.']},{isDocumented:!0,arity:1,name:"binary-part",qname:"request:binary-part",signature:"($ref as xs:string) as xs:base64Binary",description:'

Returns the value of a part as base64Binary.

\n

A part is identified by a reference that is the value of a\n src field returned by the request:parts function.

\n',summary:"

Returns the value of a part as base64Binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"ref",type:"xs:string",occurrence:null,description:'
the name of the part
'}],returns:{type:"xs:base64Binary",description:"the value of the part as base64Binary"},errors:['request:invalid-part if the part with the given name ($ref) does not exist','request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:0,name:"content-length",qname:"request:content-length",signature:"() as xs:integer?",description:'

Returns the length of the content in bytes.

\n

The value returned corresponds to the value of the HTTP\n content-length header. The function returns an empty sequence\n if this header does not exist in the request or its value\n could not be converted to item of type xs:integer

.\n',summary:"

Returns the length of the content in bytes.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:integer?",description:"The content-length in bytes of the content sent with this request or the empty sequence if the content-length header does not exist in the request."},errors:[]},{isDocumented:!0,arity:0,name:"content-type",qname:"request:content-type",signature:"() as xs:string?",description:'

Returns the content-type of the data sent with this request.

\n

Note that the content-type is only set for PUT and POST requests.

\n',summary:"

Returns the content-type of the data sent with this request.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string?",description:"The content-type of the request if it is a PUT or POST request. Otherwise, it returns the empty sequence."},errors:[]},{isDocumented:!0,arity:0,name:"header-accept",qname:"request:header-accept",signature:"() as object()*",description:'

Returns the values of the HTTP ACCEPT header.

\n

The data is returned as a sequence of objects\n as shown in the following example.

\n
\n {\n   "type" : "text",\n   "subtype" : "html",\n   "quality" : 1\n }\n 
\n',summary:"

Returns the values of the HTTP ACCEPT header.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()*",description:"The header values of the header ACCEPT or the empty sequence if the header is not contained in the request. The order of the returned objects reflects the order of the components in the header."},errors:['request:invalid-header if the accept header cannot be parsed']},{isDocumented:!0,arity:0,name:"header-names",qname:"request:header-names",signature:"() as xs:string*",description:'

Returns the names of all the HTTP headers in this request.

\n

Header fields are colon-separated name-value pairs, terminated\n by a carriage return (CR) and line feed (LF) character sequence. The\n names and values of each header are allowed to consist of US-ASCII\n characters only.

\n

The names of the headers are returned using upper-case letters.\n If a header with the same name is contained multiple times in a request,\n its name is only returned once. The order of the names in the resulting\n sequence does not reflect the order of the headers in the request. If\n a header does not have a value, it is as if the header does not exist\n in the request.

\n

Note that the header names user-agent and content-type are not\n returned by this function. They are returned by the corresponding\n functions of this module module\n (e.g. user-agent).

\n',summary:"

Returns the names of all the HTTP headers in this request.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string*",description:"The names of the headers of this request or the empty sequence if no headers are contained in the request."},errors:[]},{isDocumented:!0,arity:1,name:"header-value",qname:"request:header-value",signature:"($name as xs:string) as xs:string?",description:'

Returns the value of the HTTP header with the given name.

\n

Header fields are colon-separated name-value pairs, terminated\n by a carriage return (CR) and line feed (LF) character sequence. The\n names and values of each header are allowed to consist of US-ASCII\n characters only.

\n

Please note that header names are considered case-insensitive.\n Also note, that only one value is returned if multiple headers with the\n same names exist in the request. This value is a comma-separated list\n of the values of the headers in the order in which the headers appeared\n in the request.

\n

All headers having a name that starts with SAUSALITO_ are reserved\n and will not be returned by this function.

\n',summary:"

Returns the value of the HTTP header with the given name.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
The header name for which the value should be returned.
'}],returns:{type:"xs:string?",description:'The header value of the header with the $name argument or the empty sequence if no header with that name is contained in the request.'},errors:[]},{isDocumented:!0,arity:0,name:"headers",qname:"request:headers",signature:"() as object()",description:'

Returns an object containing the request\'s HTTP header names and\n values.

\n

Header fields are colon-separated name-value pairs, terminated\n by a carriage return (CR) and line feed (LF) character sequence. The\n names and values of each header are allowed to consist of US-ASCII\n characters only.

\n

The structure of the object is as shown in the following example:\n

\n 
\n

\n

All headers having a name that starts with SAUSALITO_ are reserved\n and will not be returned by this function.

\n',summary:"

Returns an object containing the request's HTTP header names and\n values.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:'The header value of the header with the $name argument or the empty sequence if no header with that name is contained in the request.'},errors:[]},{isDocumented:!0,arity:0,name:"method-delete",qname:"request:method-delete",signature:"() as xs:boolean",description:" Returns true if the HTTP method of this request is DELETE.\n",summary:"

Returns true if the HTTP method of this request is DELETE.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:boolean",description:"true if the HTTP method of this request is DELETE, false otherwise."},errors:[]},{isDocumented:!0,arity:0,name:"method-get",qname:"request:method-get",signature:"() as xs:boolean",description:" Returns true if the HTTP method of this request is GET.\n",summary:"

Returns true if the HTTP method of this request is GET.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:boolean",description:"true if the HTTP method of this request is GET, false otherwise."},errors:[]},{isDocumented:!0,arity:0,name:"method-head",qname:"request:method-head",signature:"() as xs:boolean",description:" Returns true if the HTTP method of this request is HEAD.\n",summary:"

Returns true if the HTTP method of this request is HEAD.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:boolean",description:"true if the HTTP method of this request is HEAD, false otherwise."},errors:[]},{isDocumented:!0,arity:0,name:"method-options",qname:"request:method-options",signature:"() as xs:boolean",description:" Returns true if the HTTP method of this request is OPTION.\n",summary:"

Returns true if the HTTP method of this request is OPTION.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:boolean",description:"true if the HTTP method of this request is OPTION, false otherwise."},errors:[]},{isDocumented:!0,arity:0,name:"method-post",qname:"request:method-post",signature:"() as xs:boolean",description:" Returns true if the HTTP method of this request is POST.\n",summary:"

Returns true if the HTTP method of this request is POST.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:boolean",description:"true if the HTTP method of this request is POST, false otherwise."},errors:[]},{isDocumented:!0,arity:0,name:"method-put",qname:"request:method-put",signature:"() as xs:boolean",description:" Returns true if the HTTP method of this request is PUT.\n",summary:"

Returns true if the HTTP method of this request is PUT.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:boolean",description:"true if the HTTP method of this request is PUT, false otherwise."},errors:[]},{isDocumented:!0,arity:0,name:"method",qname:"request:method",signature:"() as xs:string",description:'

Returns the name of the HTTP method used to make this request.

\n',summary:"

Returns the name of the HTTP method used to make this request.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:"The request method used to make this request (i.e. GET, POST, PUT, DELETE or HEAD)."},errors:[]},{isDocumented:!0,arity:0,name:"param-names",qname:"request:param-names",signature:"() as xs:string*",description:'

Returns the names of the parameters contained in the current request.

\n

Parameters are name-value pairs contained in the query string of the URL\n used to make this request. As defined in RFC 1738, the query string of a\n URL starts with a "?" character and ends with the character (if any).\n Additionally, such name-value pairs may be part of the request\'s body if\n it is a PUT or POST request and the content-type of the request is\n "application/x-www-form-urlencoded". Name-value pairs are separated\n using either the "&" or the ";" character.

\n

In general, the names and the values are precent-encoded. This function\n does the decoding of the parameters, i.e. it returns the values being\n not percent-encoded.

\n

Also, the names of each parameter (after being precent-decoded) are\n treated as UTF-8. Please see the http:param-names#1 function\n for retrieving parameter names submitted using a encoding other than UTF-8.\n

\n',summary:"

Returns the names of the parameters contained in the current request.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string*",description:"The names of all parameters in this request. The empty sequence is returned if there are none."},errors:[]},{isDocumented:!0,arity:1,name:"param-names",qname:"request:param-names",signature:"($encoding as xs:string) as xs:string*",description:'

Returns the names of the parameters contained in the current request.

\n

This function is similar to the request:param-names#0 function.\n However, the names are treated (after precent-decoding) using the\n given encoding supplied as parameter. For example, parameters might\n be encoded using the ISO-8859-1 encoding.

\n',summary:"

Returns the names of the parameters contained in the current request.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"encoding",type:"xs:string",occurrence:null,description:'
The encoding of the parameters in the request (e.g. ISO-8859-1).
'}],returns:{type:"xs:string*",description:"The names of all parameters in this request. The empty sequence is returned if there are none."},errors:['request:invalid-encoding if the given encoding is invalid or not supported.']},{isDocumented:!0,arity:1,name:"param-values",qname:"request:param-values",signature:"($name as xs:string) as xs:string*",description:'

Returns a sequence of parameter values for the given parameter name\n which are contained in the URL\'s query string or the body of a POST or PUT\n request.

\n

Parameters are name-value pairs contained in the query string of the URL\n used to make this request. As defined in RFC 1738, the query string of a\n URL starts with a "?" character and ends with the character (if any).\n Additionally, such name-value pairs may be part of the request\'s body if\n it is a PUT or POST request and the content-type of the request is\n "application/x-www-form-urlencoded". Name-value pairs are separated\n using either the "&" or the ";" character.

\n

In general, the names and the values are precent-encoded. This function\n does the decoding of the parameters, i.e. it returns the values being\n not percent-encoded.

\n

Also, the names and the values of each parameter (after being precent-decoded)\n are treated as UTF-8. Please see the http:param-values#3 function\n for retrieving parameters submitted using a encoding other than UTF-8.

\n

This function returns the empty-sequence if no parameter with the\n given name exists in this request. If you want the function to return\n a default value other than the empty sequence, use the\n http:param-values#2 function.

\n

A URL could contain the following query string:\n name1=value1&name2=value2;name1=value3&name3.\n name1=value1&name2=value2&name1=value3&name3.\n The name value pairs in this query string are\n

\n

\n',summary:"

Returns a sequence of parameter values for the given parameter name\n which are contained in the URL's query string or the body of a POST or PUT\n request.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
The name of the parameter whose value(s) should be returned.
'}],returns:{type:"xs:string*",description:"A sequence of values for the parameter with the given name. The empty sequence is returned if no parameter exists with the given name."},errors:[]},{isDocumented:!0,arity:2,name:"param-values",qname:"request:param-values",signature:"($name as xs:string, $default-values as xs:string*) as xs:string*",description:'

Returns a sequence of parameter values for the given parameter name\n which are contained in the URL\'s query string or the body of a POST or PUT\n request.

\n

This function is similar to the request:param-values#1 function.\n However, instead of returning the empty-sequence as a default value it returns\n the given default-values sequence if no parameter with the given name is found\n in this request.

\n',summary:"

Returns a sequence of parameter values for the given parameter name\n which are contained in the URL's query string or the body of a POST or PUT\n request.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
The name of the parameter whose value(s) should be returned.
'},{name:"default-values",type:"xs:string",occurrence:"*",description:""}],returns:{type:"xs:string*",description:"A sequence of values for the parameter with the given name. The sequence given as $default-values parameter is returned if no parameter exists with the given name."},errors:[]},{isDocumented:!0,arity:3,name:"param-values",qname:"request:param-values",signature:"($name as xs:string, $default-values as xs:string*, $encoding as xs:string) as xs:string*",description:'

Returns a sequence of parameter values for the given parameter name\n which are contained in the URL\'s query string or the body of a POST or PUT\n request.

\n

This function is similar to the request:param-values#2 function.\n However, the names and values are treated (after precent-decoding) using the\n given encoding supplied as third parameter. For example, parameters might\n be encoded using the ISO-8859-1 encoding.

\n',summary:"

Returns a sequence of parameter values for the given parameter name\n which are contained in the URL's query string or the body of a POST or PUT\n request.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
The name of the parameter whose value(s) should be returned.
'},{name:"default-values",type:"xs:string",occurrence:"*",description:""},{name:"encoding",type:"xs:string",occurrence:null,description:'
The encoding of the parameters in the request (e.g. ISO-8859-1)
'}],returns:{type:"xs:string*",description:"A sequence of values for the parameter with the given name. The sequence given as $default-values parameter is returned if no parameter exists with the given name."},errors:['request:invalid-encoding if the given encoding is invalid or not supported.']},{isDocumented:!0,arity:0,name:"params",qname:"request:params",signature:"() as object()",description:'

Returns an object containg the parameter names and values contained\n in the URL\'s query string or the body of a POST or PUT\n request.

\n

The structure of the object for the query string\n "param1=value1;param2&param2=value2"\n

\n {\n   "param1" : "value1",\n   "param2" : [ "", "value2" ]\n }\n 
\n

\n

Parameters are name-value pairs contained in the query string of the URL\n used to make this request. As defined in RFC 1738, the query string of a\n URL starts with a "?" character and ends with the character (if any).\n Additionally, such name-value pairs may be part of the request\'s body if\n it is a PUT or POST request and the content-type of the request is\n "application/x-www-form-urlencoded". Name-value pairs are separated\n using either the "&" or the ";" character.

\n

In general, the names and the values are precent-encoded. This function\n does the decoding of the parameters, i.e. it returns the values being\n not percent-encoded.

\n

Also, the names and the values of each parameter (after being precent-decoded)\n are treated as UTF-8. Please see the http:params#1 function\n for retrieving parameters submitted using a encoding other than UTF-8.

\n',summary:"

Returns an object containg the parameter names and values contained\n in the URL's query string or the body of a POST or PUT\n request.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:"An object containing all the parameter names and values. An empty object is returned if the request doesn't contain any parameters."},errors:[]},{isDocumented:!0,arity:1,name:"params",qname:"request:params",signature:"($encoding as xs:string) as object()",description:'

Returns an object containg the parameter names and values contained\n in the URL\'s query string or the body of a POST or PUT\n request.

\n

The structure of the object for the query string\n "param1=value1;param2&param2=value2"\n

\n {\n   "param1" : "value1",\n   "param2" : [ "", "value2" ]\n }\n 
\n

\n

Parameters are name-value pairs contained in the query string of the URL\n used to make this request. As defined in RFC 1738, the query string of a\n URL starts with a "?" character and ends with the character (if any).\n Additionally, such name-value pairs may be part of the request\'s body if\n it is a PUT or POST request and the content-type of the request is\n "application/x-www-form-urlencoded". Name-value pairs are separated\n using either the "&" or the ";" character.

\n

In general, the names and the values are precent-encoded. This function\n does the decoding of the parameters, i.e. it returns the values being\n not percent-encoded.

\n

The name and value of each parameter (after being percent-decoded) are treated\n in the encoding given by the $encoding paramter.

\n',summary:"

Returns an object containg the parameter names and values contained\n in the URL's query string or the body of a POST or PUT\n request.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"encoding",type:"xs:string",occurrence:null,description:'
The encoding of the parameters in the request (e.g. ISO-8859-1)
'}],returns:{type:"object()",description:"An object containing all the parameter names and values. An empty object is returned if the request doesn't contain any parameters."},errors:['request:invalid-encoding if the given encoding is invalid or not supported.']},{isDocumented:!0,arity:0,name:"parts",qname:"request:parts",signature:"() as object()?",description:'

Returns the metadata of all parts contained in a multipart request.

\n

The metadata is returned as an object\n as shown in the following example.

\n
\n {\n   "media-type" : "multipart/form-data; boundary=----------------------------93298e7a66a4",\n   "parts" : [ {\n     "headers" : {\n       "Content-Disposition" : "form-data; name=\\"upload\\"; filename=\\"tmp.txt\\"",\n       "Content-Type" : "text/plain"\n     },\n     "filename" : "tmp.txt",\n     "name" : "upload",\n     "src" : "urn:uuid:09be48d1-da0e-42c1-a115-a697e1779c45",\n     "size" : "153"\n   }, {\n     "headers" : {\n       "Content-Disposition" : "form-data; name=\\"press\\""\n     },\n     "name" : "press",\n     "src" : "urn:uuid:c80e0609-b703-4d47-9171-441eb397a562",\n     "size" : "2"\n   } ]\n }\n 
\n

The media-type field describes the content-type as given in the\n request. Specifically, its value is equal to the value returned by\n request:header-values("Content-Type")).

\n

Each of the array members of the parts field represents one\n part of the multipart request. Each such part contains a header field\n containing one field for each headers belonging to that part.\n The value of the src field can be used to retrieve the actual value\n of the part by passing it to the http:text-part or\n http:binary-part functions. The remaining fields represent a\n parameter of the Content-Disposition header as described in RFC 2183\n (e.g. filename, name, creation-date).

\n

Please note that recursive multipart content is not supported.

\n',summary:"

Returns the metadata of all parts contained in a multipart request.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()?",description:"an object representing the metadata of the multipart content or an empty sequence if there is no content."},errors:['request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:0,name:"path",qname:"request:path",signature:"() as xs:string",description:" Return the path component of the request URI. The path starts after the\n host and ends before the query string starts.\n",summary:"

Return the path component of the request URI.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:"The path component of the request URI"},errors:[]},{isDocumented:!0,arity:0,name:"query",qname:"request:query",signature:"() as xs:string",description:"

Returns the query string that was used to make this request.

\n

The query string contains the part of the request URL that\n starts with the '?' character to the end or the starting of the\n fragment (i.e. the '#' character).

\n",summary:"

Returns the query string that was used to make this request.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:"The query string part of the request's URL"},errors:[]},{isDocumented:!0,arity:0,name:"remote-addr",qname:"request:remote-addr",signature:"() as xs:string",description:'

Returns the IP address of the client to which this request\n is connected.

\n',summary:"

Returns the IP address of the client to which this request\n is connected.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:"The IP address on the client side to which this request is connected."},errors:[]},{isDocumented:!0,arity:0,name:"remote-port",qname:"request:remote-port",signature:"() as xs:int",description:'

Returns the port of the client to which this request is connected.

\n',summary:"

Returns the port of the client to which this request is connected.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:int",description:"The port on the client side to which this request is connected."},errors:[]},{isDocumented:!0,arity:0,name:"server-name",qname:"request:server-name",signature:"() as xs:string",description:'

Returns the server name of the server running the application.

\n

The web server\'s hostname or IP address.

\n',summary:"

Returns the server name of the server running the application.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:"The name of the server that runs the application accepting this request."},errors:[]},{isDocumented:!0,arity:0,name:"server-port",qname:"request:server-port",signature:"() as xs:int",description:'

Returns the sever port to which the client making the current request\n is connected.

\n',summary:"

Returns the sever port to which the client making the current request\n is connected.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:int",description:"The server port to which the client is connected."},errors:[]},{isDocumented:!0,arity:0,name:"text-content",qname:"request:text-content",signature:"() as xs:string",description:'

Returns the content of the request as string.

\n

The function returns the content of the request only\n if the content-type refers to a type that can be treated\n as text (e.g. text/* or application/xml). The function raises\n an error if the content cannot be treated as text.

\n

The text content is interpreted using the encoding/charset\n that is specified in the Content-Type header of the request. If\n no charset is specified, the default ISO-8859-1 is used. If a encoding\n other than the specified or default one should be used, the\n request:text-content#1 function should be used.

\n',summary:"

Returns the content of the request as string.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:"The content of the request as a string."},errors:['request:invalid-encoding if the encoding specified in the Content-Type header is invalid or not supported.','request:no-text-content if the content contained in the body of the request cannot be treated as text.']},{isDocumented:!0,arity:1,name:"text-content",qname:"request:text-content",signature:"($overwrite-encoding as xs:string) as xs:string",description:'

Returns the content of the request as string interpreting\n it with the given encoding.

\n

The function returns the content of the request only\n if the content-type refers to a type that can be treated\n as text (e.g. text/* or application/xml). The function raises\n an error if the content cannot be treated as text.

\n

The text content is interpreted using the given encoding/charset.\n That is, the charset specified in the Content-Type header of the request\n is ignored. An error is raised if the given encoding is invalid\n or not supported.

\n',summary:"

Returns the content of the request as string interpreting\n it with the given encoding.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"overwrite-encoding",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:"The content of the request as a string."},errors:['request:invalid-encoding if the encoding specified in the Content-Type header or the $overwrite-encoding parameter is invalid or not supported.','request:no-text-content if the content contained in the body of the request cannot be treated as text.']},{isDocumented:!0,arity:1,name:"text-part",qname:"request:text-part",signature:"($ref as xs:string) as xs:string",description:'

Returns the value of a part as string

\n

A part is identified by a reference that is the value of a\n src field returned by the request:parts function.

\n

The value of the text part is interpreted using the encoding/charset\n given in the headers of the part. If no encoding is given, the default\n US-ASCII is assumed.

\n',summary:"

Returns the value of a part as string \n A part is identified by a reference that is the value of a\n src field returned by the request:parts function.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"ref",type:"xs:string",occurrence:null,description:'
the name of the part
'}],returns:{type:"xs:string",description:"the value of the part as string"},errors:['request:invalid-encoding if the encoding given in the headers of the part is invalid or not supported.','request:no-text-content if the value of the part cannot be treated as text','request:invalid-part if the part with the given name ($ref) does not exist','request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:2,name:"text-part",qname:"request:text-part",signature:"($ref as xs:string, $overwrite-encoding as xs:string) as xs:string",description:'

Returns the value of a part as string interpreting\n it with the given encoding.

\n

A part is identified by a reference that is the value of a\n src field returned by the request:parts function.

\n',summary:"

Returns the value of a part as string interpreting\n it with the given encoding.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"ref",type:"xs:string",occurrence:null,description:'
the name of the part
'},{name:"overwrite-encoding",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:"the value of the part as string"},errors:['request:invalid-encoding if the encoding given using the $overwrite-encoding parameter is invalid or not supported.','request:no-text-content if the value of the part cannot be treated as text','request:invalid-part if the part with the given name ($ref) does not exist','request:non-multipart if the current request does not contain multipart content','request:invalid-multipart if the multipart content is invalid (e.g. the boundary is missing)']},{isDocumented:!0,arity:0,name:"uri",qname:"request:uri",signature:"() as xs:string",description:'

Returns the URI that was used to make this request.

\n

The value returned contains the part of the URL starting\n from the path to the end or the starting of the fragment (i.e.\n the \'#\' character).

\n',summary:"

Returns the URI that was used to make this request.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string",description:"The path and query string part of the request's URL"},errors:[]},{isDocumented:!0,arity:0,name:"user-agent",qname:"request:user-agent",signature:"() as xs:string?",description:'

Returns the user agent that made to perform the current request.

\n

This function returns the value of the User-Agent header\n contained in the current request.

\n',summary:"

Returns the user agent that made to perform the current request.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:string?",description:"The user agent used to perform this request of the empty sequence if there was no User-Agent header in the request."},errors:[]}],variables:[]},"http://www.28msec.com/modules/physical-reference":{ns:"http://www.28msec.com/modules/physical-reference",description:' The module provides functions to compute an immutable and opaque reference\n for nodes, objects, or arrays and to retrieve such items given their\n identifier, respectively.\n The identifiers are immutable, i.e. a identifier does not change\n during the items lifetime and cannot be reused for another item after the\n original item gets deleted.\n Identifiers are unique, in that, two different items will never have the same\n identifier. A item, at any time during its lifetime, can be retrieved by its\n identifier. Identifiers can only be computed for items stored in a MongoDB\n collection.\n

Please see the data lifecycle\n documentation about details on storing items.

\n',sees:['Data Lifecycle'],authors:['Federico Cavalieri'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.28msec.com/modules/physical-reference",prefix:"ref"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"dereference",qname:"ref:dereference",signature:"($arg as object()) as item()? external",description:'

Returns the node, object, or array identified by the given reference.

\n

The function returns the empty sequence if the item\n that is referenced does not exist.

\n',summary:"

Returns the node, object, or array identified by the given reference.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"object()",occurrence:null,description:'
the identifier of the item to retrieve.
'}],returns:{type:"item()?",description:"the item identified by the identifier passed as parameter or the empty-sequence if no item with that URI is found."},errors:['ref::REFERENCE is if the given identifier is invalid.']},{isDocumented:!0,arity:1,name:"reference",qname:"ref:reference",signature:"($arg as item()) as object() external",description:'

Returns an immutable and opaque reference (with type xs:anyURI) for\n a given node, object, or array.

\n

The generated identifier is immutable, i.e. a identifier does not\n change during the item\'s lifetime and cannot be reused for another node after\n the original item gets deleted.

\n

Identifiers are also unique, in that, two different items will never\n have the same identifier.

\n A item, at any time during its lifetime, can be retrieved by its\n identifier, using the ref:dereference function.\n Please note that a reference can only be retrieved for a JSON object or JSON\n array if the item is a member of a collection.\n',summary:"

Returns an immutable and opaque reference (with type xs:anyURI) for\n a given node, object, or array.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"arg",type:"item()",occurrence:null,description:'
the node, object, or array for which the URI should be computed
'}],returns:{type:"object()",description:"the opaque URI of the item."},errors:['ref::COLLECTION is raised if the object or array passed as argument is not a member of a collection.']}],variables:[]},"http://zorba.io/modules/data-cleaning/conversion":{ns:"http://zorba.io/modules/data-cleaning/conversion",description:'

This library module provides data conversion functions for processing calendar dates,\n temporal values, currency values, units of measurement, location names and postal addresses.

\n

\n

The logic contained in this module is not specific to any particular XQuery implementation.

\n',sees:[],authors:['Bruno Martins and Diogo Simões'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://zorba.io/modules/data-cleaning/conversion",prefix:"conversion"},{uri:"http://www.ecb.int/vocabulary/2002-08-01/eurofxref",prefix:"exref"},{uri:"http://www.zorba-xquery.com/modules/http-client",prefix:"http"},{uri:"http://zorba.io/modules/reflection",prefix:"reflection"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://api.whitepages.com/schema/",prefix:"wp"}],functions:[{isDocumented:!0,arity:1,name:"address-from-domain",qname:"conversion:address-from-domain",signature:"($domain as xs:string) as xs:string*",description:'

Uses a whois service to discover information about a given domain name, returning a sequence of strings\n for the addresses associated to the name.

\n',summary:"

Uses a whois service to discover information about a given domain name, returning a sequence of strings\n for the addresses associated to the name.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"domain",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string*",description:'A sequence of strings for the addresses associated to the domain name.

Attention : This function is still not implemented.

'},errors:[]},{isDocumented:!0,arity:2,name:"address-from-geocode",qname:"conversion:address-from-geocode",signature:"($lat as xs:double, $lon as xs:double) as xs:string*",description:'

Geospatial coordinates to placename converter, acting as a wrapper over the Yahoo! reverse geocoder service.

\n',summary:"

Geospatial coordinates to placename converter, acting as a wrapper over the Yahoo! reverse geocoder service.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"lat",type:"xs:double",occurrence:null,description:'
Geospatial latitude.
'},{name:"lon",type:"xs:double",occurrence:null,description:'
Geospatial longitude.
'}],returns:{type:"xs:string*",description:"The sequence of strings corresponding to the different components (e.g., street, city, country, etc.) of the place name that corresponds to the input geospatial coordinates."},errors:[]},{isDocumented:!0,arity:1,name:"address-from-phone",qname:"conversion:address-from-phone",signature:"($phone-number as xs:string) as xs:string*",description:'

Uses a White-pages Web service to discover information about a given phone number,\n returning a string for the address associated to the phone number.

\n',summary:"

Uses a White-pages Web service to discover information about a given phone number,\n returning a string for the address associated to the phone number.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"phone-number",type:"xs:string",occurrence:null,description:'
A string with 10 digits corresponding to the phone number.
'}],returns:{type:"xs:string*",description:"A string for the addresses associated to the phone number."},errors:[]},{isDocumented:!0,arity:1,name:"address-from-user",qname:"conversion:address-from-user",signature:"($name as xs:string) as xs:string*",description:'

Uses a White-pages Web service to discover information about a given name,\n returning a sequence of strings for the addresses associated to the name.

\n',summary:"

Uses a White-pages Web service to discover information about a given name,\n returning a sequence of strings for the addresses associated to the name.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
The name of person or organization.
'}],returns:{type:"xs:string*",description:"A sequence of strings for the addresses associated to the name."},errors:[]},{isDocumented:!0,arity:4,name:"currency-convert",qname:"conversion:currency-convert",signature:"($v as xs:double, $m1 as xs:string, $m2 as xs:string, $date as xs:string) as xs:double",description:'

Currency conversion function, acting as a wrapper over the WebService from the European Central Bank.

\n

\n

WebService documentation at http://www.ecb.int/stats/exchange/eurofxref/html/index.en.html

\n',summary:"

Currency conversion function, acting as a wrapper over the WebService from the European Central Bank.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"v",type:"xs:double",occurrence:null,description:'
The amount we wish to convert.
'},{name:"m1",type:"xs:string",occurrence:null,description:'
The source currency (e.g., "EUR").
'},{name:"m2",type:"xs:string",occurrence:null,description:'
The target currency (e.g., "USD").
'},{name:"date",type:"xs:string",occurrence:null,description:'
The reference date.
'}],returns:{type:"xs:double",description:"The value resulting from the conversion."},errors:['conversion:NOTSUPPORTED if the date, the source currency type or the target currency type are not known to the service.']},{isDocumented:!0,arity:1,name:"geocode-from-address",qname:"conversion:geocode-from-address",signature:"($q as xs:string*) as xs:double*",description:'

Placename to geospatial coordinates converter, acting as a wrapper over the Yahoo! geocoder service.

\n',summary:"

Placename to geospatial coordinates converter, acting as a wrapper over the Yahoo! geocoder service.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"q",type:"xs:string",occurrence:"*",description:'
A sequence of strings corresponding to the different components (e.g., street, city, country, etc.) of the place name.
'}],returns:{type:"xs:double*",description:"The pair of latitude and longitude coordinates associated with the input address."},errors:[]},{isDocumented:!0,arity:1,name:"name-from-domain",qname:"conversion:name-from-domain",signature:"($domain as xs:string) as xs:string*",description:'

Uses a whois service to discover information about a given domain name, returning a sequence of strings\n for the person or organization names associated to the name.

\n',summary:"

Uses a whois service to discover information about a given domain name, returning a sequence of strings\n for the person or organization names associated to the name.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"domain",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string*",description:'A sequence of strings for the person or organization names associated to the domain name.

Attention : This function is still not implemented.

'},errors:[]},{isDocumented:!0,arity:1,name:"phone-from-address",qname:"conversion:phone-from-address",signature:"($address as xs:string) as xs:string*",description:'

Uses a White-pages Web service to discover information about a given address,\n returning a sequence of strings for the phone number associated to the address.

\n',summary:"

Uses a White-pages Web service to discover information about a given address,\n returning a sequence of strings for the phone number associated to the address.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"address",type:"xs:string",occurrence:null,description:'
A string corresponding to the address (ex: 5655 E Gaskill Rd, Willcox, AZ, US).
'}],returns:{type:"xs:string*",description:"A sequence of strings for the phone number or organization's names associated to the address."},errors:[]},{isDocumented:!0,arity:1,name:"phone-from-domain",qname:"conversion:phone-from-domain",signature:"($domain as xs:string) as xs:string*",description:'

Uses a whois service to discover information about a given domain name, returning a sequence of strings\n for the phone numbers associated to the name.

\n',summary:"

Uses a whois service to discover information about a given domain name, returning a sequence of strings\n for the phone numbers associated to the name.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"domain",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string*",description:'A sequence of strings for the phone numbers associated to the domain name.

Attention : This function is still not implemented.

'},errors:[]},{isDocumented:!0,arity:1,name:"phone-from-user",qname:"conversion:phone-from-user",signature:"($name as xs:string) as xs:string*",description:'

Uses a White-pages Web service to discover information about a given name,\n returning a sequence of strings for the phone numbers associated to the name.

\n',summary:"

Uses a White-pages Web service to discover information about a given name,\n returning a sequence of strings for the phone numbers associated to the name.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
The name of person or organization.
'}],returns:{type:"xs:string*",description:"A sequence of strings for the phone numbers associated to the name."},errors:[]},{isDocumented:!0,arity:4,name:"unit-convert",qname:"conversion:unit-convert",signature:"($v as xs:double, $t as xs:string, $m1 as xs:string, $m2 as xs:string) as xs:double",description:'

Conversion function for units of measurement, acting as a wrapper over the CuppaIT WebService.

\n',summary:"

Conversion function for units of measurement, acting as a wrapper over the CuppaIT WebService.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"v",type:"xs:double",occurrence:null,description:'
The amount we wish to convert.
'},{name:"t",type:"xs:string",occurrence:null,description:'
The type of metric (e.g., "Distance")
'},{name:"m1",type:"xs:string",occurrence:null,description:'
The source measurement unit metric (e.g., "meter")
'},{name:"m2",type:"xs:string",occurrence:null,description:'
The target measurement unit metric (e.g., "mile")
'}],returns:{type:"xs:double",description:"The value resulting from the conversion"},errors:[]},{isDocumented:!0,arity:1,name:"user-from-address",qname:"conversion:user-from-address",signature:"($address as xs:string) as xs:string*",description:'

Uses a White-pages Web service to discover information about a given address,\n returning a sequence of strings for the names associated to the address.

\n',summary:"

Uses a White-pages Web service to discover information about a given address,\n returning a sequence of strings for the names associated to the address.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"address",type:"xs:string",occurrence:null,description:'
A string corresponding to the address (ex: 5655 E Gaskill Rd, Willcox, AZ, US).
'}],returns:{type:"xs:string*",description:"A sequence of strings for the person or organization's names associated to the address."},errors:[]},{isDocumented:!0,arity:1,name:"user-from-phone",qname:"conversion:user-from-phone",signature:"($phone-number as xs:string) as xs:string*",description:'

Uses a White-pages Web service to discover information about a given phone number,\n returning a sequence of strings for the name associated to the phone number.

\n',summary:"

Uses a White-pages Web service to discover information about a given phone number,\n returning a sequence of strings for the name associated to the phone number.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"phone-number",type:"xs:string",occurrence:null,description:'
A string with 10 digits corresponding to the phone number.
'}],returns:{type:"xs:string*",description:"A sequence of strings for the person or organization's name associated to the phone number."},errors:[]}],variables:[{name:"conversion:key",type:"item()*",description:'

The key to be used when accessing the White Pages Web service

\n'}]},"http://www.28msec.com/modules/jdbc":{ns:"http://www.28msec.com/modules/jdbc",description:' This module allows connecting, querying, and updating JDBC datasources.\n

The results of a query are returned as a sequence of objects:\n { column: value } .\n The type of the value depends on the type of the column in the database:\n \n \n \n \n \n \n \n
JDBC TypesJSONiq Type
integer, bigint, smallint, tinyintinteger
decimal, double, float, numeric, realdouble
boolean, bitboolean
char, blob, longvarchar, longnvarchar, nchar, nclob, nvarchar,\n varchar, sqlxml, date, time, timestampstring
binary, blob, longvarbinary, varbinary, array, datalink,\n java_object, other, refbase64Binary
\n

\n

\n If the value of a column is null, it is mapped to the JSONiq null value.\n

\n

Connecting to a JDBC source requires the following options:\n

\n

Examples:\n

\n

Currently, the 28.io platform supports connections to\n

\n

\n

If you are interested in connecting to other JDBC datasources,\n please contact us at support@28.io.

\n

Important Notice Regarding Function Determinism

\n

The non side-effecting functions:\n

\n are declared deterministic, which means that their results could be cached\n when invoked multiple times with the same arguments in the same query execution.

\n

To not use cached results you can use the following alternative functions:\n

\n which have been declared as being non deterministic.

\n',sees:[],authors:['Cristi Dumitru','Federico Cavalieri'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://www.28msec.com/modules/jdbc",prefix:"jdbc"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://www.zorba-xquery.com/modules/jdbc",prefix:"zjdbc"}],functions:[{isDocumented:!0,arity:1,name:"affected-rows",qname:"jdbc:affected-rows",signature:"($dataset as anyURI) as integer",description:" Return the number of affected rows of an updating DataSet.\n",summary:"

Return the number of affected rows of an updating DataSet.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"dataset",type:"anyURI",occurrence:null,description:'
The identifier of the DataSet.
'}],returns:{type:"integer",description:"the number of affected rows."},errors:['SQL008 DataSet doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"clear-params",qname:"jdbc:clear-params",signature:"($prepared-statement as anyURI) as empty-sequence()",description:" Clear all the parameters of the statement.\n",summary:"

Clear all the parameters of the statement.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"anyURI",occurrence:null,description:'
The identifier of the prepared statement.
'}],returns:{type:"empty-sequence()",description:"an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"commit",qname:"jdbc:commit",signature:"($conn as anyURI) as empty-sequence()",description:" Commit current transaction from an active connection.\n",summary:"

Commit current transaction from an active connection.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier of the connection with a transaction to be commited.
'}],returns:{type:"empty-sequence()",description:"an empty-sequence()"},errors:['SQL08003 Connection doesn\'t exist','SQL08000 Connection is closed','SQL001 Descriptive error, see error in attached message']},{isDocumented:!0,arity:0,name:"connect-nondeterministic",qname:"jdbc:connect-nondeterministic",signature:"() as anyURI",description:' Open a connection to a database using the default credentials.\n

This function has the same semantics as\n connect#0,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Open a connection to a database using the default credentials.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[],returns:{type:"anyURI",description:"an identifier that represents the connection to the server."},errors:['NOT-FOUND The default credentials not found.','SQL28000 Authentication failed.','SQL08001 Connection error.','SQL40003 Isolation level not supported.','SQL001 Descriptive error, see attached message.']},{isDocumented:!0,arity:1,name:"connect-nondeterministic",qname:"jdbc:connect-nondeterministic",signature:"($connection-config as item()) as anyURI",description:' Open a connection to a database.\n

This function has the same semantics as\n connect#1,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Open a connection to a database.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection-config",type:"item()",occurrence:null,description:'
object containing the configuration information.
'}],returns:{type:"anyURI",description:"an identifier that represents the connection to the server."},errors:['NOT-FOUND The specified credentials have not been found.','NOT-VALID Invalid connection information.','SQL28000 Authentication failed.','SQL08001 Connection error.','SQL40003 Isolation level not supported.','SQL001 Descriptive error, see attached message.']},{isDocumented:!0,arity:2,name:"connect-nondeterministic",qname:"jdbc:connect-nondeterministic",signature:"($connection-config as item(), $options as object()?) as anyURI",description:' Open a connection to a database.\n

This function has the same semantics as\n connect#2,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Open a connection to a database.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection-config",type:"item()",occurrence:null,description:'
object containing the configuration information.
'},{name:"options",type:"object()",occurrence:"?",description:'
object to specify additional connection options.
'}],returns:{type:"anyURI",description:"an identifier that represents the connection to the server."},errors:['NOT-FOUND The specified credentials have not been found.','NOT-VALID Invalid connection information.','SQL28000 Authentication failed.','SQL08001 Connection error.','SQL40003 Isolation level not supported.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:0,name:"connect",qname:"jdbc:connect",signature:"() as anyURI",description:' Open a connection to a database using the default credentials.\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The function returns an opaque URI that can represents the connection.\n This URI has to be passed to other functions of this module that require\n the $conn parameter as a first argument.

\n',summary:"

Open a connection to a database using the default credentials.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"anyURI",description:"an identifier that represents the connection to the server."},errors:['NOT-FOUND The default credentials not found.','SQL28000 Authentication failed.','SQL08001 Connection error.','SQL40003 Isolation level not supported.','SQL001 Descriptive error, see attached message.']},{isDocumented:!0,arity:1,name:"connect",qname:"jdbc:connect",signature:"($connection-config as item()) as anyURI",description:' Open a connection to a database.\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The input to the function contains the connection information.\n If a string is used, then the function will interpret it as credential name\n and will connect using the JDBC credentials with the specified name.\n If an object is used, then the function will open a connection using it.\n The object\'s required structure is described in the module\'s description.

\n

The function returns an opaque URI that can represents the connection.\n This URI has to be passed to other functions of this module that require\n the $conn parameter as a first argument.

\n',summary:"

Open a connection to a database.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection-config",type:"item()",occurrence:null,description:'
object containing the configuration information.
'}],returns:{type:"anyURI",description:"an identifier that represents the connection to the server."},errors:['NOT-FOUND The specified credentials have not been found.','NOT-VALID Invalid connection information.','SQL28000 Authentication failed.','SQL08001 Connection error.','SQL40003 Isolation level not supported.','SQL001 Descriptive error, see attached message.']},{isDocumented:!0,arity:2,name:"connect",qname:"jdbc:connect",signature:"($connection-config as item(), $options as object()?) as anyURI",description:' Open a connection to a database.\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

The input to the function contains the connection information.\n If a string is used, then the function will interpret it as credential name\n and will connect using the JDBC credentials with the specified name.\n If an object is used, then the function will open a connection using it.\n The object\'s required structure is described in the module\'s description.

\n

In addition to the connection configuration, the function allows to\n specify several options:\n

\n

The function returns an opaque URI that represents the connection.\n This URI has to be passed to other functions of this module that require\n the $conn parameter as a first argument.

\n',summary:"

Open a connection to a database.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection-config",type:"item()",occurrence:null,description:'
object containing the configuration information.
'},{name:"options",type:"object()",occurrence:"?",description:'
object to specify additional connection options.
'}],returns:{type:"anyURI",description:"an identifier that represents the connection to the server."},errors:['NOT-FOUND The specified credentials have not been found.','NOT-VALID Invalid connection information.','SQL28000 Authentication failed.','SQL08001 Connection error.','SQL40003 Isolation level not supported.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"connection-options",qname:"jdbc:connection-options",signature:"($conn as anyURI) as object()",description:' Return a set with options for a specified connection.\n The returned options are equal to the options specified in function jdbc:connect.\n Consequently, the options are specified as follows:\n \n',summary:"

Return a set with options for a specified connection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier of the connection.
'}],returns:{type:"object()",description:"an object with the connection options."},errors:['SQL08003 Connection doesn\'t exist','SQL08000 Connection is closed','SQL001 Descriptive error, see error in attached message']},{isDocumented:!0,arity:1,name:"execute-prepared",qname:"jdbc:execute-prepared",signature:"($prepared-statement as anyURI) as anyURI",description:" Execute SQL statements prepared with jdbc:prepare-statement,\n after setting the parameters values accordingly and returns an identifier to\n a Dataset.\n",summary:"

Execute SQL statements prepared with jdbc:prepare-statement,\n after setting the parameters values accordingly and returns an identifier to\n a Dataset.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"anyURI",occurrence:null,description:'
The identifier of the prepared statement.
'}],returns:{type:"anyURI",description:"the identifier of a DataSet."},errors:['SQL003 Prepared statement doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"execute-query-nondeterministic",qname:"jdbc:execute-query-nondeterministic",signature:"($conn as anyURI, $sql as string) as object()*",description:' Execute non-updating SQL statements.\n

This function has the same semantics as\n execute-query#2,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Execute non-updating SQL statements.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier of the active connection.
'},{name:"sql",type:"string",occurrence:null,description:'
The query string to be executed.
'}],returns:{type:"object()*",description:"an object with the result data rows from the query provided."},errors:['SQL08003 Connection doesn\'t exist.','SQL08000 Connection is closed.','SQL005 The statement is Updating type.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"execute-query-prepared-nondeterministic",qname:"jdbc:execute-query-prepared-nondeterministic",signature:"($prepared-statement as anyURI) as object()*",description:' Execute non-updating SQL statements prepared with jdbc:prepare-statement,\n after setting the parameters values accordingly.\n

This function has the same semantics as\n execute-query-prepared#1,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Execute non-updating SQL statements prepared with jdbc:prepare-statement,\n after setting the parameters values accordingly.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"anyURI",occurrence:null,description:'
The identifier of the prepared statement.
'}],returns:{type:"object()*",description:"an object with the result data rows from the query processed with the parameters provided."},errors:['SQL003 Prepared statement doesn\'t exist.','SQL005 The prepared statement is an updating query.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"execute-query-prepared",qname:"jdbc:execute-query-prepared",signature:"($prepared-statement as anyURI) as object()*",description:' Execute non-updating SQL statements prepared with jdbc:prepare-statement,\n after setting the parameters values accordingly.\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

Every row is represented by an object of column-value representation, as\n in the module description.

\n',summary:"

Execute non-updating SQL statements prepared with jdbc:prepare-statement,\n after setting the parameters values accordingly.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"prepared-statement",type:"anyURI",occurrence:null,description:'
The identifier of the prepared statement.
'}],returns:{type:"object()*",description:"an object with the result data rows from the query processed with the parameters provided."},errors:['SQL003 Prepared statement doesn\'t exist.','SQL005 The prepared statement is an updating query.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"execute-query",qname:"jdbc:execute-query",signature:"($conn as anyURI, $sql as string) as object()*",description:' Execute non-updating SQL statements.\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

Every row is represented by an object of column-value representation, as in\n the module description.

\n',summary:"

Execute non-updating SQL statements.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier of the active connection.
'},{name:"sql",type:"string",occurrence:null,description:'
The query string to be executed.
'}],returns:{type:"object()*",description:"an object with the result data rows from the query provided."},errors:['SQL08003 Connection doesn\'t exist.','SQL08000 Connection is closed.','SQL005 The statement is Updating type.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"execute-update-prepared",qname:"jdbc:execute-update-prepared",signature:"($prepared-statement as anyURI) as integer",description:" Execute updating SQL statements prepared with jdbc:prepare-statement.\n",summary:"

Execute updating SQL statements prepared with jdbc:prepare-statement.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"anyURI",occurrence:null,description:'
The identifier of the prepared statement.
'}],returns:{type:"integer",description:"the number of affected rows."},errors:['SQL003 Prepared statement doesn\'t exist.','SQL006 The prepared statement is a non-updating query.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"execute-update",qname:"jdbc:execute-update",signature:"($conn as anyURI, $sql as string) as integer",description:" Execute updating SQL statements.\n",summary:"

Execute updating SQL statements.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier of the active connection.
'},{name:"sql",type:"string",occurrence:null,description:'
The query string to be executed.
'}],returns:{type:"integer",description:"the number of affected rows."},errors:['SQL08003 Connection doesn\'t exist.','SQL08000 Connection is closed.','SQL005 The statement is Read-only type.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"execute",qname:"jdbc:execute",signature:"($conn as anyURI, $sql as string) as anyURI",description:" Execute any kind of SQL statement.\n",summary:"

Execute any kind of SQL statement.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier of the active connection.
'},{name:"sql",type:"string",occurrence:null,description:'
The query string to be executed.
'}],returns:{type:"anyURI",description:"an identifier of a DataSet."},errors:['SQL08003 Connection doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"is-connected",qname:"jdbc:is-connected",signature:"($conn as anyURI) as boolean",description:" Verify if a connection is still active.\n",summary:"

Verify if a connection is still active.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier of the connection to be verified.
'}],returns:{type:"boolean",description:"true if connected, false otherwise"},errors:['SQL08003 Connection doesn\'t exist','SQL001 Descriptive error, see error in attached message']},{isDocumented:!0,arity:1,name:"metadata",qname:"jdbc:metadata",signature:"($dataset as anyURI) as object()",description:' Return the metadata of the result of a DataSet.\n

\n More in detail, it returns information about column names, types, and whether\n a column can contain a null value.\n The metadata information can only be returned for DataSets that have been\n executed explicitly using the jdbc:execute function.\n The metadata node returned has the following structure:\n

{\n   "columns": [ {\n       "name": string,\n       "type": string,\n       "autoincrement"? = boolean,\n       "nillable"? = boolean } * ]\n }
\n

\n

\n If the query is an updating query, then the result object will return the\n number of affected rows like:\n

{ "affectedrows": integer }
\n

\n',summary:"

Return the metadata of the result of a DataSet.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"dataset",type:"anyURI",occurrence:null,description:'
The identifier of the DataSet.
'}],returns:{type:"object()",description:"the metadata associated with an executed DataSet."},errors:['SQL008 DataSet doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"parameter-metadata",qname:"jdbc:parameter-metadata",signature:"($prepared-statement as anyURI) as object()",description:' Retrieve the names and types of the prepared statement parameters.\n The metadata returned has the following structure:\n
  {\n     columns: [{\n       "name": string,\n       "type": string\n       }]\n   } 
\n',summary:"

Retrieve the names and types of the prepared statement parameters.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"prepared-statement",type:"anyURI",occurrence:null,description:'
The identifier of the prepared statement.
'}],returns:{type:"object()",description:"parameters metadata (name and type) associated with a prepared statement."},errors:['SQL003 Prepared statement doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"prepare-statement",qname:"jdbc:prepare-statement",signature:"($conn as anyURI, $sql as string) as anyURI",description:' Create a prepared statement for multiple executions with diferent parameters.\n Example:\n
\n jdbc:prepare-statement($connection, "SELECT * FROM users WHERE id=? AND age>?")\n 
\n',summary:"

Create a prepared statement for multiple executions with diferent parameters.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier of the active connection.
'},{name:"sql",type:"string",occurrence:null,description:'
The query string to be executed.
'}],returns:{type:"anyURI",description:"the identifier of the prepared statement."},errors:['SQL08003 Connection doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"result-set",qname:"jdbc:result-set",signature:"($dataset as anyURI) as object()*",description:" Extract the data rows from a non-updating DataSet.\n Every row is represented by an object of column-value representation, as in\n the module description.\n",summary:"

Extract the data rows from a non-updating DataSet.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"dataset",type:"anyURI",occurrence:null,description:'
The identifier of the DataSet.
'}],returns:{type:"object()*",description:"an object with the result data rows from the DataSet provided."},errors:['SQL008 DataSet doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"rollback",qname:"jdbc:rollback",signature:"($conn as anyURI) as empty-sequence()",description:" Rollback the current transaction of a connection.\n",summary:"

Rollback the current transaction of a connection.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier of the connection with a transaction to be rollbacked.
'}],returns:{type:"empty-sequence()",description:"an empty-sequence()"},errors:['SQL08003 Connection doesn\'t exist','SQL08000 Connection is closed','SQL001 Descriptive error, see error in attached message']},{isDocumented:!0,arity:3,name:"set-boolean",qname:"jdbc:set-boolean",signature:"($prepared-statement as anyURI, $parameter-index as integer, $value as boolean) as empty-sequence()",description:' Set the value of the designated parameter with a boolean value.\n',summary:"

Set the value of the designated parameter with a boolean value.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"anyURI",occurrence:null,description:'
The identifier of the prepared statement.
'},{name:"parameter-index",type:"integer",occurrence:null,description:'
The index from the parameter to be set.
'},{name:"value",type:"boolean",occurrence:null,description:'
The value to be set.
'}],returns:{type:"empty-sequence()",description:"an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL007 Parameter casting error.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"set-null",qname:"jdbc:set-null",signature:"($prepared-statement as anyURI, $parameter-index as integer) as empty-sequence()",description:' Set the value of the designated parameter with a NULL value.\n',summary:"

Set the value of the designated parameter with a NULL value.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"anyURI",occurrence:null,description:'
The identifier of the prepared statement.
'},{name:"parameter-index",type:"integer",occurrence:null,description:'
The index from the parameter to be set.
'}],returns:{type:"empty-sequence()",description:"an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL007 Parameter casting error.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:3,name:"set-numeric",qname:"jdbc:set-numeric",signature:"($prepared-statement as anyURI, $parameter-index as decimal, $value as anyAtomicType) as empty-sequence()",description:' Set the value of the designated parameter with a numeric value.\n',summary:"

Set the value of the designated parameter with a numeric value.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"anyURI",occurrence:null,description:'
The identifier of the prepared statement.
'},{name:"parameter-index",type:"decimal",occurrence:null,description:'
The index from the parameter to be set.
'},{name:"value",type:"anyAtomicType",occurrence:null,description:'
The value to be set.
'}],returns:{type:"empty-sequence()",description:"an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL007 Parameter casting error.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:3,name:"set-string",qname:"jdbc:set-string",signature:"($prepared-statement as anyURI, $parameter-index as integer, $value as string) as empty-sequence()",description:' Set the value of the designated parameter with a string value.\n',summary:"

Set the value of the designated parameter with a string value.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"anyURI",occurrence:null,description:'
The identifier of the prepared statement.
'},{name:"parameter-index",type:"integer",occurrence:null,description:'
The index from the parameter to be set.
'},{name:"value",type:"string",occurrence:null,description:'
The value to be set.
'}],returns:{type:"empty-sequence()",description:"an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL007 Parameter casting error.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:3,name:"set-value",qname:"jdbc:set-value",signature:"($prepared-statement as anyURI, $parameter-index as decimal, $value as anyAtomicType) as empty-sequence()",description:" Set the value of the designated parameter with the given value.\n The function will try to cast the value to the correct data type and assign\n it to the parameter.\n",summary:"

Set the value of the designated parameter with the given value.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"anyURI",occurrence:null,description:'
The identifier of the prepared statement.
'},{name:"parameter-index",type:"decimal",occurrence:null,description:'
The index from the parameter to be set.
'},{name:"value",type:"anyAtomicType",occurrence:null,description:'
The value to be set.
'}],returns:{type:"empty-sequence()",description:"an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL007 Parameter casting error.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"tables-nondeterministic",qname:"jdbc:tables-nondeterministic",signature:"($conn as anyURI) as object()*",description:' Return the list of tables from a connection.\n

This function has the same semantics as\n tables#1,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Return the list of tables from a connection.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier to a connection.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:4,name:"tables-nondeterministic",qname:"jdbc:tables-nondeterministic",signature:"($conn as anyURI, $catalog as string?, $schema as string?, $table as string?) as object()*",description:' Return the list of tables from a connection.\n

This function has the same semantics as tables#4,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Return the list of tables from a connection.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier to a connection.
'},{name:"catalog",type:"string",occurrence:"?",description:'
A filter of the catalog name of the tables. Send empty-sequence for all tables.
'},{name:"schema",type:"string",occurrence:"?",description:'
A filter of the schema name of the tables. Send empty-sequence for all tables.
'},{name:"table",type:"string",occurrence:"?",description:'
A filter of the name of the tables. Send empty-sequence for all tables.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"tables",qname:"jdbc:tables",signature:"($conn as anyURI) as object()*",description:' Return the list of tables from a connection.\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n',summary:"

Return the list of tables from a connection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier to a connection.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:4,name:"tables",qname:"jdbc:tables",signature:"($conn as anyURI, $catalog as string?, $schema as string?, $table as string?) as object()*",description:' Return the list of tables from a connection.\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n',summary:"

Return the list of tables from a connection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"conn",type:"anyURI",occurrence:null,description:'
The identifier to a connection.
'},{name:"catalog",type:"string",occurrence:"?",description:'
A filter of the catalog name of the tables. Send empty-sequence for all tables.
'},{name:"schema",type:"string",occurrence:"?",description:'
A filter of the schema name of the tables. Send empty-sequence for all tables.
'},{name:"table",type:"string",occurrence:"?",description:'
A filter of the name of the tables. Send empty-sequence for all tables.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']}],variables:[{name:"jdbc:READ-COMMITTED",type:"item()*",description:" This variable represents the READ-COMMITTED Isolation Level.\n"},{name:"jdbc:READ-UNCOMMITTED",type:"item()*",description:" This variable represents the READ-UNCOMMITTED Isolation Level.\n"},{name:"jdbc:REPEATABLE-READ",type:"item()*",description:" This variable represents the REPEATABLE-READ Isolation Levels.\n"},{name:"jdbc:SERIALIZABLE",type:"item()*",description:" This variable represents the SERIALIZABLE Isolation Levels.\n"},{name:"jdbc:CREDENTIALS-CATEGORY",type:"item()*",description:" This variable represents the category for the credentials used.\n"}]},"http://zorba.io/modules/full-text":{ns:"http://zorba.io/modules/full-text",description:' This module provides an XQuery API to full-text functions.\n For general information about this implementation of the\n XQuery and XPath Full Text 1.0 specification\n as well as instructions for building an installing a thesaurus,\n see the Full Text Thesaurus documentation.\n

Notes on languages

\n To refer to particular human languages,\n uses either the\n ISO 639-1\n or\n ISO 639-2\n languages codes.\n Note that only a subset of the\n complete list of language codes\n are supported and not every function supports the same subset.\n

\n Most functions in this module take a language as a parameter\n using the\n xs:language\n XML schema data type.\n

Notes on stemming

\n The stem() functions return the\n stem\n of a word.\n The stem of a word itself, however, is not guaranteed to be a word.\n It is best to consider a stem as an opaque byte sequence.\n All that is guaranteed about a stem is that,\n for a given word,\n the stem of that word will always be the same byte sequence.\n Hence,\n you should never compare the result of one of the stem()\n functions against a non-stemmed string,\n for example:\n
\n  if ( ft:stem( "apples" ) eq "apple" )             ** WRONG **\n 
\n Instead do:\n
\n  if ( ft:stem( "apples" ) eq ft:stem( "apple" ) )  ** CORRECT **\n 
\n

Notes on the thesaurus

\n The thesaurus-lookup() functions have "levels"\n and "relationship" parameters.\n The values for these are implementation-defined.\n The default implementation uses the\n WordNet lexical database,\n version 3.0.\n

\n In WordNet,\n the number of "levels" that two phrases are apart\n are how many hierarchical meanings apart they are.\n For example,\n "canary" is 5 levels away from "vertebrate"\n (carary > finch > oscine > passerine > bird > vertebrate).\n

\n When using the WordNet implementation,\n all of the relationships (and their abbreviations)\n specified by\n ISO 2788\n and\n ANSI/NISO Z39.19-2005\n with the exceptions of "HN" (history note)\n and "X SN" (see scope note for) are supported.\n These relationships are:\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
Rel.MeaningWordNet Rel.
BTbroader termhypernym
BTGbroader term generichypernym
BTIbroader term instanceinstance hypernym
BTPbroader term partitivepart meronym
NTnarrower termhyponym
NTGnarrower term generichyponym
NTInarrower term instanceinstance hyponym
NTPnarrower term partitivepart holonym
RTrelated termalso see
SNscope noten/a
TTtop termhypernym
UFnon-preferred termn/a
USEpreferred termn/a
\n Note that you can specify relationships\n either by their abbreviation\n or their meaning.\n Relationships are case-insensitive.\n In addition to the\n ISO 2788\n and\n ANSI/NISO Z39.19-2005\n relationships,\n All of the relationships offered by WordNet are also supported.\n These relationships are:\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
RelationshipMeaning
also see\n A word that is related to another,\n e.g., for "varnished" (furniture)\n one should also see "finished."\n
antonym\n A word opposite in meaning to another,\n e.g., "light" is an antonym for "heavy."\n
attribute\n A noun for which adjectives express values,\n e.g., "weight" is an attribute\n for which the adjectives "light" and "heavy"\n express values.\n
cause\n A verb that causes another,\n e.g., "show" is a cause of "see."\n
derivationally related form\n A word that is derived from a root word,\n e.g., "metric" is a derivationally related form of "meter."\n
derived from adjective\n An adverb that is derived from an adjective,\n e.g., "correctly" is derived from the adjective "correct."\n
entailment\n A verb that presupposes another,\n e.g., "snoring" entails "sleeping."\n
hypernym\n A word with a broad meaning that more specific words fall under,\n e.g., "meal" is a hypernym of "breakfast."\n
hyponym\n A word of more specific meaning than a general term applicable to it,\n e.g., "breakfast" is a hyponym of "meal."\n
instance hypernym\n A word that denotes a category of some specific instance,\n e.g., "author" is an instance hypernym of "Asimov."\n
instance hyponym\n A term that donotes a specific instance of some general category,\n e.g., "Asimov" is an instance hyponym of "author."\n
member holonym\n A word that denotes a collection of individuals,\n e.g., "faculty" is a member holonym of "professor."\n
member meronym\n A word that denotes a member of a larger group,\n e.g., a "person" is a member meronym of a "crowd."\n
part holonym\n A word that denotes a larger whole comprised of some part,\n e.g., "car" is a part holonym of "engine."\n
part meronym\n A word that denotes a part of a larger whole,\n e.g., an "engine" is part meronym of a "car."\n
participle of verb\n An adjective that is the participle of some verb,\n e.g., "breaking" is the participle of the verb "break."\n
pertainym\n An adjective that classifies its noun,\n e.g., "musical" is a pertainym in "musical instrument."\n
similar to\n Similar, though not necessarily interchangeable, adjectives.\n For example, "shiny" is similar to "bright",\n but they have subtle differences.\n
substance holonym\n A word that denotes a larger whole containing some constituent\n substance, e.g., "bread" is a substance holonym of "flour."\n
substance meronym\n A word that denotes a constituant substance of some larger whole,\n e.g., "flour" is a substance meronym of "bread."\n
verb group\n A verb that is a member of a group of similar verbs,\n e.g., "live" is in the verb group\n of "dwell", "live", "inhabit", etc.\n
\n

Notes on tokenization

\n For general information about the implementation of tokenization,\n including what constitutes a token,\n see the Full Text Tokenizer documentation.\n',sees:[],authors:['Paul J. Lucas'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://zorba.io/modules/full-text",prefix:"ft"},{uri:"http://zorba.io/options/versioning",prefix:"ver"},{uri:"http://zorba.io/errors",prefix:"zerr"}],functions:[{isDocumented:!0,arity:0,name:"current-compare-options",qname:"ft:current-compare-options",signature:"() as object() external",description:" Gets the current compare options.\n",summary:"

Gets the current compare options.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:"said compare options."},errors:[]},{isDocumented:!0,arity:0,name:"current-lang",qname:"ft:current-lang",signature:"() as xs:language external",description:' Gets the current\n language:\n either the language specified by the\n declare ft-option using\n language\n statement (if any)\n or the one returned by ft:host-lang() (if none).\n',summary:"

Gets the current\n language :\n either the language specified by the\n declare ft-option using \n language \n statement (if any)\n or the one returned by ft:host-lang() (if none).

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:language",description:"said language."},errors:[]},{isDocumented:!0,arity:0,name:"host-lang",qname:"ft:host-lang",signature:"() as xs:language external",description:' Gets the host\'s current\n language.\n The "host" is the computer on which the software is running.\n The host\'s current language is obtained as follows:\n \n',summary:"

Gets the host's current\n language .

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"xs:language",description:"said language."},errors:[]},{isDocumented:!0,arity:1,name:"is-stem-lang-supported",qname:"ft:is-stem-lang-supported",signature:"($lang as xs:language) as xs:boolean external",description:' Checks whether the given\n language\n is supported for stemming.\n',summary:"

Checks whether the given\n language \n is supported for stemming.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"lang",type:"xs:language",occurrence:null,description:'
The language to check.
'}],returns:{type:"xs:boolean",description:'true only if the language is supported.'},errors:[]},{isDocumented:!0,arity:1,name:"is-stop-word-lang-supported",qname:"ft:is-stop-word-lang-supported",signature:"($lang as xs:language) as xs:boolean external",description:' Checks whether the given\n language\n is supported for stop words.\n',summary:"

Checks whether the given\n language \n is supported for stop words.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"lang",type:"xs:language",occurrence:null,description:'
The language to check.
'}],returns:{type:"xs:boolean",description:'true only if the language is supported.'},errors:[]},{isDocumented:!0,arity:1,name:"is-stop-word",qname:"ft:is-stop-word",signature:"($word as xs:string) as xs:boolean external",description:" Checks whether the given word is a stop-word.\n",summary:"

Checks whether the given word is a stop-word.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"word",type:"xs:string",occurrence:null,description:'
The word to check. The word\'s language is assumed to be the one returned by ft:current-lang().
'}],returns:{type:"xs:boolean",description:'true only if $word is a stop-word.'},errors:['err:FTST0009 if ft:current-lang() is not supported.']},{isDocumented:!0,arity:2,name:"is-stop-word",qname:"ft:is-stop-word",signature:"($word as xs:string, $lang as xs:language) as xs:boolean external",description:" Checks whether the given word is a stop-word.\n",summary:"

Checks whether the given word is a stop-word.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"word",type:"xs:string",occurrence:null,description:'
The word to check.
'},{name:"lang",type:"xs:language",occurrence:null,description:'
The language of $word.
'}],returns:{type:"xs:boolean",description:'true only if $word is a stop-word.'},errors:['err:FTST0009 if $lang is not supported.']},{isDocumented:!0,arity:1,name:"is-thesaurus-lang-supported",qname:"ft:is-thesaurus-lang-supported",signature:"($lang as xs:language) as xs:boolean external",description:' Checks whether the given\n language\n is supported for look-up using the default thesaurus.\n',summary:"

Checks whether the given\n language \n is supported for look-up using the default thesaurus.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"lang",type:"xs:language",occurrence:null,description:'
The language to check.
'}],returns:{type:"xs:boolean",description:'true only if the language is supported.'},errors:[]},{isDocumented:!0,arity:2,name:"is-thesaurus-lang-supported",qname:"ft:is-thesaurus-lang-supported",signature:"($uri as xs:string, $lang as xs:language) as xs:boolean external",description:' Checks whether the given\n language\n is supported for look-up using the thesaurus specified by the given URI.\n',summary:"

Checks whether the given\n language \n is supported for look-up using the thesaurus specified by the given URI.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:null,description:'
The URI specifying the thesaurus to use.
'},{name:"lang",type:"xs:language",occurrence:null,description:'
The language to check.
'}],returns:{type:"xs:boolean",description:'true only if the language is supported.'},errors:['err:FTST0018 if $uri refers to a thesaurus that is not found in the statically known thesauri.']},{isDocumented:!0,arity:1,name:"is-tokenizer-lang-supported",qname:"ft:is-tokenizer-lang-supported",signature:"($lang as xs:language) as xs:boolean external",description:' Checks whether the given\n language\n is supported for tokenization.\n',summary:"

Checks whether the given\n language \n is supported for tokenization.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"lang",type:"xs:language",occurrence:null,description:'
The language to check.
'}],returns:{type:"xs:boolean",description:'true only if the language is supported.'},errors:[]},{isDocumented:!0,arity:1,name:"stem",qname:"ft:stem",signature:"($word as xs:string) as xs:string external",description:" Stems the given word.\n",summary:"

Stems the given word.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"word",type:"xs:string",occurrence:null,description:'
The word to stem. The word\'s language is assumed to be the one returned by ft:current-lang().
'}],returns:{type:"xs:string",description:'the stem of $word.'},errors:['err:FTST0009 if ft:current-lang() is not supported.']},{isDocumented:!0,arity:2,name:"stem",qname:"ft:stem",signature:"($word as xs:string, $lang as xs:language) as xs:string external",description:" Stems the given word.\n",summary:"

Stems the given word.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"word",type:"xs:string",occurrence:null,description:'
The word to stem.
'},{name:"lang",type:"xs:language",occurrence:null,description:'
The language of $word.
'}],returns:{type:"xs:string",description:'the stem of $word.'},errors:['err:FTST0009 if $lang is not supported.']},{isDocumented:!0,arity:1,name:"strip-diacritics",qname:"ft:strip-diacritics",signature:"($string as xs:string) as xs:string external",description:" Strips all diacritical marks from all characters.\n",summary:"

Strips all diacritical marks from all characters.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"string",type:"xs:string",occurrence:null,description:'
The string to strip diacritical marks from.
'}],returns:{type:"xs:string",description:'$string with diacritical marks stripped.'},errors:[]},{isDocumented:!0,arity:1,name:"thesaurus-lookup",qname:"ft:thesaurus-lookup",signature:"($phrase as xs:string) as xs:string* external",description:" Looks-up the given phrase in the default thesaurus.\n",summary:"

Looks-up the given phrase in the default thesaurus.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"phrase",type:"xs:string",occurrence:null,description:'
The phrase to look up. The phrase\'s language is assumed to be the one returned by ft:current-lang().
'}],returns:{type:"xs:string*",description:'the related phrases if $phrase is found in the thesaurus or the empty sequence if not.'},errors:['err:FTST0009 if ft:current-lang() is not supported.','zerr:ZXQP8401 if the thesaurus data file\'s version is not supported by the currently running version of the software.','zerr:ZXQP8402 if the thesaurus data file\'s endianness does not match that of the CPU on which the software is currently running.','zerr:ZXQP8403 if there was an error reading the thesaurus data.']},{isDocumented:!0,arity:2,name:"thesaurus-lookup",qname:"ft:thesaurus-lookup",signature:"($uri as xs:string, $phrase as xs:string) as xs:string* external",description:" Looks-up the given phrase in a thesaurus.\n",summary:"

Looks-up the given phrase in a thesaurus.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:null,description:'
The URI specifying the thesaurus to use.
'},{name:"phrase",type:"xs:string",occurrence:null,description:'
The phrase to look up. The phrase\'s language is assumed to be the one the one returned by ft:current-lang().
'}],returns:{type:"xs:string*",description:'the related phrases if $phrase is found in the thesaurus or the empty sequence if not.'},errors:['err:FTST0009 if ft:current-lang() is unsupported.','err:FTST0018 if $uri refers to a thesaurus that is not found in the statically known thesauri.','zerr:ZOSE0001 if the thesaurus data file could not be found.','zerr:ZOSE0002 if the thesaurus data file is not a plain file.','zerr:ZXQP8401 if the thesaurus data file\'s version is not supported by the currently running version of the software.','zerr:ZXQP8402 if the thesaurus data file\'s endianness does not match that of the CPU on which the software is currently running.','zerr:ZXQP8403 if there was an error reading the thesaurus data file.']},{isDocumented:!0,arity:3,name:"thesaurus-lookup",qname:"ft:thesaurus-lookup",signature:"($uri as xs:string, $phrase as xs:string, $lang as xs:language) as xs:string* external",description:" Looks-up the given phrase in the thesaurus specified by the given URI.\n",summary:"

Looks-up the given phrase in the thesaurus specified by the given URI.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:null,description:'
The URI specifying the thesaurus to use.
'},{name:"phrase",type:"xs:string",occurrence:null,description:'
The phrase to look up.
'},{name:"lang",type:"xs:language",occurrence:null,description:'
The language of $phrase.
'}],returns:{type:"xs:string*",description:'the related phrases if $phrase is found in the thesaurus or the empty sequence if not.'},errors:['err:FTST0009 if $lang is not supported.','err:FTST0018 if $uri refers to a thesaurus that is not found in the statically known thesauri.','zerr:ZOSE0001 if the thesaurus data file could not be found.','zerr:ZOSE0002 if the thesaurus data file is not a plain file.','zerr:ZXQP8401 if the thesaurus data file\'s version is not supported by the currently running version of the software.','zerr:ZXQP8402 if the thesaurus data file\'s endianness does not match that of the CPU on which the software is currently running.','zerr:ZXQP8403 if there was an error reading the thesaurus data file.']},{isDocumented:!0,arity:4,name:"thesaurus-lookup",qname:"ft:thesaurus-lookup",signature:"($uri as xs:string, $phrase as xs:string, $lang as xs:language, $relationship as xs:string) as xs:string* external",description:" Looks-up the given phrase in a thesaurus.\n",summary:"

Looks-up the given phrase in a thesaurus.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:null,description:'
The URI specifying the thesaurus to use.
'},{name:"phrase",type:"xs:string",occurrence:null,description:'
The phrase to look up.
'},{name:"lang",type:"xs:language",occurrence:null,description:'
The language of $phrase.
'},{name:"relationship",type:"xs:string",occurrence:null,description:'
The relationship the results are to have to $phrase.
'}],returns:{type:"xs:string*",description:'the related phrases if $phrase is found in the thesaurus or the empty sequence if not.'},errors:['err:FTST0018 if $uri refers to a thesaurus that is not found in the statically known thesauri.','err:FTST0009 if $lang is not supported.','zerr:ZOSE0001 if the thesaurus data file could not be found.','zerr:ZOSE0002 if the thesaurus data file is not a plain file.','zerr:ZXQP8401 if the thesaurus data file\'s version is not supported by the currently running version of the software.','zerr:ZXQP8402 if the thesaurus data file\'s endianness does not match that of the CPU on which the software is currently running.','zerr:ZXQP8403 if there was an error reading the thesaurus data file.']},{isDocumented:!0,arity:6,name:"thesaurus-lookup",qname:"ft:thesaurus-lookup",signature:"($uri as xs:string, $phrase as xs:string, $lang as xs:language, $relationship as xs:string, $level-least as xs:integer, $level-most as xs:integer) as xs:string* external",description:" Looks-up the given phrase in a thesaurus.\n",summary:"

Looks-up the given phrase in a thesaurus.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"uri",type:"xs:string",occurrence:null,description:'
The URI specifying the thesaurus to use.
'},{name:"phrase",type:"xs:string",occurrence:null,description:'
The phrase to look up.
'},{name:"lang",type:"xs:language",occurrence:null,description:'
The language of $phrase.
'},{name:"relationship",type:"xs:string",occurrence:null,description:'
The relationship the results are to have to $phrase.
'},{name:"level-least",type:"xs:integer",occurrence:null,description:'
The minimum number of levels within the thesaurus to be traversed.
'},{name:"level-most",type:"xs:integer",occurrence:null,description:'
The maximum number of levels within the thesaurus to be traversed.
'}],returns:{type:"xs:string*",description:'the related phrases if $phrase is found in the thesaurus or the empty sequence if not.'},errors:['err:FOCA0003 if either $level-least or $level-most is either negative or too large.','err:FTST0018 if $uri refers to a thesaurus that is not found in the statically known thesauri.','err:FTST0009 if $lang is not supported.','zerr:ZOSE0001 if the thesaurus data file could not be found.','zerr:ZOSE0002 if the thesaurus data file is not a plain file.','zerr:ZXQP8401 if the thesaurus data file\'s version is not supported by the currently running version of the software.','zerr:ZXQP8402 if the thesaurus data file\'s endianness does not match that of the CPU on which the software is currently running.','zerr:ZXQP8403 if there was an error reading the thesaurus data file.']},{isDocumented:!0,arity:1,name:"tokenize-node",qname:"ft:tokenize-node",signature:"($node as node()) as object()* external",description:" Tokenizes the given node and all of its descendants.\n",summary:"

Tokenizes the given node and all of its descendants.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:null,description:'
The node to tokenize. The node\'s default language is assumed to be the one returned by ft:current-lang().
'}],returns:{type:"object()*",description:"a (possibly empty) sequence of tokens."},errors:['err:FTST0009 if ft:current-lang() is not supported.']},{isDocumented:!0,arity:2,name:"tokenize-node",qname:"ft:tokenize-node",signature:"($node as node(), $lang as xs:language) as object()* external",description:" Tokenizes the given node and all of its decendants.\n",summary:"

Tokenizes the given node and all of its decendants.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:null,description:'
The node to tokenize.
'},{name:"lang",type:"xs:language",occurrence:null,description:'
The default language of $node.
'}],returns:{type:"object()*",description:"a (possibly empty) sequence of tokens."},errors:['err:FTST0009 if $lang is not supported.']},{isDocumented:!0,arity:2,name:"tokenize-nodes",qname:"ft:tokenize-nodes",signature:"($includes as node()+, $excludes as node()*) as object()* external",description:' Tokenizes the set of nodes comprising $includes (and all of its\n descendants) but excluding $excludes (and all of its\n descendants), if any.\n',summary:"

Tokenizes the set of nodes comprising $includes (and all of its\n descendants) but excluding $excludes (and all of its\n descendants), if any.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"includes",type:"node()",occurrence:"+",description:'
The set of nodes (and its descendants) to include. The default language is assumed to be the one returned by ft:current-lang().
'},{name:"excludes",type:"node()",occurrence:"*",description:'
The set of nodes (and its descendants) to exclude.
'}],returns:{type:"object()*",description:"a (possibly empty) sequence of tokens."},errors:['err:FTST0009 if ft:current-lang() is not supported.']},{isDocumented:!0,arity:3,name:"tokenize-nodes",qname:"ft:tokenize-nodes",signature:"($includes as node()+, $excludes as node()*, $lang as xs:language) as object()* external",description:' Tokenizes the set of nodes comprising $includes (and all of its\n descendants) but excluding $excludes (and all of its\n descendants), if any.\n',summary:"

Tokenizes the set of nodes comprising $includes (and all of its\n descendants) but excluding $excludes (and all of its\n descendants), if any.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"includes",type:"node()",occurrence:"+",description:'
The set of nodes (and its descendants) to include.
'},{name:"excludes",type:"node()",occurrence:"*",description:'
The set of nodes (and its descendants) to exclude.
'},{name:"lang",type:"xs:language",occurrence:null,description:'
The default language for nodes.
'}],returns:{type:"object()*",description:"a (possibly empty) sequence of tokens."},errors:['err:FTST0009 if $lang is not supported.']},{isDocumented:!0,arity:1,name:"tokenize-string",qname:"ft:tokenize-string",signature:"($string as xs:string) as xs:string* external",description:" Tokenizes the given string.\n",summary:"

Tokenizes the given string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"string",type:"xs:string",occurrence:null,description:'
The string to tokenize. The string\'s language is assumed to be the one returned by ft:current-lang().
'}],returns:{type:"xs:string*",description:"a (possibly empty) sequence of tokens."},errors:['err:FTST0009 if ft:current-lang() is not supported.']},{isDocumented:!0,arity:2,name:"tokenize-string",qname:"ft:tokenize-string",signature:"($string as xs:string, $lang as xs:language) as xs:string* external",description:" Tokenizes the given string.\n",summary:"

Tokenizes the given string.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"string",type:"xs:string",occurrence:null,description:'
The string to tokenize.
'},{name:"lang",type:"xs:language",occurrence:null,description:'
The language of $string.
'}],returns:{type:"xs:string*",description:"a (possibly empty) sequence of tokens."},errors:['err:FTST0009 if $lang is not supported.']},{isDocumented:!0,arity:0,name:"tokenizer-properties",qname:"ft:tokenizer-properties",signature:"() as object() external",description:' Gets properties of the tokenizer for the\n language\n returned by ft:current-lang().\n',summary:"

Gets properties of the tokenizer for the\n language \n returned by ft:current-lang() .

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:"said properties."},errors:['err:FTST0009 if ft:current-lang() is not supported.']},{isDocumented:!0,arity:1,name:"tokenizer-properties",qname:"ft:tokenizer-properties",signature:"($lang as xs:language) as object() external",description:' Gets properties of the tokenizer for the given\n language.\n',summary:"

Gets properties of the tokenizer for the given\n language .

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"lang",type:"xs:language",occurrence:null,description:'
The language of the tokenizer to get the properties of.
'}],returns:{type:"object()",description:"said properties."},errors:['err:FTST0009 if $lang is not supported. tokenization specifically.']}],variables:[{name:"ft:LANG-DA",type:"xs:language",description:' Predeclared constant for the Danish\n xs:language.\n'},{name:"ft:LANG-DE",type:"xs:language",description:' Predeclared constant for the German\n xs:language.\n'},{name:"ft:LANG-EN",type:"xs:language",description:' Predeclared constant for the English\n xs:language.\n'},{name:"ft:LANG-ES",type:"xs:language",description:' Predeclared constant for the Spanish\n xs:language.\n'},{name:"ft:LANG-FI",type:"xs:language",description:' Predeclared constant for the Finnish\n xs:language.\n'},{name:"ft:LANG-FR",type:"xs:language",description:' Predeclared constant for the French\n xs:language.\n'},{name:"ft:LANG-HU",type:"xs:language",description:' Predeclared constant for the Hungarian\n xs:language.\n'},{name:"ft:LANG-IT",type:"xs:language",description:' Predeclared constant for the Italian\n xs:language.\n'},{name:"ft:LANG-NL",type:"xs:language",description:' Predeclared constant for the Dutch\n xs:language.\n'},{name:"ft:LANG-NO",type:"xs:language",description:' Predeclared constant for the Norwegian\n xs:language.\n'},{name:"ft:LANG-PT",type:"xs:language",description:' Predeclared constant for the Portuguese\n xs:language.\n'},{name:"ft:LANG-RO",type:"xs:language",description:' Predeclared constant for the Romanian\n xs:language.\n'},{name:"ft:LANG-RU",type:"xs:language",description:' Predeclared constant for the Russian\n xs:language.\n'},{name:"ft:LANG-SV",type:"xs:language",description:' Predeclared constant for the Swedish\n xs:language.\n'},{name:"ft:LANG-TR",type:"xs:language",description:' Predeclared constant for the Turkish\n xs:language.\n'}]},"http://www.zorba-xquery.com/modules/jdbc":{ns:"http://www.zorba-xquery.com/modules/jdbc",description:' This module contains functions to connect to any JDBC datasource\n using jvm-util module to handle Java interaction.\n

Important Notice Regarding Function Determinism

\n

The non side-effecting functions:\n

\n are declared deterministic, which means that their results could be cached\n when invoked multiple times with the same arguments in the same query execution.

\n

To not use cached results you can use the following alternative functions:\n

\n which have been declared as being non deterministic.

\n',sees:[],authors:['Rodolfo Ochoa','Federico Cavalieri'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://www.zorba-xquery.com/modules/jdbc",prefix:"jdbc"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"affected-rows",qname:"jdbc:affected-rows",signature:"($dataset-id as xs:anyURI) as xs:integer external",description:" Return the number of affected rows of a particular DataSet.\n",summary:"

Return the number of affected rows of a particular DataSet.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"dataset-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to a DataSet.
'}],returns:{type:"xs:integer",description:"Returns an xs:integer with the number of affected rows."},errors:['SQL008 DataSet doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"clear-params",qname:"jdbc:clear-params",signature:"($prepared-statement as xs:anyURI) as empty-sequence() external",description:" Clears the current parameter values immediately.\n",summary:"

Clears the current parameter values immediately.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'}],returns:{type:"empty-sequence()",description:"This function returns an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"close-dataset",qname:"jdbc:close-dataset",signature:"($dataset-id as xs:anyURI) as empty-sequence() external",description:" Closes and free resources from a particular DataSet.\n",summary:"

Closes and free resources from a particular DataSet.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"dataset-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to a DataSet.
'}],returns:{type:"empty-sequence()",description:"This function returns an empty-sequence()"},errors:['SQL008 DataSet doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"close-prepared",qname:"jdbc:close-prepared",signature:"($prepared-statement as xs:anyURI) as empty-sequence() external",description:" Closes and frees from memory any prepared SQL statement created with jdbc:prepare-statement\n",summary:"

Closes and frees from memory any prepared SQL statement created with jdbc:prepare-statement\n

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'}],returns:{type:"empty-sequence()",description:"This function returns an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"commit",qname:"jdbc:commit",signature:"($connection-id as xs:anyURI) as empty-sequence() external",description:" Commit current transaction from an active connection.\n",summary:"

Commit current transaction from an active connection.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to the connection to be commited.
'}],returns:{type:"empty-sequence()",description:"This function returns an empty-sequence()"},errors:['SQL08003 Connection doesn\'t exist','SQL08000 Connection is closed','SQL001 Descriptive error, see error in attached message']},{isDocumented:!0,arity:1,name:"connect-nondeterministic",qname:"jdbc:connect-nondeterministic",signature:"($connection-config as object()) as xs:anyURI external",description:' Opens a connection to a database.\n

This function has the same semantics as connect#1,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Opens a connection to a database.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection-config",type:"object()",occurrence:null,description:'
json object that has the host and user informations.
'}],returns:{type:"xs:anyURI",description:"Return an identifier that represents the connection to the server."},errors:['SQL28000 Authentication failed.','SQL08001 Connection error.','SQL40003 Isolation level not supported.','SQL001 Descriptive error, see attached message.']},{isDocumented:!0,arity:2,name:"connect-nondeterministic",qname:"jdbc:connect-nondeterministic",signature:"($connection-config as object(), $options as object()?) as xs:anyURI external",description:' Opens a connection to a database with specified options.\n

This function has the same semantics as connect#2,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Opens a connection to a database with specified options.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection-config",type:"object()",occurrence:null,description:'
json object that has the host and user informations.
'},{name:"options",type:"object()",occurrence:"?",description:'
json object that specifies the connection options.
'}],returns:{type:"xs:anyURI",description:"Return an identifier that represents the connection to the server."},errors:['SQL28000 Authentication failed.','SQL08001 Connection error.','SQL40003 Isolation level not supported.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"connect",qname:"jdbc:connect",signature:"($connection-config as object()) as xs:anyURI external",description:' Opens a connection to a database.\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

Returns a URI identifying the connection that has been opened. The\n implementing code determines from the $connection-config either explicitly\n (interpreting the driver attribute) or implicitly (using the type attribute)\n which driver it has to load.

\n',summary:"

Opens a connection to a database.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection-config",type:"object()",occurrence:null,description:'
json object that has the host and user informations.
'}],returns:{type:"xs:anyURI",description:'Return an identifier that represents the connection to the server. Connection coonfiguration example: { "url" : "jdbc:mysql://localhost/", "user" : "root", "password" : "" }'},errors:['SQL28000 Authentication failed.','SQL08001 Connection error.','SQL40003 Isolation level not supported.','SQL001 Descriptive error, see attached message.']},{isDocumented:!0,arity:2,name:"connect",qname:"jdbc:connect",signature:"($connection-config as object(), $options as object()?) as xs:anyURI external",description:' Opens a connection to a database with specified options.\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n

Returns a URI identifying the connection that has been opened. The\n implementing code determines from the $connection-config either explicitly\n (interpreting the driver attribute) or implicitly (using the type attribute)\n which driver it has to load.

\n',summary:"

Opens a connection to a database with specified options.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection-config",type:"object()",occurrence:null,description:'
json object that has the host and user informations.
'},{name:"options",type:"object()",occurrence:"?",description:'
json object that specifies the connection options.
'}],returns:{type:"xs:anyURI",description:'Return an identifier that represents the connection to the server. Connection options example: { "autocommit" : false, "readonly"? : true, "isolation-level"? : $jdbc:READ-COMMITTED }'},errors:['SQL28000 Authentication failed.','SQL08001 Connection error.','SQL40003 Isolation level not supported.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"connection-options",qname:"jdbc:connection-options",signature:"($connection-id as xs:anyURI) as object() external",description:" Returns a set with options for a specified connection.\n",summary:"

Returns a set with options for a specified connection.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to the connection to be verify.
'}],returns:{type:"object()",description:'Returns and object with the connection options. The returned options are equal to the options specified in function jdbc:connect. Consequently, the options are specified as follows: { "autocommit" : xs:boolean, "readonly" : xs:boolean, "isolation-level" : xs:string }'},errors:['SQL08003 Connection doesn\'t exist','SQL08000 Connection is closed','SQL001 Descriptive error, see error in attached message']},{isDocumented:!0,arity:1,name:"execute-prepared",qname:"jdbc:execute-prepared",signature:"($prepared-statement as xs:anyURI) as xs:anyURI external",description:" Executes SQL statements prepared with 5.1 jsql:prepare-statement with values set\n and returns an identifier to a Dataset.\n",summary:"

Executes SQL statements prepared with 5.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'}],returns:{type:"xs:anyURI",description:"Return an identifier that represents a DataSet."},errors:['SQL003 Prepared statement doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"execute-query-nondeterministic",qname:"jdbc:execute-query-nondeterministic",signature:"($connection-id as xs:anyURI, $sql as xs:string) as object()* external",description:' Executes non-updating SQL statements.\n

This function has the same semantics as\n execute-query#2,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Executes non-updating SQL statements.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to an active connection.
'},{name:"sql",type:"xs:string",occurrence:null,description:'
The query string to be executed.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL08003 Connection doesn\'t exist.','SQL08000 Connection is closed.','SQL005 The statement is Updating type.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"execute-query-prepared-nondeterministic",qname:"jdbc:execute-query-prepared-nondeterministic",signature:"($prepared-statement as xs:anyURI) as object()* external",description:' Executes a non-updating SQL statement prepared with 5.1 jsql:prepare-statement.\n

This function has the same semantics as\n execute-query-prepared#1,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Executes a non-updating SQL statement prepared with 5.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query processed with the parameter values provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL003 Prepared statement doesn\'t exist.','SQL005 The prepared statement is an updating query.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"execute-query-prepared",qname:"jdbc:execute-query-prepared",signature:"($prepared-statement as xs:anyURI) as object()* external",description:' Executes a non-updating SQL statement prepared with 5.1 jsql:prepare-statement.\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n',summary:"

Executes a non-updating SQL statement prepared with 5.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query processed with the parameter values provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL003 Prepared statement doesn\'t exist.','SQL005 The prepared statement is an updating query.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"execute-query",qname:"jdbc:execute-query",signature:"($connection-id as xs:anyURI, $sql as xs:string) as object()* external",description:' Executes non-updating SQL statements.\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n',summary:"

Executes non-updating SQL statements.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to an active connection.
'},{name:"sql",type:"xs:string",occurrence:null,description:'
The query string to be executed.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL08003 Connection doesn\'t exist.','SQL08000 Connection is closed.','SQL005 The statement is Updating type.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"execute-update-prepared",qname:"jdbc:execute-update-prepared",signature:"($prepared-statement as xs:anyURI) as xs:integer external",description:" Executes an updating SQL statement prepared with 5.1 jsql:prepare-statement.\n",summary:"

Executes an updating SQL statement prepared with 5.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'}],returns:{type:"xs:integer",description:"Returns an xs:integer with the number of affected rows."},errors:['SQL003 Prepared statement doesn\'t exist.','SQL006 The prepared statement is a non-updating query.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"execute-update",qname:"jdbc:execute-update",signature:"($connection-id as xs:anyURI, $sql as xs:string) as xs:integer external",description:" Executes updating SQL statements.\n",summary:"

Executes updating SQL statements.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to an active connection.
'},{name:"sql",type:"xs:string",occurrence:null,description:'
The query string to be executed.
'}],returns:{type:"xs:integer",description:"Returns an xs:integer with the number of affected rows."},errors:['SQL08003 Connection doesn\'t exist.','SQL08000 Connection is closed.','SQL005 The statement is Read-only type.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"execute",qname:"jdbc:execute",signature:"($connection-id as xs:anyURI, $sql as xs:string) as xs:anyURI external",description:" Executes any kind of SQL statement.\n",summary:"

Executes any kind of SQL statement.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to an active connection.
'},{name:"sql",type:"xs:string",occurrence:null,description:'
The query string to be executed.
'}],returns:{type:"xs:anyURI",description:"Return an identifier that represents a DataSet."},errors:['SQL08003 Connection doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"is-connected",qname:"jdbc:is-connected",signature:"($connection-id as xs:anyURI) as xs:boolean external",description:" Verify if a connection is still active.\n",summary:"

Verify if a connection is still active.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to the connection to be verify.
'}],returns:{type:"xs:boolean",description:"Returns true if connected."},errors:['SQL08003 Connection doesn\'t exist','SQL001 Descriptive error, see error in attached message']},{isDocumented:!0,arity:1,name:"metadata",qname:"jdbc:metadata",signature:"($dataset-id as xs:anyURI) as object() external",description:" Return the metadata of the result of a particular DataSet.\n",summary:"

Return the metadata of the result of a particular DataSet.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"dataset-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to a DataSet.
'}],returns:{type:"object()",description:'This function returns the metadata associated with an executed DataSet. More in detail, it returns information about column names, types, and whether a column can contain a null value. The metadata information can only be returned for DataSets that have been executed explicitly using the jsql:execute function. The metadata node returned by this function is defined as follows: { "columns": [ { "name": xs:string, "type": xs:string, "autoincrement"? = xs:boolean, "nillable"? = xs:boolean } * ] }'},errors:['SQL008 DataSet doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"parameter-metadata",qname:"jdbc:parameter-metadata",signature:"($prepared-statement as xs:anyURI) as object() external",description:" Retrieves the number, types and properties of the prepared statement parameters.\n",summary:"

Retrieves the number, types and properties of the prepared statement parameters.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'}],returns:{type:"object()",description:'This function returns the parameters metadata associated with a prepared statement. In other words, it returns information about the column name associated with the parameter, the type, etc. The metadata node returned by this function is defined as follows: { columns: [{ "name": xs:string, "type": xs:string }] }'},errors:['SQL003 Prepared statement doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"prepare-statement",qname:"jdbc:prepare-statement",signature:"($connection-id as xs:anyURI, $sql as xs:string) as xs:anyURI external",description:" Creates a prepared statement for multiple executions with diferent values.\n",summary:"

Creates a prepared statement for multiple executions with diferent values.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to an active connection.
'},{name:"sql",type:"xs:string",occurrence:null,description:'
The query string to be executed.
'}],returns:{type:"xs:anyURI",description:'Return an identifier that represents the prepared statement. Example: jsql:prepare-statement($connection, "SELECT * FROM users WHERE id=? AND age>?")'},errors:['SQL08003 Connection doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"result-set",qname:"jdbc:result-set",signature:"($dataset-id as xs:anyURI) as object()* external",description:" This function returns a sequence of objects representing the rows of data from a non-updating query.\n",summary:"

This function returns a sequence of objects representing the rows of data from a non-updating query.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"dataset-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to a DataSet.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the DataSet provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL008 DataSet doesn\'t exist.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"rollback",qname:"jdbc:rollback",signature:"($connection-id as xs:anyURI) as empty-sequence() external",description:" Rollback the current transaction of a connection.\n",summary:"

Rollback the current transaction of a connection.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to the connection to be rollbacked.
'}],returns:{type:"empty-sequence()",description:"This function returns an empty-sequence()"},errors:['SQL08003 Connection doesn\'t exist','SQL08000 Connection is closed','SQL001 Descriptive error, see error in attached message']},{isDocumented:!0,arity:3,name:"set-boolean",qname:"jdbc:set-boolean",signature:"($prepared-statement as xs:anyURI, $parameter-index as xs:integer, $value as xs:boolean) as empty-sequence() external",description:" Set the value of the designated parameter with the given value, this function will assign only boolean values.\n",summary:"

Set the value of the designated parameter with the given value, this function will assign only boolean values.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'},{name:"parameter-index",type:"xs:integer",occurrence:null,description:'
The index from the parameter to be set.
'},{name:"value",type:"xs:boolean",occurrence:null,description:'
The value to be set.
'}],returns:{type:"empty-sequence()",description:"This function returns an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL007 Parameter casting error.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:2,name:"set-null",qname:"jdbc:set-null",signature:"($prepared-statement as xs:anyURI, $parameter-index as xs:integer) as empty-sequence() external",description:" Set the value of the designated parameter with the given value, this function\n will assign only null values if possible.\n",summary:"

Set the value of the designated parameter with the given value, this function\n will assign only null values if possible.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'},{name:"parameter-index",type:"xs:integer",occurrence:null,description:'
The index from the parameter to be set.
'}],returns:{type:"empty-sequence()",description:"This function returns an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL007 Parameter casting error.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:3,name:"set-numeric",qname:"jdbc:set-numeric",signature:"($prepared-statement as xs:anyURI, $parameter-index as xs:decimal, $value as xs:anyAtomicType) as empty-sequence() external",description:" Set the value of the designated parameter with the given value, this function will assign only numeric values.\n",summary:"

Set the value of the designated parameter with the given value, this function will assign only numeric values.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'},{name:"parameter-index",type:"xs:decimal",occurrence:null,description:'
The index from the parameter to be set.
'},{name:"value",type:"xs:anyAtomicType",occurrence:null,description:'
The value to be set.
'}],returns:{type:"empty-sequence()",description:"This function returns an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL007 Parameter casting error.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:3,name:"set-string",qname:"jdbc:set-string",signature:"($prepared-statement as xs:anyURI, $parameter-index as xs:integer, $value as xs:string) as empty-sequence() external",description:" Set the value of the designated parameter with the given value, this function will assign only string values.\n",summary:"

Set the value of the designated parameter with the given value, this function will assign only string values.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'},{name:"parameter-index",type:"xs:integer",occurrence:null,description:'
The index from the parameter to be set.
'},{name:"value",type:"xs:string",occurrence:null,description:'
The value to be set.
'}],returns:{type:"empty-sequence()",description:"This function returns an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL007 Parameter casting error.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:3,name:"set-value",qname:"jdbc:set-value",signature:"($prepared-statement as xs:anyURI, $parameter-index as xs:decimal, $value as xs:anyAtomicType) as empty-sequence() external",description:" Set the value of the designated parameter with the given value,\n this function will assign any value you send\n and it will try to cast to the correct type.\n",summary:"

Set the value of the designated parameter with the given value,\n this function will assign any value you send\n and it will try to cast to the correct type.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"prepared-statement",type:"xs:anyURI",occurrence:null,description:'
The identifier to a prepared statement.
'},{name:"parameter-index",type:"xs:decimal",occurrence:null,description:'
The index from the parameter to be set.
'},{name:"value",type:"xs:anyAtomicType",occurrence:null,description:'
The value to be set.
'}],returns:{type:"empty-sequence()",description:"This function returns an empty-sequence()"},errors:['SQL003 Prepared statement doesn\'t exist.','SQL007 Parameter casting error.','SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"tables-nondeterministic",qname:"jdbc:tables-nondeterministic",signature:"($connection-id as xs:anyURI) as object()*",description:' Return the list of tables from a connection\n

This function has the same semantics as tables#1,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Return the list of tables from a connection\n This function has the same semantics as tables#1 ,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to a connection.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:4,name:"tables-nondeterministic",qname:"jdbc:tables-nondeterministic",signature:"($connection-id as xs:anyURI, $catalog as xs:string?, $schema as xs:string?, $table as xs:string?) as object()* external",description:' Return the list of tables from a connection.\n

This function has the same semantics as tables#4,\n but is declared as being non deterministic and thus should only be used when\n result caching is not desired.

\n',summary:"

Return the list of tables from a connection.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to a connection.
'},{name:"catalog",type:"xs:string",occurrence:"?",description:'
A filter of the catalog name of the tables. Send empty-sequence for all tables.
'},{name:"schema",type:"xs:string",occurrence:"?",description:'
A filter of the schema name of the tables. Send empty-sequence for all tables.
'},{name:"table",type:"xs:string",occurrence:"?",description:'
A filter of the name of the tables. Send empty-sequence for all tables.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:1,name:"tables",qname:"jdbc:tables",signature:"($connection-id as xs:anyURI) as object()*",description:' Return the list of tables from a connection\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n',summary:"

Return the list of tables from a connection\n This function is declared as deterministic and should be used whenever result\n caching is acceptable.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to a connection.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']},{isDocumented:!0,arity:4,name:"tables",qname:"jdbc:tables",signature:"($connection-id as xs:anyURI, $catalog as xs:string?, $schema as xs:string?, $table as xs:string?) as object()* external",description:' Return the list of tables from a connection\n

This function is declared as deterministic and should be used whenever result\n caching is acceptable.

\n',summary:"

Return the list of tables from a connection\n This function is declared as deterministic and should be used whenever result\n caching is acceptable.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"connection-id",type:"xs:anyURI",occurrence:null,description:'
The identifier to a connection.
'},{name:"catalog",type:"xs:string",occurrence:"?",description:'
A filter of the catalog name of the tables. Send empty-sequence for all tables.
'},{name:"schema",type:"xs:string",occurrence:"?",description:'
A filter of the schema name of the tables. Send empty-sequence for all tables.
'},{name:"table",type:"xs:string",occurrence:"?",description:'
A filter of the name of the tables. Send empty-sequence for all tables.
'}],returns:{type:"object()*",description:"Return an object with the result data rows from the query provided, the data rows are defined as follows: { column:value* }* Every row is represented by an object of column-value representation of the returned SQL result."},errors:['SQL08000 Connection is closed.','SQL001 Descriptive error, see error in attached message.']}],variables:[{name:"jdbc:NOT-SUPPORTED",type:"item()*",description:" This variable represents the NOT-SUPPORTED level for Isolation Levels in $options for 2.2 connect function.\n"},{name:"jdbc:READ-COMMITTED",type:"item()*",description:" This variable represents the READ-COMMITTED level for Isolation Levels in $options for 2.2 connect function.\n"},{name:"jdbc:READ-UNCOMMITTED",type:"item()*",description:" This variable represents the READ-UNCOMMITTED level for Isolation Levels in $options for 2.2 connect function.\n"},{name:"jdbc:REPEATABLE-READ",type:"item()*",description:" This variable represents the REPEATABLE-READ level for Isolation Levels in $options for 2.2 connect function.\n"},{name:"jdbc:SERIALIZABLE",type:"item()*",description:" This variable represents the SERIALIZABLE level for Isolation Levels in $options for 2.2 connect function.\n"}]},"http://www.28msec.com/modules/http-response":{ns:"http://www.28msec.com/modules/http-response",description:' The response module can be used to modify the HTTP response\n that will be send as a result. For example, the\n content-type function can be used to set the\n Content-Type header and determine the encoding of data in the\n response.\n',sees:[],authors:['Matthias Brantner'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.28msec.com/modules/http-response",prefix:"http"},{uri:"http://www.w3.org/2010/xslt-xquery-serialization",prefix:"output"},{uri:"http://www.28msec.com/modules/http/response#2.0",prefix:"res"},{uri:"http://www.28msec.com/modules/http-response",prefix:"resp"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"code-for-status",qname:"resp:code-for-status",signature:"($status as xs:string) as xs:integer",description:" Convert between the name of the HTTP status code and\n the integer value of that status code.\n",summary:"

Convert between the name of the HTTP status code and\n the integer value of that status code.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"status",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:integer",description:"the integer value of the given status code."},errors:['http:invalid-status if the given name does not represent a valid http status code']},{isDocumented:!0,arity:1,name:"content-type-binary",qname:"resp:content-type-binary",signature:"($type as xs:string) as xs:boolean",description:'

Test if a given content-type is a binary content-type. A\n content-type is considered to be binary if it\'s not a text\n content-type.

\n',summary:"

Test if a given content-type is a binary content-type.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is a binary content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-html",qname:"resp:content-type-html",signature:"($type as xs:string) as xs:boolean",description:'

Test if a given content-type is a HTML content-type, i.e.\n the content-type is the string "text/html".

\n',summary:"

Test if a given content-type is a HTML content-type, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is the HTML content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-json",qname:"resp:content-type-json",signature:"($type as xs:string) as xs:boolean",description:'

Test if a given content-type is a JSON content-type, i.e.\n the content-type is the string "application/json".

\n',summary:"

Test if a given content-type is a JSON content-type, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is the JSON content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-mixed-json-xml",qname:"resp:content-type-mixed-json-xml",signature:"($type as xs:string) as xs:boolean",description:'

Test if a given content-type is a mixed JSON-XML content-type, i.e.\n the content-type is the string "application/mixed-json-xml".

\n',summary:"

Test if a given content-type is a mixed JSON-XML content-type, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is a mixed JSON-XML content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-text",qname:"resp:content-type-text",signature:"($type as xs:string) as xs:boolean",description:'

Test if a given content-type is a text content-type.

\n

A text content-type starts with "text/" or contains either of\n the strings "xml" or "json".

\n',summary:"

Test if a given content-type is a text content-type.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is a text content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-xhtml",qname:"resp:content-type-xhtml",signature:"($type as xs:string) as xs:boolean",description:'

Test if a given content-type is a XHTML content-type, i.e.\n the content-type is the string "application/xhtml+xml".

\n',summary:"

Test if a given content-type is a XHTML content-type, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is the XHTML content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type-xml",qname:"resp:content-type-xml",signature:"($type as xs:string) as xs:boolean",description:'

Test if a given content-type is a XML content-type

\n

A XML content-type is a content-type that is "application/xml"\n or ends : with the string "+xml".

\n',summary:'

Test if a given content-type is a XML content-type \n A XML content-type is a content-type that is "application/xml"\n or ends : with the string "+xml".

',annotation_str:"",annotations:[],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to test.
'}],returns:{type:"xs:boolean",description:"true if the given content-type is a XML content-type, false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"content-type",qname:"resp:content-type",signature:"($type as xs:string) as empty-sequence()",description:'

Sets the Content-Type header for the response.

\n

\n For example,\n resp:content-type("text/plain") will cause the\n header\n Content-Type: text/plain to be added for the response.

\n

In addtion to setting the Content-Type header, the function also\n sets the serialization parameters to the default values for serialization\n method for the given content-type. For example, if the content-type is set to\n text/plain, the default serialization parameters for the text\n serialization method will be used.

\n

The functions resp:content-type-text/xml/html/xhtml/binary may be used\n to figure out which serialization method will be used for a specific\n content-type.

\n

If the given content-type contains a charset declaration (e.g.\n resp:content-type("text/plain;charset=ISO-8859-1")), the\n content of the response will be transcoded to the given encoding.

\n

The default serialization parameters set by this function can\n be overwritten using the resp:serialization-parameters() function.

\n',summary:"

Sets the Content-Type header for the response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to be set
'}],returns:{type:"empty-sequence()",description:"the function is sequential and returns the empty sequence"},errors:['http:invalid-encoding if the given encoding is invalid or not supported.']},{isDocumented:!0,arity:2,name:"content-type",qname:"resp:content-type",signature:"($type as xs:string, $params as object()) as empty-sequence()",description:'

Sets the Content-Type header for the response.

\n

For example,\n resp:content-type("text/plain") will cause the\n header\n Content-Type: text/plain to be added for the response.

\n

In addition to the content-type, the function also allows to\n specify the serialization method and parameters that will be used\n for serializing the result. For details about this parameter, please\n refer to resp:serialization-parameters#1.

\n

If the content-type suggest using a binary serialization,\n resp:decode-binary#1 will be called and set to true except if\n the serialization method is specified at the same time. In this\n case, the serialization method will be used as specified.

\n

If the given content-type contains a charset declaration (e.g.\n resp:content-type("text/plain;charset=ISO-8859-1")), the\n content of the response will be transcoded to the given encoding.\n If the serialization parameters also contain a charset declaration,\n the charset contained in the content-type will be used. to transcode\n the result.

\n',summary:"

Sets the Content-Type header for the response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"type",type:"xs:string",occurrence:null,description:'
the content-type to be set
'},{name:"params",type:"object()",occurrence:null,description:'
the serialization parameters that will be used for serialization the result.
'}],returns:{type:"empty-sequence()",description:"the function is sequential and returns the empty sequence"},errors:['http:invalid-encoding if the given encoding is invalid or not supported.']},{isDocumented:!0,arity:0,name:"decode-binary",qname:"resp:decode-binary",signature:"() as xs:boolean",description:'

Returns the boolean indiciating whether base64Binary returned by\n this request will be decoded.

\n

The default if not modified using resp:decode-binary is false.

\n',summary:"

Returns the boolean indiciating whether base64Binary returned by\n this request will be decoded.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:"xs:boolean",description:"the said boolean value"},errors:[]},{isDocumented:!0,arity:1,name:"decode-binary",qname:"resp:decode-binary",signature:"($decode as xs:boolean) as empty-sequence()",description:'

If this function is invoked with true, the result of the request\n will not be serialized. Instead, the result will be the binary values\n of any item that is of type base64Binary. The values of all other\n items will not be part of the result.

\n

Please note that all serialization parameters which have been set using\n resp:serialization-parameters will be ignored. Also, the output encoding\n is ignored for binaries.

\n',summary:"

If this function is invoked with true, the result of the request\n will not be serialized.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"decode",type:"xs:boolean",occurrence:null,description:'
boolean value indicating whether base64Binary should be decoded.
'}],returns:{type:"empty-sequence()",description:"the function is sequential and returns the empty sequence."},errors:[]},{isDocumented:!0,arity:1,name:"encoding",qname:"resp:encoding",signature:"($encoding as xs:string) as empty-sequence()",description:'

The function sets the output encoding that will be\n used for the payload of the response.

\n

For example,\n resp:encoding("ISO-8859-1") will cause the\n content in the response to be encoded using ISO-8859-1.

\n

Please note that the encoding only applies to textual data.\n It is not used if the function decode-binary()\n was invoked passing true as parameter.

\n',summary:"

The function sets the output encoding that will be\n used for the payload of the response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"encoding",type:"xs:string",occurrence:null,description:'
the encoding to be used for the payload of the response.
'}],returns:{type:"empty-sequence()",description:"the function is sequential and returns the empty sequence"},errors:['http:invalid-encoding if the given encoding is invalid or not supported.']},{isDocumented:!0,arity:2,name:"header",qname:"resp:header",signature:"($name as xs:string, $value as xs:string) as xs:string?",description:'

Set a HTTP header in the response.

\n

If a header with the same name was already set, the\n value is overwritten and the function returns the old value. As defined\n in the HTTP specification, multiple headers with the same name\n can be combined into one header whose value is a comma-separated\n list of the values.

\n

The following headers must not be set using this function.\n Instead, other functions of this module should be used in order\n to implemented the required semantics:\n

\n

\n',summary:"

Set a HTTP header in the response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"name",type:"xs:string",occurrence:null,description:'
the name of the header to set
'},{name:"value",type:"xs:string",occurrence:null,description:'
the value of the header to set `
'}],returns:{type:"xs:string?",description:"the value of the header previously set or the empty sequence if no header has been set with the same name."},errors:['resp:invalid-header-name if an invalid name is used for the header.']},{isDocumented:!0,arity:1,name:"message-for-status",qname:"resp:message-for-status",signature:"($status as xs:string) as xs:string",description:" Convert between the HTTP status code as string and\n the name/message of that status code.\n",summary:"

Convert between the HTTP status code as string and\n the name/message of that status code.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"status",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string",description:"the message for the given name"},errors:['http:invalid-status if the given name does not represent a valid http status code']},{isDocumented:!0,arity:1,name:"redirect",qname:"resp:redirect",signature:"($url as xs:string) as empty-sequence()",description:" This function sets the HTTP 302 redirect status code in the response. As\n a result, a redirect to the URL given as parameter will be made.\n",summary:"

This function sets the HTTP 302 redirect status code in the response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"url",type:"xs:string",occurrence:null,description:'
The URL to which the redirect will be made.
'}],returns:{type:"empty-sequence()",description:"The empty-sequence is returned."},errors:[]},{isDocumented:!0,arity:0,name:"serialization-parameters",qname:"resp:serialization-parameters",signature:"() as object()",description:'

Returns the serialization parameters that are currently\n active, i.e. the ones that will be used to serialize the result\n of this request.

\n

This will either be the default, the defaults set when\n calling resp:content-type(), or the ones set by\n resp:serialization-parameters().

\n',summary:"

Returns the serialization parameters that are currently\n active, i.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:"the said serialization parameters"},errors:[]},{isDocumented:!0,arity:1,name:"serialization-parameters",qname:"resp:serialization-parameters",signature:"($params as object()) as empty-sequence()",description:'

Set the serialization parameters used for serializing the result\n of the request.

\n

The following example shows how to set several options\n for the JSON serialization method.\n

\n {\n   "method" : "json",\n   "indent" : false,\n   "encoding" : "UTF-16"\n }\n 
\n

\n

Please note that serialization options set by this function can\n be overwritten by a subsequent call to resp:content-type. In this\n case, the options will be reset to the default for the given\n content-type. Also note, that the output encoding can be overwritten\n by subsequently calling the resp:encoding function.

\n',summary:"

Set the serialization parameters used for serializing the result\n of the request.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"params",type:"object()",occurrence:null,description:'
the serialization parameters that will be used to serialize the result of the request
'}],returns:{type:"empty-sequence()",description:"the function is sequential and, on success, returns the empty sequence."},errors:['err:XQDY0027 if the input is not valid','http:invalid-encoding if the encoding specified in the serialization options is invalid or not supported.']},{isDocumented:!0,arity:0,name:"serializer-defaults-html",qname:"resp:serializer-defaults-html",signature:"() as object()",description:'

Returns an object that can be used to specify the\n settings of serialization parameters for the HTML serialization\n method.

\n

The defaults are\n

\n {\n   "encoding" : "UTF-8",\n   "indent" : true,\n   "method" : "html",\n   "version" : "4.01",\n   "doctype-system" : "http://www.w3.org/TR/html4/loose.dtd",\n   "doctype-public" : "-//W3C//DTD HTML 4.01 Transitional//EN"\n }\n 
\n

\n

For example, those defaults are used when setting\n the content-type to some HTML content-type (i.e. text/html).

\n',summary:"

Returns an object that can be used to specify the\n settings of serialization parameters for the HTML serialization\n method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:"an object that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:0,name:"serializer-defaults-json-xml-hybrid",qname:"resp:serializer-defaults-json-xml-hybrid",signature:"() as object()",description:'

Returns an object that can be used to specify the\n settings of serialization parameters for the json\n serialization method.

\n

The defaults are\n

\n {\n   "encoding" : "UTF-8",\n   "indent" : "yes",\n   "method" : "json"\n }\n 
\n

\n

For example, those defaults are used when setting\n the content-type to some XML content-type (e.g. application/atom+xml).

\n',summary:"

Returns an object that can be used to specify the\n settings of serialization parameters for the json\n serialization method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:"an object that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:0,name:"serializer-defaults-json",qname:"resp:serializer-defaults-json",signature:"() as object()",description:'

Returns an object that can be used to specify the\n settings of serialization parameters for the json-xml hybrid\n serialization method.

\n

The defaults are\n

\n {\n   "encoding" : "UTF-8",\n   "indent" : "yes",\n   "method" : "json"\n }\n 
\n

\n

For example, those defaults are used when setting\n the content-type to application/mixed-json-xml.

\n',summary:"

Returns an object that can be used to specify the\n settings of serialization parameters for the json-xml hybrid\n serialization method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:"an object that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:0,name:"serializer-defaults-text",qname:"resp:serializer-defaults-text",signature:"() as object()",description:'

Returns an object that can be used to specify the\n settings of serialization parameters for the text serialization\n method.

\n

The only default used is\n

\n {\n  "method" : "text",\n  "encoding" : "UTF-8",\n }\n 
\n

\n

For example, this default is used when setting\n the content-type to some text content-type (e.g. text/plain).

\n',summary:"

Returns an object that can be used to specify the\n settings of serialization parameters for the text serialization\n method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:"an object that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:0,name:"serializer-defaults-xhtml",qname:"resp:serializer-defaults-xhtml",signature:"() as object()",description:'

Returns an object that can be used to specify the\n settings of serialization parameters for the XHTML serialization\n method.

\n

The defaults are\n

\n {\n   "encoding" : "UTF-8",\n   "indent" : true,\n   "method" : "xhtml",\n   "omit-xml-declaration" : true,\n   "version" : "1.0",\n   "doctype-system" : "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd",\n   "doctype-public" : "-//W3C//DTD XHTML 1.0 Transitional//EN"\n }\n 
\n

\n

For example, those defaults are used when setting\n the content-type to some XHTML content-type (i.e. application/xhtml+xml).

\n',summary:"

Returns an object that can be used to specify the\n settings of serialization parameters for the XHTML serialization\n method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:"an object that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:0,name:"serializer-defaults-xml",qname:"resp:serializer-defaults-xml",signature:"() as object()",description:'

Returns an object that can be used to specify the\n settings of serialization parameters for the XML serialization\n method.

\n

The defaults are\n

\n {\n  "method" : "xml",\n  "encoding" : "UTF-8",\n  "indent" : true,\n  "omit-xml-declaration" : true,\n  "version" : "1.0"\n }\n 
\n

\n

For example, those defaults are used when setting\n the content-type to some XML content-type (e.g. application/atom+xml).

\n',summary:"

Returns an object that can be used to specify the\n settings of serialization parameters for the XML serialization\n method.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()",description:"an object that can be used to specify the above serialization parameters."},errors:[]},{isDocumented:!0,arity:1,name:"status-code",qname:"resp:status-code",signature:"($status as xs:integer) as empty-sequence()",description:'

Sets the status code of the HTTP response to the integer given as\n parameter.

\n For example,\n resp:status(204)\n will result in "HTTP/1.1 204 No Content".\n',summary:"

Sets the status code of the HTTP response to the integer given as\n parameter.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"status",type:"xs:integer",occurrence:null,description:'
The status code of the HTTP response as integer.
'}],returns:{type:"empty-sequence()",description:"On success, the empty-sequence is returned"},errors:['http:invalid-status-code if the given integer does not reflect a valid HTTP status code']},{isDocumented:!0,arity:1,name:"status",qname:"resp:status",signature:"($status as xs:string) as empty-sequence()",description:'

Sets the status code of the HTTP response to code associated\n with the given string.

\n

For example,\n resp:status($http:no-content)\n will result in "HTTP/1.1 204 No Content".

\n',summary:"

Sets the status code of the HTTP response to code associated\n with the given string.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"status",type:"xs:string",occurrence:null,description:'
The status code of the HTTP response as a string (e.g. $http:no-content)
'}],returns:{type:"empty-sequence()",description:"On success, the empty-sequence is returned"},errors:['http:invalid-status if the given string does not represent a valid HTTP status code;']},{isDocumented:!0,arity:1,name:"valid-status",qname:"resp:valid-status",signature:"($status as xs:string) as xs:boolean",description:" Test whether the given name refers to a valid HTTP status code.\n",summary:"

Test whether the given name refers to a valid HTTP status code.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"status",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:boolean",description:"true if the given name refers to a valid HTTP status code, false otherwise."},errors:[]}],variables:[{name:"http:precondition-required",type:"item()*",description:" A string representing the HTTP Status Code 428 Precondition Required (RFC 6585)\n"},{name:"http:gone",type:"item()*",description:" A string representing the HTTP Status Code 410 GONE\n"},{name:"http:length-required",type:"item()*",description:" A string representing the HTTP Status Code 411 Length Required\n"},{name:"http:precondition-failed",type:"item()*",description:" A string representing the HTTP Status Code 412 Precondition Failed\n"},{name:"http:request-entity-too-large",type:"item()*",description:" A string representing the HTTP Status Code 413 Request Entity Too Large\n"},{name:"http:request-entity-too-long",type:"item()*",description:" A string representing the HTTP Status Code 414 Request Entity Too Long\n"},{name:"http:unsupported-media-type",type:"item()*",description:" A string representing the HTTP Status Code 415 Unsupported Media Type\n"},{name:"http:request-range-not-satisfiable",type:"item()*",description:" A string representing the HTTP Status Code 416 Request Range Not Satisfiable\n"},{name:"http:expectation-failed",type:"item()*",description:" A string representing the HTTP Status Code 417 Expectation Failed\n"},{name:"http:im-a-teapot",type:"item()*",description:" A string representing the HTTP Status Code 418 I'm a teapot (RFC 2324)\n"},{name:"http:enhance-your-calm",type:"item()*",description:" A string representing the HTTP Status Code 420 Enhance Your Calm\n"},{name:"http:unprocessable-entity",type:"item()*",description:" A string representing the HTTP Status Code 422 Unprocessable Entity (WebDAV; RFC 4918)\n"},{name:"http:locked",type:"item()*",description:" A string representing the HTTP Status Code 423 Locked (WebDAV; RFC 4918)\n"},{name:"http:failed-dependency",type:"item()*",description:" A string representing the HTTP Status Code 424 Failed Dependency (WebDAV; RFC 4918)\n"},{name:"http:unordered-collection",type:"item()*",description:" A string representing the HTTP Status Code 425 Unordered Collection\n"},{name:"http:upgrade-required",type:"item()*",description:" A string representing the HTTP Status Code 426 Upgrade Required\n"},{name:"http:conflict",type:"item()*",description:" A string representing the HTTP Status Code 409 Conflict\n"},{name:"http:too-many-requests",type:"item()*",description:" A string representing the HTTP Status Code 429 Too Many Requests (RFC 6585)\n"},{name:"http:request-header-fields-too-large",type:"item()*",description:" A string representing the HTTP Status Code 431 Request Header Fields Too Large (RFC 6585)\n"},{name:"http:internal-server-error",type:"item()*",description:" A string representing the HTTP Status Code 500 Internal Server Error\n"},{name:"http:not-implemented",type:"item()*",description:" A string representing the HTTP Status Code 501 Not Implemented\n"},{name:"http:bad-gateway",type:"item()*",description:" A string representing the HTTP Status Code 502 Bad Gateway\n"},{name:"http:service-unavailable",type:"item()*",description:" A string representing the HTTP Status Code 503 Service Unavailable\n"},{name:"http:gateway-timeout",type:"item()*",description:" A string representing the HTTP Status Code 504 Gateway Timeout\n"},{name:"http:http-version-not-supported",type:"item()*",description:" A string representing the HTTP Status Code 505 HTTP Version Not Supported\n"},{name:"http:variant-also-negotiates",type:"item()*",description:" A string representing the HTTP Status Code 506 Variant Also Negotiates (RFC 2295)\n"},{name:"http:insufficient-storage",type:"item()*",description:" A string representing the HTTP Status Code 507 Insufficient Storage (WebDAV; RFC 4918)\n"},{name:"http:loop-detected",type:"item()*",description:" A string representing the HTTP status code 508 Loop Detected (webdav; rfc 5842)\n"},{name:"http:not-extended",type:"item()*",description:" A string representing the HTTP status code 510 Not Extended (RFC 2774)\n"},{name:"http:network-authentication-required",type:"item()*",description:" A string representing the HTTP status code 511 Network Authentication Required (RFC 6585)\n"},{name:"resp:status-info",type:"object()",description:" Variable containing a description for all the HTTP Status Codes\n"},{name:"http:see-other",type:"item()*",description:" A string representing the HTTP Status Code 303 See Other\n"},{name:"http:switching-protocols",type:"item()*",description:" A string representing the HTTP Status Code 101 Switching Protocols\n"},{name:"http:processing",type:"item()*",description:" A string representing the HTTP Status Code 102 Processing (Web; RFC 2518)\n"},{name:"http:ok",type:"item()*",description:" A string representing the HTTP Status Code 200 OK\n"},{name:"http:created",type:"item()*",description:" A string representing the HTTP Status Code 201 Created\n"},{name:"http:accepted",type:"item()*",description:" A string representing the HTTP Status Code 202 Accepted\n"},{name:"http:non-authoritative",type:"item()*",description:" A string representing the HTTP Status Code 203 Non-Authoritative\n"},{name:"http:no-content",type:"item()*",description:" A string representing the HTTP Status Code 204 No Content\n"},{name:"http:reset-content",type:"item()*",description:" A string representing the HTTP Status Code 205 Reset Content\n"},{name:"http:partial-content",type:"item()*",description:" A string representing the HTTP Status Code 206 Partial Content\n"},{name:"http:multi-status",type:"item()*",description:" A string representing the HTTP Status Code 207 Multi-Status (WebDAV; RFC 5842)\n"},{name:"http:already-reported",type:"item()*",description:" A string representing the HTTP Status Code 208 Already Reported (WebDAV; RFC 5842)\n"},{name:"http:im-used",type:"item()*",description:" A string representing the HTTP Status Code 226 IM Used (RFC 3229)\n"},{name:"http:multiple-choices",type:"item()*",description:" A string representing the HTTP Status Code 300 Multiple Choices\n"},{name:"http:moved-permanently",type:"item()*",description:" A string representing the HTTP Status Code 301 Moved Permantently\n"},{name:"http:found",type:"item()*",description:" A string representing the HTTP Status Code 302 Found\n"},{name:"http:continue",type:"item()*",description:" A string representing the HTTP Status Code 100 Continue\n"},{name:"http:not-modified",type:"item()*",description:" A string representing the HTTP Status Code 304 Not Modified\n"},{name:"http:use-proxy",type:"item()*",description:" A string representing the HTTP Status Code 305 Use Proxy\n"},{name:"http:switch-proxy",type:"item()*",description:" A string representing the HTTP Status Code 306 Switch Proxy\n"},{name:"http:temporary-redirect",type:"item()*",description:" A string representing the HTTP Status Code 307 Temporary Redirect\n"},{name:"http:permanent-redirect",type:"item()*",description:" A string representing the HTTP Status Code 308 Permanent Redirect (http://tools.ietf.org/html/draft-reschke-http-status-308-07)\n"},{name:"http:bad-request",type:"item()*",description:" A string representing the HTTP Status Code 400 Bad Request\n"},{name:"http:unauthorized",type:"item()*",description:" A string representing the HTTP Status Code 401 Unauthorized\n"},{name:"http:payment-required",type:"item()*",description:" A string representing the HTTP Status Code 402 Payment Required\n"},{name:"http:forbidden",type:"item()*",description:" A string representing the HTTP Status Code 403 Forbidden\n"},{name:"http:not-found",type:"item()*",description:" A string representing the HTTP Status Code 404 Not Found\n"},{name:"http:not-allowed",type:"item()*",description:" A string representing the HTTP Status Code 405 Not Allowed\n"},{name:"http:not-acceptable",type:"item()*",description:" A string representing the HTTP Status Code 406 Not Acceptable\n"},{name:"http:proxy-authentication-required",type:"item()*",description:" A string representing the HTTP Status Code 407 Proxy Authentication Required\n"},{name:"http:request-timeout",type:"item()*",description:" A string representing the HTTP Status Code 408 Request Timeout\n"}]},"http://www.zorba-xquery.com/modules/email/smtp":{ns:"http://www.zorba-xquery.com/modules/email/smtp",description:' This module can be used for sending emails.\n The SMTP module contains only one public function that receives two parameters.\n The SMTP server access information passed as an hostInfo element\n and the email message representation as a message element.\n For a quick start see the examples associates with the send(...)\n function. For a complete specification read, the description and the\n documentation associated with this function.\n',sees:['c-client Library part of UW IMAP toolkit'],authors:['Sorin Nasoi, Daniel Thomas'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.zorba-xquery.com/modules/email",prefix:"email"},{uri:"http://www.zorba-xquery.com/modules/email/smtp",prefix:"smtp"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"send",qname:"smtp:send",signature:"($host-info as element(email:hostInfo), $message as element(email:message)) as empty-sequence()",description:' This function sends an email message from the specified account.\n The hostName child element of $host-info must have the form:\n remote_system_name [":" port] [flags]. This syntax is part of the\n Remote names\n syntax defined in the UW IMAP toolkit. The remote_system_name and\n flags fragments are explained in the section III of this document.\n For example the hostName could look like:\n \n The $host-info parameter could then look like this:\n
\n <hostInfo>\n   <hostName>smtp.gmail.com:587/tls/novalidate-cert</hostName>\n   <userName>username</userName>\n   <password>password</password>\n </hostInfo>\n 
\n For a complete of the structure of an email message, see the imported email\n schema: http://www.zorba-xquery.com/modules/email\n All the data passed to this function does not need to be validated.\n The only requirement is that they have a valid format and are in the\n correct namespace according to the schema:\n http://www.zorba-xquery.com/modules/email.\n',summary:"

This function sends an email message from the specified account.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"host-info",type:"element(email:hostInfo)",occurrence:null,description:'
The SMTP host, user name, and password.
'},{name:"message",type:"element(email:message)",occurrence:null,description:'
The message to send as defined in the email XML schema.
'}],returns:{type:"empty-sequence()",description:"The function is declared as sequential and has side-effects. It returns the empty sequence."},errors:['smtp:SMTP0001 The message format is invalid.','smtp:SMTP0002 The message has no recipient.','smtp:SMTP0003 The message could not be sent.','smtp:SMTP9999 If any other error occurs.','err:XQDY0027 If the values of the arguments are not not valid according to the email schema: http://www.zorba-xquery.com/modules/email']}],variables:[]},"http://www.28msec.com/modules/project":{ns:"http://www.28msec.com/modules/project",description:" This module contains functions to introspect a project.\n",sees:[],authors:['28msec'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://zorba.io/modules/base64",prefix:"base64"},{uri:"http://zorba.io/modules/hmac",prefix:"hmac"},{uri:"http://www.28msec.com/modules/project",prefix:"project"},{uri:"http://zorba.io/modules/random",prefix:"random"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:0,name:"create-seed",qname:"project:create-seed",signature:"() as string",description:" Creates and return new random project seed.\n",summary:"

Creates and return new random project seed.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:"string",description:"the project seed"},errors:['project:SEED-EXISTS the project already has a seed file','project:SEED-FILE error writing the seed file','project:SEED the specified seed is not at least 8 characters long']},{isDocumented:!0,arity:1,name:"create-seed",qname:"project:create-seed",signature:"($seed as string) as empty-sequence()",description:" Creates a new project seed.\n The specified seed must be at least 8 characters long.\n",summary:"

Creates a new project seed.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"seed",type:"string",occurrence:null,description:'
The new project seed.
'}],returns:{type:"empty-sequence()",description:"the empty sequence"},errors:['project:SEED-EXISTS the project already has a seed file','project:SEED-FILE error writing the seed file']},{isDocumented:!0,arity:0,name:"has-seed",qname:"project:has-seed",signature:"() as boolean external",description:" Checks if the project has a seed file.\n",summary:"

Checks if the project has a seed file.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[],returns:{type:"boolean",description:"whether the project has a seed file or not"},errors:['project:SEED-FILE error accessing the seed file']},{isDocumented:!0,arity:0,name:"name",qname:"project:name",signature:"() as string external",description:" Returns the name of the project.\n",summary:"

Returns the name of the project.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"string",description:"the said name"},errors:[]},{isDocumented:!0,arity:0,name:"read-or-create-seed",qname:"project:read-or-create-seed",signature:"() as string",description:" Returns the project seed. If the project has no seed a new random one is created.\n",summary:"

Returns the project seed.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:"string",description:"the project seed"},errors:['project:SEED-FILE error reading or writing the seed file']},{isDocumented:!0,arity:0,name:"scheduler-host",qname:"project:scheduler-host",signature:"() as string external",description:" Returns the host of the scheduler.\n",summary:"

Returns the host of the scheduler.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"string",description:"the scheduler host."},errors:[]},{isDocumented:!0,arity:0,name:"seed",qname:"project:seed",signature:"() as string external",description:" Returns the project seed.\n",summary:"

Returns the project seed.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[],returns:{type:"string",description:"the project seed"},errors:['project:NO-SEED the project seed file cannot be found','project:SEED-FILE error reading the seed file']},{isDocumented:!0,arity:0,name:"set-seed",qname:"project:set-seed",signature:"() as string",description:" Sets a new random project seed.\n",summary:"

Sets a new random project seed.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:"string",description:"the project seed"},errors:['project:SEED-FILE error reading or writing the seed file']},{isDocumented:!0,arity:1,name:"set-seed",qname:"project:set-seed",signature:"($seed as string) as empty-sequence()",description:" Sets the project seed.\n The specified seed must be at least 8 characters long.\n",summary:"

Sets the project seed.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"seed",type:"string",occurrence:null,description:'
The new project seed.
'}],returns:{type:"empty-sequence()",description:"the project seed"},errors:['project:SEED-FILE error reading or writing the seed file','project:SEED the specified seed is not at least 8 characters long']},{isDocumented:!0,arity:0,name:"token",qname:"project:token",signature:"() as xs:base64Binary",description:" Creates a new project token, that expires after 12 hours.\n",summary:"

Creates a new project token, that expires after 12 hours.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[],returns:{type:"xs:base64Binary",description:"the project token"},errors:[]},{isDocumented:!0,arity:1,name:"token",qname:"project:token",signature:"($expiration as xs:anyAtomicType) as xs:base64Binary",description:" Creates a new project token, that expires at the desired date.\n The input to the function contains the expiration information.\n If a duration is used, then the function will create a token expiring after the specified duration.\n If a dateTime is used, then the function will create a token expiring that date.\n If an integer is used, then the function will create a token expiring after the specified number of seconds.\n",summary:"

Creates a new project token, that expires at the desired date.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"expiration",type:"xs:anyAtomicType",occurrence:null,description:'
describes the expiration date of the token.
'}],returns:{type:"xs:base64Binary",description:"the new project token"},errors:['project:INVALID-PARAMETER expiration information is invalid (not a duration, date or number of seconds)']}],variables:[]},"http://zorba.io/modules/http-client":{ns:"http://zorba.io/modules/http-client",description:'

\n This module provides functions for performing HTTP requests.\n

\n

A simple GET request using the get#1 convenience function

\n
\n import module namespace http="http://zorba.io/modules/http-client";\n http:get("http://www.example.com")\n 
\n

\n This example makes a GET request to example.com and returns the server\'s response\n as a JSON object.\n

\n
\n {\n   "status" : 200,\n   "message" : "OK",\n   "headers" : {\n     "Content-Length" : "1270",\n     "Date" : "Tue, 11 Jun 2013 22:27:10 GMT",\n     ...\n   },\n   "body" : {\n     "media-type" : "text/html",\n     "content" : "..."\n   }\n }\n 
\n

Response format

\n

Most functions in this module (all except options#1)\n return a single JSON item, describing the server\'s response, as in the previous\n example.\n The server status (integer) and message (string) fields are always present.\n If the server replied sending one or more headers, they are reported\n in an optional headers object. Each header is represented as a single (string)\n field.

\n

For non-multipart responses, as in the previous example, the response body,\n if any, is reported as a body object. This object contains both the (string)\n media-type returned by the server and its content.\n The type of the content field is determined by the media-type returned by the\n server. If the media-type indicates that the body content is textual,\n then the content has type string, base64Binary otherwise.\n Specifically, the body content is considered textual only if the MIME-type specified in\n the media-type is one of:\n

\n or if the MIME-type starts with "text/" or ends with "+xml".

\n

For multipart responses, multiple bodies are returned, as in the following example:

\n
\n {\n   "status" : 200,\n   "message" : "OK",\n   "headers" : {\n     "Date" : "Tue, 11 Jun 2013 22:34:13 GMT",\n     ...\n   },\n   "multipart" : {\n     "boundary": "--AaB03x",\n     "parts": [\n       {\n         "headers" : {\n            "Content Disposition: file",\n            ...\n         },\n         "body": {\n           "media-type" : "image/gif",\n           "content" : "..."\n         }\n       },\n       {\n         "body" : {\n           "media-type" : "text/html",\n           "content" : "..."\n         }\n       }\n    ]\n }\n 
\n

The multipart field contains both the boundary used to separate parts\n and an array containing all parts. Each part contains its specific headers,\n if any, and the corresponding body.

\n

Important Notice Regarding Nondeterministic Functions

\n

\n The following functions in this module -\n get#1,\n get-text#1,\n get-binary#1,\n send-nondeterministic-request-1,\n head#1, and\n options#1\n are declared to be nondeterministic, which means that their results\n will not be cached.\n However, they are not declared to be\n sequential, which means that they may be re-ordered during query optimization.\n According to the HTTP RFC, GET, HEAD an OPTIONS requests should not have any side-effects.\n However, in practice it is not uncommon, especially for GET requests, to have side-effects.\n If your application depends on the ordering of side-effects from requests issued through\n these functions, you should either use the send-request()\n function (which is declared sequential), or alternatively\n wrap each call to get() in your own sequential function, to ensure\n that the requests are not reordered.\n Conversely, if you want their results to be cached you can use the\n send-deterministic-request()\n function (which is declared deterministic).\n

\n

$href Arguments to Functions

\n

Several functions in this module accept a URL argument named $href. In\n all cases, the value passed to $href must be a valid anyURI.\n However, all functions declare $href to be of type string. This\n is for convenience, since you can pass a string literal value (that\n is, a URL in double-quotes spelled out explicitly in your query)\n to an string parameter.

\n

Relation to the EXPath http-client module

\n

EXPath defines its own http-client\n module, which is available separately.\n There are two primary differences between EXPath\'s http-client and\n this module:\n

    \n
  1. EXPath does not include the simpler get(), post(), put(), delete(),\n head(), options() and patch() functions defined by this module.
  2. \n
  3. EXPath uses XML to represent request for its send-request() function,\n whereas this module uses JSON.
  4. \n
  5. EXPath specifies that all XML content returned by an HTTP server\n will be parsed and returned as an XML document, whereas all HTML content\n will be tidied up into valid XML, and then parsed into an element.\n This module returns any textual content as string and any binary content\n as base6Binary.
  6. \n
  7. EXPath accepts XML nodes as body in the send-request() function and\n automatically serializes them into a string. The send-request() function\n defined in this module only allows string, base64Binary, and hexBinary\n as body types.\n
  8. \n
\n

\n

\n See the full spec\n of the EXPath http-client module for more information.\n

\n',sees:['XQuery 1.1: Function Declaration'],authors:['Federico Cavalieri'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://zorba.io/modules/http-client",prefix:"http"},{uri:"http://jsoniq.org/function-library",prefix:"libjn"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"delete",qname:"http:delete",signature:"($href as string) as object()",description:'

\n This function makes an HTTP DELETE request to a given URL.\n

\n',summary:"

\n This function makes an HTTP DELETE request to a given URL.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified request is not valid.','http:TIMEOUT A timeout occurred waiting for the response.']},{isDocumented:!0,arity:1,name:"get-binary",qname:"http:get-binary",signature:"($href as string) as object()",description:'

\n This function makes a GET request on a given URL. All returned bodies\n are forced to be interpreted as binary data, and will be returned\n as base64Binary items.\n

\n',summary:"

\n This function makes a GET request on a given URL.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified href is not valid.','http:TIMEOUT A timeout occurred waiting for the response.']},{isDocumented:!0,arity:1,name:"get-text",qname:"http:get-text",signature:"($href as string) as object()",description:'

\n This function makes a GET request to a given URL. All returned bodies\n are forced to be interpreted as textual, with a UTF-8 charset and will\n be returned as string items.\n

\n',summary:"

\n This function makes a GET request to a given URL.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified href is not valid.','http:TIMEOUT A timeout occurred waiting for the response.']},{isDocumented:!0,arity:1,name:"get",qname:"http:get",signature:"($href as string) as object()",description:'

\n This function makes a GET request to a given URL.\n

\n',summary:"

\n This function makes a GET request to a given URL.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified href is not valid.','http:TIMEOUT A timeout occurred waiting for the response.']},{isDocumented:!0,arity:1,name:"head",qname:"http:head",signature:"($href as string) as object()",description:'

\n This function makes an HTTP HEAD request on a given URL.\n

\n',summary:"

\n This function makes an HTTP HEAD request on a given URL.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified href is not valid.','http:TIMEOUT A timeout occurred waiting for the response.']},{isDocumented:!0,arity:1,name:"options",qname:"http:options",signature:"($href as string) as string*",description:'

\n This function makes an HTTP OPTIONS request, which asks the server\n which operations it supports.\n

\n',summary:"

\n This function makes an HTTP OPTIONS request, which asks the server\n which operations it supports.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'}],returns:{type:"string*",description:"A sequence of string values of the allowed operations."},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified href is not valid.','http:TIMEOUT A timeout occurred waiting for the response.']},{isDocumented:!0,arity:2,name:"patch",qname:"http:patch",signature:"($href as string, $body as atomic) as object()",description:'

\n This function makes an HTTP PATCH request to a given URL.\n

\n

\n The body passed to this function must be either a string, a base64Binary or\n an hexBinary.\n If it is a string, the Content-Type sent to the server will be "text/plain",\n "application/octet-stream" otherwise.\n

\n',summary:"

\n This function makes an HTTP PATCH request to a given URL.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'},{name:"body",type:"atomic",occurrence:null,description:'
The body which will be sent to the server.
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified request is not valid.','http:TIMEOUT A timeout occurred waiting for the response.']},{isDocumented:!0,arity:3,name:"patch",qname:"http:patch",signature:"($href as string, $body as atomic, $content-type as string) as object()",description:'

\n This function makes an HTTP PATCH request to a given URL.\n

\n

\n The body passed to this function must be either a string, a base64Binary, or\n an hexBinary.\n In any case, Content-Type of the request sent to the server will\n be $content-type.\n

\n',summary:"

\n This function makes an HTTP PATCH request to a given URL.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'},{name:"body",type:"atomic",occurrence:null,description:'
The body which will be sent to the server.
'},{name:"content-type",type:"string",occurrence:null,description:'
The content type of $body to send to the server.
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified request is not valid.','http:TIMEOUT A timeout occurred waiting for the response.','http:CHARSET The specified charset is unsupported.']},{isDocumented:!0,arity:2,name:"post",qname:"http:post",signature:"($href as string, $body as atomic) as object()",description:'

\n This function makes an HTTP POST request to a given URL.\n

\n

\n The body passed to this function must be either a string, a base64Binary, or an\n hexBinary.\n If it is a string, the Content-Type sent to the server will be "text/plain",\n "application/octet-stream" otherwise.\n

\n',summary:"

\n This function makes an HTTP POST request to a given URL.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'},{name:"body",type:"atomic",occurrence:null,description:'
The body which will be sent to the server.
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified request is not valid.','http:TIMEOUT A timeout occurred waiting for the response.']},{isDocumented:!0,arity:3,name:"post",qname:"http:post",signature:"($href as string, $body as atomic, $content-type as string) as object()",description:'

\n This function makes an HTTP POST request to a given URL.\n

\n

\n The body passed to this function must be either a string, a base64Binary,\n or an hexBinary.\n In any case, Content-Type of the request sent to the server will\n be $content-type.\n

\n',summary:"

\n This function makes an HTTP POST request to a given URL.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'},{name:"body",type:"atomic",occurrence:null,description:'
The body which will be sent to the server
'},{name:"content-type",type:"string",occurrence:null,description:'
The content type of the body as described above.
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified request is not valid.','http:TIMEOUT A timeout occurred waiting for the response.','http:CHARSET The specified charset is unsupported.']},{isDocumented:!0,arity:2,name:"put",qname:"http:put",signature:"($href as string, $body as atomic) as object()",description:'

\n This function makes an HTTP PUT request to a given URL.\n

\n

\n The body passed to this function must be either a string, a base64Binary or\n an hexBinary.\n If it is a string, the Content-Type sent to the server will be "text/plain",\n "application/octet-stream" otherwise.\n

\n',summary:"

\n This function makes an HTTP PUT request to a given URL.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'},{name:"body",type:"atomic",occurrence:null,description:'
The body which will be sent to the server.
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified request is not valid.','http:TIMEOUT A timeout occurred waiting for the response.']},{isDocumented:!0,arity:3,name:"put",qname:"http:put",signature:"($href as string, $body as atomic, $content-type as string) as object()",description:'

\n This function makes an HTTP PUT request to a given URL.\n

\n

\n The body passed to this function must be either a string, a base64Binary, or\n an hexBinary.\n In any case, Content-Type of the request sent to the server will\n be $content-type.\n

\n',summary:"

\n This function makes an HTTP PUT request to a given URL.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"href",type:"string",occurrence:null,description:'
The URL to which the request will be made (see note above).
'},{name:"body",type:"atomic",occurrence:null,description:'
The body which will be sent to the server.
'},{name:"content-type",type:"string",occurrence:null,description:'
The content type of $body to send to the server.
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified request is not valid.','http:TIMEOUT A timeout occurred waiting for the response.','http:CHARSET The specified charset is unsupported.']},{isDocumented:!0,arity:1,name:"send-deterministic-request",qname:"http:send-deterministic-request",signature:"($request as object()) as object()",description:'

\n This function sends an HTTP request and returns the corresponding response.\n

\n

\n This function has the same semantics as send-request-1,\n but is declared as deterministic and thus should only be used when\n the request has no side-effects and behaves deterministic as required by the\n application.\n

\n',summary:"

\n This function sends an HTTP request and returns the corresponding response.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"request",type:"object()",occurrence:null,description:'
see request parameter of send-request#1
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified request is not valid.','http:TIMEOUT A timeout occurred waiting for the response.','http:FOLLOW Cannot follow a redirect of a POST, PUT, or DELETE request.','http:CHARSET The specified charset is unsupported.']},{isDocumented:!0,arity:1,name:"send-nondeterministic-request",qname:"http:send-nondeterministic-request",signature:"($request as object()) as object()",description:'

\n This function sends an HTTP request and returns the corresponding response.\n

\n

\n This function has the same semantics as send-request-1,\n but is declared as being non deterministic and thus should only be used when\n the request has no side-effects.\n

\n',summary:"

\n This function sends an HTTP request and returns the corresponding response.

",annotation_str:" %an:nondeterministic",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"nondeterministic",value:""}],updating:!1,parameters:[{name:"request",type:"object()",occurrence:null,description:'
see request parameter of send-request#1
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified request is not valid.','http:TIMEOUT A timeout occurred waiting for the response.','http:FOLLOW Cannot follow a redirect of a POST, PUT, or DELETE request.','http:CHARSET The specified charset is unsupported.']},{isDocumented:!0,arity:1,name:"send-request",qname:"http:send-request",signature:"($request as object()) as object()",description:'

\n This function sends an HTTP request and returns the corresponding response.\n

\n

\n This function is declared as sequential and should be used whenever the\n request may have side-effects.\n

\n

\n The request parameters are specified in the $request JSON object, which\n has the following minimal structure:\n

\n   {\n     "href": "http://www.example.com"\n   }\n 
\n

\n

This object specifies a GET request of the URI "http://www.example.com"

\n

Additional optional parameters can be specified when issuing a request,\n using the following structure:

\n
\n  {\n    "method": "POST",\n    "href": "http://www.example.com",\n    "authentication":\n    {\n      "username" : "user",\n      "password" : "pass",\n      "auth-method" : "Basic"\n    },\n    "options":\n    {\n      "status-only": true,\n      "override-media-type": "text/plain",\n      "follow-redirect": false,\n      "timeout": 30,\n      "user-agent": "Mozilla/5.0",\n      "retry":\n      {\n        "delay": [1000, 2000, 5000],\n        "on-connection-error": false,\n        "on-statuses": [500, 501]\n      }\n    },\n    "headers":\n    {\n      "name": "value",\n      ...\n    },\n    "body":\n    {\n      "media-type": "text/plain",\n      "content": "..."\n    }\n  }\n
\n

\n The method field (string) defines the HTTP verb to use in the HTTP request (i.e., GET, HEAD, OPTIONS,\n POST, PUT, DELETE). If not specified GET will be used.\n The authentication field can be used to specify the credentials and authentication method\n used when issuing a request (e.g, Basic). If the authentication field is specified, all its (string)\n subfields must be specified. If an authentication object is provided, it overrides any\n Authorization header specified in the request.\n Additionally, the following options can be specified:\n

\n

\n

One or more headers can be sent to the server, specifying them in an optional headers object.\n Each header is represented as a single (string) field. These headers are overridden if the corresponding\n option/authentication has been specified in the request.

\n

For non-multipart request a body object can be specified.\n This object must contain both the desired (string) media-type and its content.\n The type of the content field must be either string, base64Binary, or hexBinary.

\n

For multipart requests, multipart object can be specified in place of the body object.\n The multipart object has the following structure:

\n
\n  "multipart" : {\n    "boundary": "--AaB03x",\n    "parts": [\n      {\n        "headers" : {\n           "Content Disposition: file",\n           ...\n        },\n        "body": {\n          "media-type" : "image/gif",\n          "content" : "..."\n        }\n      },\n      {\n        "body" : {\n          "media-type" : "text/html",\n          "content" : "..."\n        }\n      }\n   ]\n }\n 
\n

The multipart field contains an optional (string) field which specifies\n the boundary used to separate each part and an array containing all parts.\n Each part contains its specific headers, if any, and the corresponding body.\n

\n',summary:"

\n This function sends an HTTP request and returns the corresponding response.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[{name:"request",type:"object()",occurrence:null,description:'
a JSON http-client request object
'}],returns:{type:"object()",description:'standard http-client return type.'},errors:['http:HTTP An HTTP error occurred.','http:REQUEST The specified request is not valid.','http:TIMEOUT A timeout occurred waiting for the response.','http:FOLLOW Cannot follow a redirect of a POST, PUT, or DELETE request.','http:CHARSET The specified charset is unsupported.']}],variables:[]},"http://zorba.io/modules/data-cleaning/consolidation":{ns:"http://zorba.io/modules/data-cleaning/consolidation",description:'

This library module provides data consolidation functions that generally take as input a sequence of XML nodes\n and apply some rule in order do decide which node is better suited to represent the entire sequence.

\n

\n

The logic contained in this module is not specific to any particular XQuery implementation,\n although the consolidation functions based on matching sequences against XPath expressions require\n some form of dynamic evaluation for XPath expressions.

\n',sees:[],authors:['Bruno Martins'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/data-cleaning/consolidation",prefix:"con"},{uri:"http://zorba.io/modules/data-cleaning/set-similarity",prefix:"set"},{uri:"http://zorba.io/modules/data-cleaning/character-based-string-similarity",prefix:"simc"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"all-xpaths",qname:"con:all-xpaths",signature:"($s as element(*)*, $paths as xs:string*) as element(*)*",description:'

Returns the elements from an input sequence of elements that, when matched to a given set of XPath expressions,\n produce a non-empty set of nodes in all the cases.

\n

\n

Example usage :

 all-xpaths( ( <a><b/></a>, <c><d/></c>, <d/>), (".//b") ) 

\n

\n

The function invocation in the example above returns :

 (<a><b/></a>) 

\n',summary:"

Returns the elements from an input sequence of elements that, when matched to a given set of XPath expressions,\n produce a non-empty set of nodes in all the cases.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"element(*)",occurrence:"*",description:'
A sequence of elements.
'},{name:"paths",type:"xs:string",occurrence:"*",description:'
A sequence of strings denoting XPath expressions.
'}],returns:{type:"element(*)*",description:"The elements that, when matched to the given set of XPath expressions, always return a non-empty set of nodes."},errors:[]},{isDocumented:!0,arity:1,name:"least-attributes",qname:"con:least-attributes",signature:"($s) as element(*)",description:'

Returns the single node having the smallest number of descending attributes (attributes at any given depth)\n in a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

least-attributes( ( <a att1="a1" att2="a2"/>, <b att1="a1" />, <c/> ) )

\n

\n

The function invocation in the example above returns :

(<c/>)

\n',summary:"

Returns the single node having the smallest number of descending attributes (attributes at any given depth)\n in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the smallest number of descending attributes in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"least-distinct-attributes",qname:"con:least-distinct-attributes",signature:"($s) as element(*)",description:'

Returns the single node having the smallest number of distinct descending attributes (attributes at any\n given depth) in a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

 least-distinct-attributes( ( <a att1="a1" att2="a2"/>, <b att1="a1" />, <c/> ) ) 

\n

\n

The function invocation in the example above returns :

 (<c/>) 

\n',summary:"

Returns the single node having the smallest number of distinct descending attributes (attributes at any\n given depth) in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the smallest number of distinct descending attributes in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"least-distinct-elements",qname:"con:least-distinct-elements",signature:"($s) as element(*)",description:'

Returns the single node having the smallest number of distinct descending elements (sub-elements at any\n given depth) in a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

 least-distinct-elements( ( <a><b/></a>, <b><c/></b>, <d/>) ) 

\n

\n

The function invocation in the example above returns :

 (<d/>) 

\n',summary:"

Returns the single node having the smallest number of distinct descending elements (sub-elements at any\n given depth) in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the smallest number of distinct descending elements in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"least-distinct-nodes",qname:"con:least-distinct-nodes",signature:"($s) as element(*)",description:'

Returns the single node having the smallest number of distinct descending nodes (sub-nodes at any given depth)\n in a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

 least-distinct-nodes( ( <a><b/></a>, <b><c/></b>, <d/>) ) 

\n

\n

The function invocation in the example above returns :

 (<d/>) 

\n',summary:"

Returns the single node having the smallest number of distinct descending nodes (sub-nodes at any given depth)\n in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the smallest number of distinct descending nodes in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"least-elements",qname:"con:least-elements",signature:"($s) as element(*)",description:'

Returns the single node having the smallest number of descending elements (sub-elements at any given depth)\n in a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

least-elements( ( <a><b/></a>, <b><c/></b>, <d/>) )

\n

\n

The function invocation in the example above returns :

(<d/>)

\n',summary:"

Returns the single node having the smallest number of descending elements (sub-elements at any given depth)\n in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the smallest number of descending elements in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"least-frequent",qname:"con:least-frequent",signature:"($s) as item()",description:'

Returns the single less frequent node in a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

least-frequent( ( "a", "a", "b") )

\n

\n

The function invocation in the example above returns :

("b")

\n',summary:"

Returns the single less frequent node in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"item()",description:"The least frequent node in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"least-nodes",qname:"con:least-nodes",signature:"($s) as element(*)",description:'

Returns the single node having the smallest number of descending nodes (sub-nodes at any given depth)\n in a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

least-nodes( ( <a><b/></a>, <b><c/></b>, <d/>) )

\n

\n

The function invocation in the example above returns :

(<d/>)

\n',summary:"

Returns the single node having the smallest number of descending nodes (sub-nodes at any given depth)\n in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the smallest number of descending nodes in the input sequence."},errors:[]},{isDocumented:!0,arity:2,name:"least-similar-edit-distance",qname:"con:least-similar-edit-distance",signature:"($s as xs:string*, $m as xs:string) as xs:string?",description:'

Returns the single least similar string, in terms of the edit distance metric towards an input string,\n in a sequence of strings provided as input. If more than one string has a minimum similarity (a maximum\n value for the edit distance metric), return the first string according to the order of the input sequence.

\n

\n

Example usage :

least-similar-edit-distance( ( "aaabbbccc", "aaabbb", "eeefff" ), "aaab" )

\n

\n

The function invocation in the example above returns :

( "eeefff" )

\n',summary:"

Returns the single least similar string, in terms of the edit distance metric towards an input string,\n in a sequence of strings provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"xs:string",occurrence:"*",description:'
A sequence of strings.
'},{name:"m",type:"xs:string",occurrence:null,description:'
The string towards which we want to measure the edit distance.
'}],returns:{type:"xs:string?",description:"The least similar string in the input sequence."},errors:[]},{isDocumented:!0,arity:2,name:"least-tokens",qname:"con:least-tokens",signature:"($s as xs:string*, $r as xs:string) as xs:string?",description:'

Returns the single shortest string, in terms of the number of tokens, in a sequence of strings provided as input.

\n

If more then one answer is possible, return the first string according to the order of the input sequence.

\n

\n

Example usage :

least-tokens( ( "a b c", "a b", "a"), " +" )

\n

\n

The function invocation in the example above returns :

("a")

\n',summary:"

Returns the single shortest string, in terms of the number of tokens, in a sequence of strings provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"xs:string",occurrence:"*",description:'
A sequence of strings.
'},{name:"r",type:"xs:string",occurrence:null,description:'
A regular expression forming the delimiter character(s) which mark the boundaries between adjacent tokens.
'}],returns:{type:"xs:string?",description:"The shortest string in the input sequence, in terms of the number of tokens."},errors:[]},{isDocumented:!0,arity:2,name:"least-xpaths",qname:"con:least-xpaths",signature:"($s as element(*)*, $paths as xs:string*) as element(*)*",description:'

Returns the single element from an input sequence of elements that matches the smallest number of\n XPath expressions from a given set, producing a non-empty set of nodes.

\n

If more then one answer is possible, return the first element according to the order of the input sequence.

\n

\n

Example usage :

 least-xpaths( ( <a><b/></a>, <d><c/><b/></d>, <d/>) , (".//b", ".//c") ) 

\n

\n

The function invocation in the example above returns :

 ( $lt;d/> ) 

\n',summary:"

Returns the single element from an input sequence of elements that matches the smallest number of\n XPath expressions from a given set, producing a non-empty set of nodes.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"element(*)",occurrence:"*",description:'
A sequence of elements.
'},{name:"paths",type:"xs:string",occurrence:"*",description:'
A sequence of strings denoting XPath expressions.
'}],returns:{type:"element(*)*",description:"The element that matches the smallest number of XPath expressions producing a non-empty set of nodes."},errors:[]},{isDocumented:!0,arity:1,name:"longest",qname:"con:longest",signature:"($s as xs:string*) as xs:string?",description:'

Returns the single longest string, in terms of the number of characters, in a sequence of strings provided as input.

\n

If more then one answer is possible, return the first string according to the order of the input sequence.

\n

\n

Example usage :

con:longest( ( "a", "aa", "aaa") )

\n

\n

The function invocation in the example above returns :

("aaa")

\n',summary:"

Returns the single longest string, in terms of the number of characters, in a sequence of strings provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"xs:string",occurrence:"*",description:'
A sequence of strings.
'}],returns:{type:"xs:string?",description:"The longest string in the input sequence."},errors:[]},{isDocumented:!0,arity:2,name:"matching",qname:"con:matching",signature:"($s as xs:string*, $r as xs:string) as xs:string*",description:'

Returns the strings from an input sequence of strings that match a particular regular expression.

\n

\n

Example usage :

matching( ( "a A b", "c AAA d", "e BB f"), "A+" )

\n

\n

The function invocation in the example above returns :

( "a A b", "c AAA d")

\n',summary:"

Returns the strings from an input sequence of strings that match a particular regular expression.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"xs:string",occurrence:"*",description:'
A sequence of strings.
'},{name:"r",type:"xs:string",occurrence:null,description:'
The regular expression to be used in the matching.
'}],returns:{type:"xs:string*",description:"The strings in the input sequence that match the input regular expression."},errors:[]},{isDocumented:!0,arity:1,name:"most-attributes",qname:"con:most-attributes",signature:"($s) as element(*)",description:'

Returns the single node having the largest number of descending attributes (attributes at any given depth)\n in a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

most-attributes( ( <a att1="a1" att2="a2"/>, <b att1="a1" />, <c/> ) )

\n

\n

The function invocation in the example above returns :

(<a att1="a1" att2="a2"/>)

\n',summary:"

Returns the single node having the largest number of descending attributes (attributes at any given depth)\n in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the largest number of descending attributes in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"most-distinct-attributes",qname:"con:most-distinct-attributes",signature:"($s) as element(*)",description:'

Returns the single node having the largest number of distinct descending attributes (attributes at any\n given depth) in a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

most-distinct-attributes( ( <a att1="a1" att2="a2" att3="a3"/>, <a att1="a1" att2="a2"><b att2="a2" /></a>, <c/> ) )

\n

\n

The function invocation in the example above returns :

(<a att1="a1" att2="a2" att3="a3"/>)

\n',summary:"

Returns the single node having the largest number of distinct descending attributes (attributes at any\n given depth) in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the largest number of distinct descending attributes in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"most-distinct-elements",qname:"con:most-distinct-elements",signature:"($s) as element(*)",description:'

Returns the single node having the largest number of distinct descending elements (sub-elements at any\n given depth) in a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

most-distinct-elements( ( <a><b/><c/><d/></a>, <a><b/><b/><c/></a>, <a/> ) )

\n

\n

The function invocation in the example above returns :

(<a><b/><c/><d/></a>)

\n',summary:"

Returns the single node having the largest number of distinct descending elements (sub-elements at any\n given depth) in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the largest number of distinct descending elements in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"most-distinct-nodes",qname:"con:most-distinct-nodes",signature:"($s) as element(*)",description:'

Returns the single node having the largest number of distinct descending nodes (sub-nodes at any given depth) in\n a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

most-distinct-nodes( ( <a><b/></a>, <a><a/></a>, <b/>) )

\n

\n

The function invocation in the example above returns :

(<a><b/></a>)

\n',summary:"

Returns the single node having the largest number of distinct descending nodes (sub-nodes at any given depth) in\n a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the largest number of distinct descending nodes in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"most-elements",qname:"con:most-elements",signature:"($s) as element(*)",description:'

Returns the single node having the largest number of descending elements (sub-elements at any given depth)\n in a sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

most-elements( ( <a><b/></a>, <a/>, <b/>) )

\n

\n

The function invocation in the example above returns :

(<a><b/></a>)

\n',summary:"

Returns the single node having the largest number of descending elements (sub-elements at any given depth)\n in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the largest number of descending elements in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"most-frequent",qname:"con:most-frequent",signature:"($s) as item()",description:'

Returns the single most frequent node in a sequence of nodes provided as input.

\n

If more then one answer is possible, returns the first node according to the order of the input sequence.

\n

\n

Example usage :

most-frequent( ( "a", "a", "b") )

\n

\n

The function invocation in the example above returns :

("a")

\n',summary:"

Returns the single most frequent node in a sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"item()",description:"The most frequent node in the input sequence."},errors:[]},{isDocumented:!0,arity:1,name:"most-nodes",qname:"con:most-nodes",signature:"($s) as element(*)",description:'

Returns the single node having the largest number of descending nodes (sub-nodes at any given depth) in a\n sequence of nodes provided as input.

\n

If more then one answer is possible, return the first node according to the order of the input sequence.

\n

\n

Example usage :

most-nodes( ( <a><b/></a>, <a/>, <b/>) )

\n

\n

The function invocation in the example above returns :

(<a><b/></a>)

\n',summary:"

Returns the single node having the largest number of descending nodes (sub-nodes at any given depth) in a\n sequence of nodes provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A sequence of nodes.
'}],returns:{type:"element(*)",description:"The node having the largest number of descending nodes in the input sequence."},errors:[]},{isDocumented:!0,arity:2,name:"most-similar-edit-distance",qname:"con:most-similar-edit-distance",signature:"($s as xs:string*, $m as xs:string) as xs:string?",description:'

Returns the single most similar string, in terms of the edit distance metric towards an input string,\n in a sequence of strings provided as input. If more than one string has a maximum similarity (a minimum\n value for the edit distance metric), the function return the first string according to the order of the\n input sequence.

\n

\n

Example usage :

most-similar-edit-distance( ( "aaabbbccc", "aaabbb", "eeefff" ), "aaab" )

\n

\n

The function invocation in the example above returns :

( "aaabbb" )

\n',summary:"

Returns the single most similar string, in terms of the edit distance metric towards an input string,\n in a sequence of strings provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"xs:string",occurrence:"*",description:'
A sequence of strings.
'},{name:"m",type:"xs:string",occurrence:null,description:'
The string towards which we want to measure the edit distance.
'}],returns:{type:"xs:string?",description:"The most similar string in the input sequence."},errors:[]},{isDocumented:!0,arity:2,name:"most-tokens",qname:"con:most-tokens",signature:"($s as xs:string*, $r as xs:string) as xs:string?",description:'

Returns the single longest string, in terms of the number of tokens, in a sequence of strings provided as input.

\n

If more then one answer is possible, return the first string according to the order of the input sequence.

\n

\n

Example usage :

most-tokens( ( "a b c", "a b", "a"), " +" )

\n

\n

The function invocation in the example above returns :

("a b c")

\n',summary:"

Returns the single longest string, in terms of the number of tokens, in a sequence of strings provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"xs:string",occurrence:"*",description:'
A sequence of strings.
'},{name:"r",type:"xs:string",occurrence:null,description:'
A regular expression forming the delimiter character(s) which mark the boundaries between adjacent tokens.
'}],returns:{type:"xs:string?",description:"The longest string in the input sequence, in terms of the number of tokens."},errors:[]},{isDocumented:!0,arity:2,name:"most-xpaths",qname:"con:most-xpaths",signature:"($s as element(*)*, $paths as xs:string*) as element(*)*",description:'

Returns the single element from an input sequence of elements that matches the largest number of\n XPath expressions from a given set, producing a non-empty set of nodes.

\n

If more then one answer is possible, return the first element according to the order of the input sequence.

\n

\n

Example usage :

 most-xpaths( ( <a><b/></a>, <d><c/><b/></d>, <d/>) , (".//b", ".//c") ) 

\n

\n

The function invocation in the example above returns :

 ( <d><c/><b/></d> ) 

\n',summary:"

Returns the single element from an input sequence of elements that matches the largest number of\n XPath expressions from a given set, producing a non-empty set of nodes.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"element(*)",occurrence:"*",description:'
A sequence of elements.
'},{name:"paths",type:"xs:string",occurrence:"*",description:'
A sequence of strings denoting XPath expressions.
'}],returns:{type:"element(*)*",description:"The element that matches the largest number of XPath expressions producing a non-empty set of nodes."},errors:[]},{isDocumented:!0,arity:1,name:"shortest",qname:"con:shortest",signature:"($s as xs:string*) as xs:string?",description:'

Returns the single shortest string, in terms of the number of characters, in a sequence of strings provided as input.

\n

If more then one answer is possible, return the first string according to the order of the input sequence.

\n

\n

Example usage :

shortest( ( "a", "aa", "aaa") )

\n

\n

The function invocation in the example above returns :

("a")

\n',summary:"

Returns the single shortest string, in terms of the number of characters, in a sequence of strings provided as input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"xs:string",occurrence:"*",description:'
A sequence of strings.
'}],returns:{type:"xs:string?",description:"The shortest string in the input sequence."},errors:[]},{isDocumented:!0,arity:2,name:"some-xpaths",qname:"con:some-xpaths",signature:"($s as element(*)*, $paths as xs:string*) as element(*)*",description:'

Returns the elements from a sequence of elements that, when matched to a given set of XPath expressions,\n produce a non-empty set of nodes for some of the cases.

\n

\n

Example usage :

 some-xpaths( ( <a><b/></a>, <d><c/></d>, <d/>), (".//b", ".//c") ) 

\n

\n

The function invocation in the example above returns :

 ( <a><b/></a> , <d><c/></d> ) 

\n',summary:"

Returns the elements from a sequence of elements that, when matched to a given set of XPath expressions,\n produce a non-empty set of nodes for some of the cases.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"element(*)",occurrence:"*",description:'
A sequence of elements.
'},{name:"paths",type:"xs:string",occurrence:"*",description:'
A sequence of strings denoting XPath expressions.
'}],returns:{type:"element(*)*",description:"The elements that, when matched to the given set of XPath expressions, return a non-empty set of nodes for at least one of the cases."},errors:[]},{isDocumented:!0,arity:1,name:"superstring",qname:"con:superstring",signature:"($s as xs:string*) as xs:string?",description:'

Returns the single string, from an input sequence of strings, that appears more frequently as part\n of the other strings in the sequence. If no such string exists, the function returns an empty sequence.

\n

If more then one answer is possible, the function returns the first string according to the order of the input sequence.

\n

\n

Example usage :

super-string( ( "aaa bbb ccc", "aaa bbb", "aaa ddd", "eee fff" ) )

\n

\n

The function invocation in the example above returns :

( "aaa bbb" )

\n',summary:"

Returns the single string, from an input sequence of strings, that appears more frequently as part\n of the other strings in the sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"xs:string",occurrence:"*",description:'
A sequence of strings.
'}],returns:{type:"xs:string?",description:"The string that appears more frequently as part of the other strings in the sequence."},errors:[]},{isDocumented:!0,arity:2,name:"validating-schema",qname:"con:validating-schema",signature:"($s as element(*)*, $schema as element(*)) as element(*)*",description:'

Returns the nodes from an input sequence of nodes that validate against a given XML Schema.

\n

\n

Example usage :

 validating-schema ( ( <a/> , <b/> ), <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element name="a" /></xs:schema> ) 

\n

\n

The function invocation in the example above returns :

 ( <a/> ) 

\n',summary:"

Returns the nodes from an input sequence of nodes that validate against a given XML Schema.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:"element(*)",occurrence:"*",description:'
A sequence of elements.
'},{name:"schema",type:"element(*)",occurrence:null,description:'
An element encoding an XML Schema.
'}],returns:{type:"element(*)*",description:'The nodes that validate against the XML Schema. Attention : This function is still not implemented. '},errors:[]}],variables:[]},"http://zorba.io/modules/node":{ns:"http://zorba.io/modules/node",description:" This module defines a set of function which can be used\n to determine (1) the relationship between two nodes (e.g. if one\n is the ancestor if another) and (2) properties of given\n nodes (e.g. their level in the tree).\n The same functionality can be achieved with simple XPath expressions.\n However, please note that using the functions in this modules instead\n of path expressions guarantees better performance.\n",sees:[],authors:['Matthias Brantner'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/node",prefix:"node"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"ancestor-of",qname:"node:ancestor-of",signature:"($node1 as node(), $node2 as node()) as xs:boolean external",description:" Determines whether the node given as second argument is an\n ancestor of the node given as first argument.\n",summary:"

Determines whether the node given as second argument is an\n ancestor of the node given as first argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node1",type:"node()",occurrence:null,description:'
the potential descendant
'},{name:"node2",type:"node()",occurrence:null,description:'
the potential ancestor
'}],returns:{type:"xs:boolean",description:"true if $node2 is an ancestor of $node1; false otherwise."},errors:[]},{isDocumented:!0,arity:2,name:"child-of",qname:"node:child-of",signature:"($node1 as node(), $node2 as node()) as xs:boolean external",description:" Determines whether the node given as second argument is a\n child of the node given as first argument.\n",summary:"

Determines whether the node given as second argument is a\n child of the node given as first argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node1",type:"node()",occurrence:null,description:'
the potential parent
'},{name:"node2",type:"node()",occurrence:null,description:'
the potential child
'}],returns:{type:"xs:boolean",description:"true if $node2 is a child of $node1; false otherwise."},errors:[]},{isDocumented:!0,arity:1,name:"copy",qname:"node:copy",signature:"($input as node()*) as node()* external",description:' Return a deep copy of every given node according to the properties\n specified in the static context of the invoking module.

\n Please note that a copy of a node is parentless.\n',summary:"

Return a deep copy of every given node according to the properties\n specified in the static context of the invoking module.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"input",type:"node()",occurrence:"*",description:'
the node to copy
'}],returns:{type:"node()*",description:"a deep copy of every node in the input sequence or the empty sequence if $input is the empty sequence."},errors:[]},{isDocumented:!0,arity:2,name:"descendant-of",qname:"node:descendant-of",signature:"($node1 as node(), $node2 as node()) as xs:boolean external",description:" Determines whether the node given as second argument is a\n descendant of the node given as first argument.\n",summary:"

Determines whether the node given as second argument is a\n descendant of the node given as first argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node1",type:"node()",occurrence:null,description:'
the potential ancestor
'},{name:"node2",type:"node()",occurrence:null,description:'
the potential descendant
'}],returns:{type:"xs:boolean",description:"true if $node2 is a descendant of $node1; false otherwise."},errors:[]},{isDocumented:!0,arity:2,name:"following-of",qname:"node:following-of",signature:"($node1 as node(), $node2 as node()) as xs:boolean external",description:" Determines whether the node given as second argument is\n following the node given as first argument.\n",summary:"

Determines whether the node given as second argument is\n following the node given as first argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node1",type:"node()",occurrence:null,description:'
the potential preceding node
'},{name:"node2",type:"node()",occurrence:null,description:'
the potential following node
'}],returns:{type:"xs:boolean",description:"true if $node2 is following the node $node1; false otherwise."},errors:[]},{isDocumented:!0,arity:2,name:"following-sibling-of",qname:"node:following-sibling-of",signature:"($node1 as node(), $node2 as node()) as xs:boolean external",description:" Determines whether the node given as second argument is a\n following-sibling of the node given as first argument.\n",summary:"

Determines whether the node given as second argument is a\n following-sibling of the node given as first argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node1",type:"node()",occurrence:null,description:'
the potential preceding-sibling
'},{name:"node2",type:"node()",occurrence:null,description:'
the potential following-sibling
'}],returns:{type:"xs:boolean",description:"true if $node2 is a following-sibling of $node1; false otherwise."},errors:[]},{isDocumented:!0,arity:2,name:"least-common-ancestor",qname:"node:least-common-ancestor",signature:"($node1 as node(), $node2 as node()) as node()? external",description:" Computes the least common ancestor of two given nodes in\n the tree.\n",summary:"

Computes the least common ancestor of two given nodes in\n the tree.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node1",type:"node()",occurrence:null,description:'
the first node
'},{name:"node2",type:"node()",occurrence:null,description:'
the second node
'}],returns:{type:"node()?",description:"the least common ancestor of the two given nodes or the empty sequence if the two nodes are not part of the same tree."},errors:[]},{isDocumented:!0,arity:1,name:"level",qname:"node:level",signature:"($node as node()) as xs:integer external",description:" Computes the level of a given node in the tree.\n Note: The first level has the number one.\n",summary:"

Computes the level of a given node in the tree.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node",type:"node()",occurrence:null,description:'
the node for which the level should be computed
'}],returns:{type:"xs:integer",description:"The level as xs:integer of the given node in the tree."},errors:[]},{isDocumented:!0,arity:2,name:"parent-of",qname:"node:parent-of",signature:"($node1 as node(), $node2 as node()) as xs:boolean external",description:" Determines whether the node given as second argument is a\n parent of the node given as first argument.\n",summary:"

Determines whether the node given as second argument is a\n parent of the node given as first argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node1",type:"node()",occurrence:null,description:'
the potential child
'},{name:"node2",type:"node()",occurrence:null,description:'
the potential parent
'}],returns:{type:"xs:boolean",description:"true if $node2 is a parent of $node1; false otherwise."},errors:[]},{isDocumented:!0,arity:2,name:"preceding-of",qname:"node:preceding-of",signature:"($node1 as node(), $node2 as node()) as xs:boolean external",description:" Determines whether the node given as second argument is\n preceding the node given as first argument.\n",summary:"

Determines whether the node given as second argument is\n preceding the node given as first argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node1",type:"node()",occurrence:null,description:'
the potential following node
'},{name:"node2",type:"node()",occurrence:null,description:'
the potential preceding node
'}],returns:{type:"xs:boolean",description:"true if $node2 is preceding the node $node1; false otherwise."},errors:[]},{isDocumented:!0,arity:2,name:"preceding-sibling-of",qname:"node:preceding-sibling-of",signature:"($node1 as node(), $node2 as node()) as xs:boolean external",description:" Determines whether the node given as second argument is a\n preceding-sibling of the node given as first argument.\n",summary:"

Determines whether the node given as second argument is a\n preceding-sibling of the node given as first argument.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"node1",type:"node()",occurrence:null,description:'
the potential following-sibling
'},{name:"node2",type:"node()",occurrence:null,description:'
the potential preceding-sibling
'}],returns:{type:"xs:boolean",description:"true if $node2 is a preceding-sibling of $node1; false otherwise."},errors:[]}],variables:[]},"http://zorba.io/modules/archive":{ns:"http://zorba.io/modules/archive",description:' This module provides functionality to work with (possibly compressed)\n archives. For example, it provides functions to retrieve the names or\n extract the values of several entries in a ZIP archive. Moreover,\n there exist functions that allow to create or update archives.

\n The following archive formats and compression algorithms are supported:\n

\n

\n',sees:[],authors:['Luis Rodgriguez, Juan Zacarias, and Matthias Brantner'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/archive",prefix:"a"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"create",qname:"a:create",signature:"($entries as item()*, $contents as item()*) as xs:base64Binary external",description:' Creates a new ZIP archive out of the given entries and contents.

\n All entries are compressed with the DEFLATE compression algorithm.

\n The parameters $entries and $contents have the same meaning as for\n the function a:create with three arguments.

\n Entry entries can include a type element, this element can have one\n of two possible values: "regular" or "directory". If "regular" is\n specified then the entry will be created as a regular file; if "directory"\n is specified then the entry will be created as a directory, no contents\n will be read from $contents in this case. If no value is specified for type\n then it will be set to "regular".

\n Example:\n

\n $zip-file := a:create(\n    ({ "encoding" : "ISO-8859-1", "type" : "directory", "name" : "dir1" }, "dir1/file1"),\n    ("file contents"))\n 
\n

\n',summary:"

Creates a new ZIP archive out of the given entries and contents.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entries",type:"item()",occurrence:"*",description:'
the meta data for the entries in the archive. Each entry can be of type xs:string or a JSON oibject describing the entry.
'},{name:"contents",type:"item()",occurrence:"*",description:'
the content for the archive. Each item in the sequence can be of type xs:string or xs:base64Binary.
'}],returns:{type:"xs:base64Binary",description:"the generated archive as xs:base64Binary"},errors:['a:ENTRY-COUNT-MISMATCH if the number of entries that don\'t describe directories differs from the number of items in the $contents sequence: count($non-directory-entries) ne count($contents)','a:INVALID-ENTRY-VALS if a values in an entry object are invalid','a:INVALID-ENCODING if a given encoding is invalid or not supported','err:FORG0006 if an item in the contents sequence is not of type xs:string or xs:base64Binary']},{isDocumented:!0,arity:3,name:"create",qname:"a:create",signature:"($entries as item()*, $contents as item()*, $options as object()) as xs:base64Binary external",description:' Creates a new archive out of the given entries and contents.

\n The $entries arguments provides meta data for each entry in the archive.\n For example, the name of the entry (mandatory) or the last-modified date\n (optional). An entry can either be of type xs:string to describe the entry\n name or of type xs:base64Binary to provide additional meta data.

\n The $contents sequence provides the data (xs:string or xs:base64Binary) for\n the entries that should be included in the archive. Its length needs to\n match the length of the entries in the $entries sequence that don\'t describe\n directory entries (a:ARCH0001). All items of type xs:base64Binary are decoded\n before being added to the archive.

\n For each entry, the name, last-modified date and time, and compression\n can be specified. In addition, an encoding can be specified which is used to\n store entries of type xs:string. If no last-modified attribute is given, the\n default is the current date and time. The compression is useful if various\n entries in a ZIP archive are compressed using different compression\n algorithms (i.e. store or deflate).

\n For example, the following sequence may be used to describe an archive\n containing two elements:

\n

{\n   "last-modified" : "{fn:current-dateTime()}"\n   "name" : "myfile.txt"\n },\n {\n   "encoding" : "ISO-8859-1",\n   "compression" : "store",\n   "name" : "dir/myfile.xml"\n }\n 
\n

\n The $options argument may be used to describe general options for the\n archive. For example, the following options can be used to create a ZIP\n archive in which all entries are compressed with the DEFLATE compression\n algorithm:

\n

{\n   "format" : "ZIP",\n   "compression" : "DEFLATE"\n }\n 
\n

\n The result of the function is the generated archive as a item of type\n xs:base64Binary.

\n',summary:"

Creates a new archive out of the given entries and contents.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entries",type:"item()",occurrence:"*",description:'
the meta data for the entries in the archive. Each entry can be of type xs:string or an JSON object describing the entry.
'},{name:"contents",type:"item()",occurrence:"*",description:'
the content for the archive. Each item in the sequence can be of type xs:string or xs:base64Binary.
'},{name:"options",type:"object()",occurrence:null,description:'
the options used to generate the archive.
'}],returns:{type:"xs:base64Binary",description:"the generated archive as xs:base64Binary"},errors:['a:ENTRY-COUNT-MISMATCH if the number of entries describing non-directories differs from the number of items in the $contents sequence: count($non-directoy-entries) ne count($contents)','a:INVALID-OPTIONS if the options argument contains invalid values','a:INVALID-ENTRY-VALS if any values in an entry are invalid','a:INVALID-ENCODING if a given encoding is invalid or not supported','a:DIFFERENT-COMPRESSIONS-NOT-SUPPORTED if different compression algorithms were selected but the actual version of libarchive doesn\'t support it.','err:FORG0006 if an item in the contents sequence is not of type xs:string or xs:base64Binary']},{isDocumented:!0,arity:2,name:"delete",qname:"a:delete",signature:"($archive as xs:base64Binary, $entry-names as xs:string*) as xs:base64Binary external",description:' Deletes entries from an archive.

\n',summary:"

Deletes entries from an archive.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive",type:"xs:base64Binary",occurrence:null,description:'
the archive to extract the entries from as xs:base64Binary
'},{name:"entry-names",type:"xs:string",occurrence:"*",description:'
a sequence of names for entries which should be deleted
'}],returns:{type:"xs:base64Binary",description:"the updated base64Binary"},errors:['a:CORRUPTED-ARCHIVE if $archive is not an archive or corrupted']},{isDocumented:!0,arity:1,name:"entries",qname:"a:entries",signature:"($archive as xs:base64Binary) as object()* external",description:' Returns the header information of all entries in the given archive as a JSON\n objects sequence.

\n Such information includes the name of the entry, the uncompressed size,\n as well as the last-modified timestamp. Note that not all values are\n available in every archive.

\n',summary:"

Returns the header information of all entries in the given archive as a JSON\n objects sequence.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive",type:"xs:base64Binary",occurrence:null,description:'
the archive to list the entries from as xs:base64Binary
'}],returns:{type:"object()*",description:"a sequence of strings, one for each entry in the archive"},errors:['a:CORRUPTED-ARCHIVE if $archive is not an archive or corrupted']},{isDocumented:!0,arity:1,name:"extract-binary",qname:"a:extract-binary",signature:"($archive as xs:base64Binary) as xs:base64Binary* external",description:' Returns the entries identified by the given paths from the archive\n as base64Binary.

\n',summary:"

Returns the entries identified by the given paths from the archive\n as base64Binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive",type:"xs:base64Binary",occurrence:null,description:'
the archive to extract the entries from as xs:base64Binary
'}],returns:{type:"xs:base64Binary*",description:"one xs:base64Binary item for the contents of each entry in the archive"},errors:['a:CORRUPTED-ARCHIVE if $archive is not an archive or corrupted']},{isDocumented:!0,arity:2,name:"extract-binary",qname:"a:extract-binary",signature:"($archive as xs:base64Binary, $entry-names as xs:string*) as xs:base64Binary* external",description:' Returns the entries identified by the given paths from the archive\n as base64Binary.

\n',summary:"

Returns the entries identified by the given paths from the archive\n as base64Binary.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive",type:"xs:base64Binary",occurrence:null,description:'
the archive to extract the entries from as xs:base64Binary
'},{name:"entry-names",type:"xs:string",occurrence:"*",description:'
a sequence of names for entries which should be extracted
'}],returns:{type:"xs:base64Binary*",description:"a sequence of xs:base64Binary itmes for the given sequence of names or the empty sequence if no entries match the given names."},errors:['a:CORRUPTED-ARCHIVE if $archive is not an archive or corrupted']},{isDocumented:!0,arity:1,name:"extract-text",qname:"a:extract-text",signature:"($archive as xs:base64Binary) as xs:string* external",description:' Extracts the contents of all entries in the given archive as text\n using UTF-8 as default encoding.

\n',summary:"

Extracts the contents of all entries in the given archive as text\n using UTF-8 as default encoding.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive",type:"xs:base64Binary",occurrence:null,description:'
the archive to extract the entries from as xs:base64Binary
'}],returns:{type:"xs:string*",description:"one string for the contents of each entry in the archive"},errors:['a:CORRUPTED-ARCHIVE if $archive is not an archive or corrupted','err:FOCH0001 if any of the entries contains invalid utf-8 characters']},{isDocumented:!0,arity:2,name:"extract-text",qname:"a:extract-text",signature:"($archive as xs:base64Binary, $entry-names as xs:string*) as xs:string* external",description:' Extracts the contets of the entries identified by a given sequence of\n names as text.\n The default encoding used to read the string is UTF-8.

\n',summary:"

Extracts the contets of the entries identified by a given sequence of\n names as text.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive",type:"xs:base64Binary",occurrence:null,description:'
the archive to extract the entries from as xs:base64Binary
'},{name:"entry-names",type:"xs:string",occurrence:"*",description:'
a sequence of names for entries which should be extracted
'}],returns:{type:"xs:string*",description:"a sequence of strings for the given sequence of names or the empty sequence if no entries match the given names."},errors:['a:CORRUPTED-ARCHIVE if $archive is not an archive or corrupted','err:FOCH0001 if any of the entries requested contains invalid utf-8 characters']},{isDocumented:!0,arity:3,name:"extract-text",qname:"a:extract-text",signature:"($archive as xs:base64Binary, $entry-names as xs:string*, $encoding as xs:string) as xs:string* external",description:' Extracts the contets of the entries identified by a given sequence of\n names as text. Each entry is treated with the given encoding.

\n',summary:"

Extracts the contets of the entries identified by a given sequence of\n names as text.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive",type:"xs:base64Binary",occurrence:null,description:'
the archive to extract the entries from as xs:base64Binary
'},{name:"entry-names",type:"xs:string",occurrence:"*",description:'
a sequence of entry names that should be extracted
'},{name:"encoding",type:"xs:string",occurrence:null,description:'
a encoding for transcoding each of the extracted entries
'}],returns:{type:"xs:string*",description:"a sequence of strings for the given sequence of names or the empty sequence if no entries match the given names."},errors:['a:CORRUPTED-ARCHIVE if $archive is not an archive or corrupted','a:INVALID-ENCODING if the given $encoding is invalid or not supported','err:FOCH0001 if a transcoding error happens']},{isDocumented:!0,arity:1,name:"options",qname:"a:options",signature:"($archive as xs:base64Binary) as object() external",description:' Returns the algorithm and format options as a JSON object for a given archive.\n For example, for a ZIP archive, the following options element\n would be returned:

\n

{\n   "format" : "ZIP",\n   "compression" : "DEFLATE"\n }\n 
\n

\n',summary:"

Returns the algorithm and format options as a JSON object for a given archive.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive",type:"xs:base64Binary",occurrence:null,description:'
the archive as xs:base64Binary
'}],returns:{type:"object()",description:"the algorithm and format options as a JSON object"},errors:['a:CORRUPTED-ARCHIVE if $archive is not an archive or corrupted']},{isDocumented:!0,arity:3,name:"update",qname:"a:update",signature:"($archive as xs:base64Binary, $entries as item()*, $contents as item()*) as xs:base64Binary external",description:' Adds and replaces entries in an archive according to\n the given spec. The contents can be string and base64Binary items.

\n The parameters $entries and $contents have the same meaning as for\n the function a:create with three arguments.

\n',summary:"

Adds and replaces entries in an archive according to\n the given spec.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"archive",type:"xs:base64Binary",occurrence:null,description:'
the archive to add or replace content
'},{name:"entries",type:"item()",occurrence:"*",description:'
the meta data for the entries in the archive. Each entry can be of type xs:string or a JSON object. For mandatory fields in the JSON object see create function.
'},{name:"contents",type:"item()",occurrence:"*",description:'
the content for the archive. Each item in the sequence can be of type xs:string or xs:base64Binary.
'}],returns:{type:"xs:base64Binary",description:"the updated xs:base64Binary"},errors:['a:ENTRY-COUNT-MISMATCH if the number of entry elements differs from the number of items in the $contents sequence: count($non-directory-entries) ne count($contents)','a:INVALID-ENTRY-VALS if a value for an entry element is invalid','a:INVALID-ENCODING if a given encoding is invalid or not supported','a:DIFFERENT-COMPRESSIONS-NOT-SUPPORTED if different compression algorithms were selected but the actual version of libarchive doesn\'t support it.','err:FORG0006 if an item in the contents sequence is not of type xs:string or xs:base64Binary','a:CORRUPTED-ARCHIVE if $archive is not an archive or corrupted']}],variables:[]},"http://www.zorba-xquery.com/modules/converters/html":{ns:"http://www.zorba-xquery.com/modules/converters/html",description:'

\n This module provides functions to tidy a HTML document.
\n The functions in this module take an HTML document (a string) as parameter,\n tidy it in order to result in valid XHTML, and return this XHTML document as a document-node.\n

\n',sees:[],authors:['Sorin Nasoi'],version:null,encoding:"utf-8",namespaces:[{uri:"http://ww.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://www.zorba-xquery.com/modules/converters/html",prefix:"html"},{uri:"http://www.zorba-xquery.com/modules/converters/html-options",prefix:"html-options"},{uri:"http://zorba.io/modules/schema",prefix:"schema"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"parse",qname:"html:parse",signature:"($html as xs:string) as document()",description:'

This function tidies the given HTML string and returns\n a valid XHTML document node.

\n

This functions automatically sets the following tidying parameters:\n

\n

\n',summary:"

This function tidies the given HTML string and returns\n a valid XHTML document node.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"html",type:"xs:string",occurrence:null,description:'
the HTML string to tidy
'}],returns:{type:"document()",description:"the tidied XML document"},errors:['html:InternalError if an internal error occurred while tidying the string.']},{isDocumented:!0,arity:2,name:"parse",qname:"html:parse",signature:"($html as xs:string, $options as element(html-options:options)) as document()",description:'

This function tidies the given HTML string and returns\n a valid XHTML document node.

\n

The second parameter allows to specify options that\n configure the tidy process. This parameter is a sequence\n of name=value pairs. Allowed parameter names and values\n are documented at \n http://tidy.sourceforge.net/docs/quickref.html.

\n',summary:"

This function tidies the given HTML string and returns\n a valid XHTML document node.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"html",type:"xs:string",occurrence:null,description:'
the HTML string to tidy
'},{name:"options",type:"element(html-options:options)",occurrence:null,description:'
a set of name and value pairs that provide options to configure the tidy process that have to be validated against the "http://www.zorba-xquery.com/modules/converters/html-options" schema.
'}],returns:{type:"document()",description:"the tidied XHTML document node"},errors:['err:XQDY0027 if $options can not be validated against the html-options schema','html:TidyOption if there was an error with one of the options in the $options parameter that couldn\'t have been caught by validating against the schema','html:InternalError if an internal error occurred while tidying the string.']}],variables:[]},"http://zorba.io/modules/data-cleaning/set-similarity":{ns:"http://zorba.io/modules/data-cleaning/set-similarity",description:'

This library module provides similarity functions for comparing sets of XML\n nodes (e.g., sets of XML elements, attributes or atomic values).

\n

\n

These functions are particularly useful for matching near duplicate sets of XML nodes.

\n

\n

The logic contained in this module is not specific to any particular XQuery implementation.

\n',sees:[],authors:['Bruno Martins'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/modules/data-cleaning/set-similarity",prefix:"set"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"deep-intersect",qname:"set:deep-intersect",signature:"($s1, $s2) as item()*",description:'

Returns the intersection between two sets, using the deep-equal() function to compare the XML nodes from the sets.

\n

\n

Example usage :

 deep-intersect ( ( "a", "b", "c") , ( "a", "a",  ) ) 

\n

\n

The function invocation in the example above returns :

 ("a") 

\n',summary:"

Returns the intersection between two sets, using the deep-equal() function to compare the XML nodes from the sets.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s1",type:null,occurrence:null,description:'
The first set.
'},{name:"s2",type:null,occurrence:null,description:'
The second set.
'}],returns:{type:"item()*",description:"The intersection of both sets."},errors:[]},{isDocumented:!0,arity:2,name:"deep-union",qname:"set:deep-union",signature:"($s1, $s2) as item()*",description:'

Returns the union between two sets, using the deep-equal() function to compare the XML nodes from the sets.

\n

\n

Example usage :

 deep-union ( ( "a", "b", "c") , ( "a", "a",  ) ) 

\n

\n

The function invocation in the example above returns :

 ("a", "b", "c",  ) 

\n',summary:"

Returns the union between two sets, using the deep-equal() function to compare the XML nodes from the sets.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s1",type:null,occurrence:null,description:'
The first set.
'},{name:"s2",type:null,occurrence:null,description:'
The second set.
'}],returns:{type:"item()*",description:"The union of both sets."},errors:[]},{isDocumented:!0,arity:2,name:"dice",qname:"set:dice",signature:"($s1, $s2) as xs:double",description:'

Returns the Dice similarity coefficient between two sets of XML nodes.

\n

The Dice coefficient is defined as defined as twice the shared information between the input sets\n (i.e., the size of the intersection) over the sum of the cardinalities for the input sets.

\n

\n

Example usage :

 dice ( ( "a", "b",  ) , ( "a", "a", "d") ) 

\n

\n

The function invocation in the example above returns :

 0.4 

\n',summary:"

Returns the Dice similarity coefficient between two sets of XML nodes.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s1",type:null,occurrence:null,description:'
The first set.
'},{name:"s2",type:null,occurrence:null,description:'
The second set.
'}],returns:{type:"xs:double",description:"The Dice similarity coefficient between the two sets."},errors:[]},{isDocumented:!0,arity:1,name:"distinct",qname:"set:distinct",signature:"($s) as item()*",description:'

Removes exact duplicates from a set, using the deep-equal() function to compare the XML nodes from the sets.

\n

\n

Example usage :

 distinct ( ( "a", "a",  ) ) 

\n

\n

The function invocation in the example above returns :

 ("a",  ) 

\n',summary:"

Removes exact duplicates from a set, using the deep-equal() function to compare the XML nodes from the sets.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s",type:null,occurrence:null,description:'
A set.
'}],returns:{type:"item()*",description:"The set provided as input without the exact duplicates (i.e., returns the distinct nodes from the set provided as input)."},errors:[]},{isDocumented:!0,arity:2,name:"jaccard",qname:"set:jaccard",signature:"($s1, $s2) as xs:double",description:'

Returns the Jaccard similarity coefficient between two sets of XML nodes.

\n

The Jaccard coefficient is defined as the size of the intersection divided by the size of the\n union of the input sets.

\n

\n

Example usage :

 jaccard ( ( "a", "b",  ) , ( "a", "a", "d") ) 

\n

\n

The function invocation in the example above returns :

 0.25 

\n',summary:"

Returns the Jaccard similarity coefficient between two sets of XML nodes.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s1",type:null,occurrence:null,description:'
The first set.
'},{name:"s2",type:null,occurrence:null,description:'
The second set.
'}],returns:{type:"xs:double",description:"The Jaccard similarity coefficient between the two sets."},errors:[]},{isDocumented:!0,arity:2,name:"overlap",qname:"set:overlap",signature:"($s1, $s2) as xs:double",description:'

Returns the overlap coefficient between two sets of XML nodes.

\n

The overlap coefficient is defined as the shared information between the input sets\n (i.e., the size of the intersection) over the size of the smallest input set.

\n

\n

Example usage :

 overlap ( ( "a", "b",  ) , ( "a", "a", "b" ) ) 

\n

\n

The function invocation in the example above returns :

 1.0 

\n',summary:"

Returns the overlap coefficient between two sets of XML nodes.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"s1",type:null,occurrence:null,description:'
The first set.
'},{name:"s2",type:null,occurrence:null,description:'
The second set.
'}],returns:{type:"xs:double",description:"The overlap coefficient between the two sets."},errors:[]}],variables:[]},"http://www.28msec.com/modules/http/util/cache":{ns:"http://www.28msec.com/modules/http/util/cache",description:" This module contains a collection of convenience functions to help\n developers work with HTTP caching options.\n",sees:[],authors:['28msec'],version:null,encoding:"utf-8",namespaces:[{uri:"http://zorba.io/annotations",prefix:"an"},{uri:"http://www.28msec.com/modules/http/util/cache",prefix:"cache"},{uri:"http://www.28msec.com/modules/http/response",prefix:"resp"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:0,name:"no-cache",qname:"cache:no-cache",signature:"() as empty-sequence()",description:'

Forces a client not to cache the response by setting the appropriate\n HTTP headers.

\n In detail, the following HTTP headers will be set in the response:\n
    \n
  • Cache-Control: no-cache
  • \n
  • Pragma: no-cache
  • \n
  • Expires: 0
  • \n
\n',summary:"

Forces a client not to cache the response by setting the appropriate\n HTTP headers.

",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"http://zorba.io/annotations",name:"sequential",value:""}],updating:!1,parameters:[],returns:{type:"empty-sequence()",description:"On success, the empty-sequence is returned"},errors:[]}],variables:[]},"http://www.zorba-xquery.com/modules/schema-tools":{ns:"http://www.zorba-xquery.com/modules/schema-tools",description:' This module provides funtionality to get sample XMLSchema from XML instances\n and sample XML instances from XMLSchema.\n Apache XMLBeans library is used to implement\n inst2xsd and xsd2inst functions.\n
\n
\n Note: Since this module has a Java library dependency a JVM required\n to be installed on the system. For Windows: jvm.dll is required on the system\n path ( usually located in "C:\\Program Files\\Java\\jre6\\bin\\client".\n',sees:['http://xmlbeans.apache.org/','http://xmlbeans.apache.org'],authors:['Cezar Andrei'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.w3.org/2005/xqt-errors",prefix:"err"},{uri:"http://zorba.io/modules/schema",prefix:"schema-options"},{uri:"http://www.zorba-xquery.com/modules/schema-tools",prefix:"schema-tools"},{uri:"http://www.zorba-xquery.com/modules/schema-tools/schema-tools-options",prefix:"st-options"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"inst2xsd",qname:"schema-tools:inst2xsd",signature:"($instances as element(*)+, $options as element(st-options:inst2xsd-options)?) as document()*",description:' The inst2xsd function takes a set of sample XML instance elements as input and\n generates a set of sample XMLSchema documents that define\n the content of the given input.\n
\n Please consult the\n official documentation for further\n information.\n
\n Example:
\n  import module namespace st = "http://www.zorba-xquery.com/modules/schema-tools";\n  declare namespace sto =\n      "http://www.zorba-xquery.com/modules/schema-tools/schema-tools-options";\n  let $instances := (<a><b/><c/></a>, <b/>, <c>ccc</c>)\n  let $options  :=\n     <sto:inst2xsd-options xmlns:sto=\n       "http://www.zorba-xquery.com/modules/schema-tools/schema-tools-options">\n       <sto:design>vbd</sto:design>\n       <sto:simple-content-types>smart</sto:simple-content-types>\n       <sto:use-enumeration>10</sto:use-enumeration>\n     </sto:inst2xsd-options>\n  return\n      st:inst2xsd($instances, $options)\n 
\n
\n',summary:"

The inst2xsd function takes a set of sample XML instance elements as input and\n generates a set of sample XMLSchema documents that define\n the content of the given input.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"instances",type:"element(*)",occurrence:"+",description:'
The input XML instance elements
'},{name:"options",type:"element(st-options:inst2xsd-options)",occurrence:"?",description:'
Options:
  • design: Choose the generated schema design
    - rdd: Russian Doll Design - local elements and local types
    - ssd: Salami Slice Design - global elements and local types
    - vbd (default): Venetian Blind Design - local elements and global complex types
  • simple-content-types: type of leaf nodes
    - smart (default): try to find the right simple XMLSchema type
    - always-string: use xsd:string for all simple types
  • use-enumeration: - when there are multiple valid values in a list
    - 1: never use enumeration
    - 2 or more (default 10): use enumeration if less than this number of occurrences - number option
  • verbose: - stdout verbose info
    - true: - output type holder information
    - false (default): no output
'}],returns:{type:"document()*",description:"The generated XMLSchema documents."},errors:['schema-tools:VM001 If Zorba was unable to start the JVM.','schema-tools:JAVA-EXCEPTION If Apache XMLBeans throws an exception.']},{isDocumented:!0,arity:3,name:"xsd2inst",qname:"schema-tools:xsd2inst",signature:"($schemas as element(*)+, $rootElementName as xs:string, $options as element(st-options:xsd2inst-options)?) as document()",description:' The xsd2inst function takes a set of XML Schema elements as input and the\n local name of the root element and\n generates a document that represents one sample XML instance of the given\n input schemas. The local name is searched in schema global element definitions\n in the order of schemas parameter.\n
\n Please consult the\n official documentation for further\n information.\n
\n Example:
\n  import module namespace st = "http://www.zorba-xquery.com/modules/schema-tools";\n  declare namespace sto =\n      "http://www.zorba-xquery.com/modules/schema-tools/schema-tools-options";\n  let $xsds  :=\n     ( <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\n           attributeFormDefault="unqualified"\n           elementFormDefault="qualified">\n         <xs:element name="a" type="aType"/>\n         <xs:complexType name="aType">\n           <xs:sequence>\n             <xs:element type="xs:string" name="b"/>\n             <xs:element type="xs:string" name="c"/>\n           </xs:sequence>\n         </xs:complexType>\n       </xs:schema> )\n  let $options :=\n    <sto:xsd2inst-options xmlns:sto=\n      "http://www.zorba-xquery.com/modules/schema-tools/schema-tools-options">\n      <sto:network-downloads>false</sto:network-downloads>\n      <sto:no-pvr>false</sto:no-pvr>\n      <sto:no-upa>false</sto:no-upa>\n    </sto:xsd2inst-options>\n  return\n      st:xsd2inst($xsds, "a", $options)\n 

\n',summary:"

The xsd2inst function takes a set of XML Schema elements as input and the\n local name of the root element and\n generates a document that represents one sample XML instance of the given\n input schemas.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"schemas",type:"element(*)",occurrence:"+",description:'
elements representing XMLSchema definitions
'},{name:"rootElementName",type:"xs:string",occurrence:null,description:'
The local name of the instance root element. If multiple target namespaces are used, first one found - using the sequence order - will be used.
'},{name:"options",type:"element(st-options:xsd2inst-options)",occurrence:"?",description:'
Options:
  • network-downloads: boolean (default false)
    - true allows XMLBeans to use network when resolving schema imports and includes
  • no-pvr: boolean (default false)
    - true to disable particle valid (restriction) rule, false otherwise
  • no-upa: boolean (default false)
    - true to disable unique particle attribution rule, false otherwise
'}],returns:{type:"document()",description:"The generated output document, representing a sample XML instance."},errors:['schema-tools:VM001 If Zorba was unable to start the JVM.','schema-tools:JAVA-EXCEPTION If Apache XMLBeans throws an exception.']}],variables:[]},"http://xbrl.io/modules/bizql/entities":{ns:"http://xbrl.io/modules/bizql/entities",description:'

This module provides functions for retrieving information about entities.\n Entities submit archives (see archives module),\n for example, to a reporting authority. Entities\n are identified with an EID (Entity ID).

\n

With this module, you can retrieve all entities, or a certain number of entities\n with their EIDs, or obtain the EID of entities you already have.

\n

Entities are stored in a MongoDB datasource called xbrl.

\n

Each entity can be associated with a set of tags that makes it easier\n to manage them. The e:entities#1 function\n allows to retrieve all entities with a given tag.

\n',sees:[],authors:['Charles Hoffman','Matthias Brantner','Dennis Knochenwefel','Ghislain Fourny'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.28msec.com/modules/credentials",prefix:"credentials"},{uri:"http://xbrl.io/modules/bizql/entities",prefix:"entities"},{uri:"http://www.28msec.com/modules/mongodb",prefix:"mongo"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:1,name:"eid",qname:"entities:eid",signature:"($entities-or-ids as item()*) as atomic*",description:'

Converts the input to a normalized entity identifier (EID). The input\n can be either an EID, or an entity object which contains an _id.

\n',summary:"

Converts the input to a normalized entity identifier (EID).

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entities-or-ids",type:"item()",occurrence:"*",description:""}],returns:{type:"atomic*",description:"the normalized EIDs."},errors:['entities:INVALID_PARAMETER if the EID or entity is not valid.']},{isDocumented:!0,arity:0,name:"entities",qname:"entities:entities",signature:"() as object()*",description:'

Return all entities.

\n',summary:"

Return all entities.

",annotation_str:"",annotations:[],updating:!1,parameters:[],returns:{type:"object()*",description:"all entities."},errors:[]},{isDocumented:!0,arity:1,name:"entities",qname:"entities:entities",signature:"($entities-or-ids as item()*) as object()*",description:'

Return the entities with the given EIDs.

\n',summary:"

Return the entities with the given EIDs.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entities-or-ids",type:"item()",occurrence:"*",description:'
the ids of the entities (EIDs) or the entities themselves.
'}],returns:{type:"object()*",description:"the entities with the given EIDs the empty sequence if no entity was found or if the input is an empty sequence."},errors:[]}],variables:[{name:"entities:col",type:"string",description:" Name of the collection the entities are stored in.\n"}]},"http://www.zorba-xquery.com/modules/cryptography/hmac":{ns:"http://www.zorba-xquery.com/modules/cryptography/hmac",description:" This module provides a function to generate hash-based\n message authentication codes (HMAC) involving a cryptographic\n hash function (e.g. SHA1).\n",sees:[],authors:['William Candillon'],version:null,encoding:"utf-8",namespaces:[{uri:"http://www.zorba-xquery.com/modules/cryptography/hmac",prefix:"hmac"},{uri:"http://zorba.io/options/versioning",prefix:"ver"}],functions:[{isDocumented:!0,arity:2,name:"sha1",qname:"hmac:sha1",signature:"($message as xs:string, $secret-key as xs:string) as xs:string external",description:" This function provides hash-based message authentication code using\n the SHA1 algorithm.\n",summary:"

This function provides hash-based message authentication code using\n the SHA1 algorithm.

",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"message",type:"xs:string",occurrence:null,description:'
the message to be authenticated
'},{name:"secret-key",type:"xs:string",occurrence:null,description:'
the secret key used for calculating the authentication
'}],returns:{type:"xs:string",description:"hash-based base64 encoded message authentication code"},errors:[]}],variables:[]},"http://api.28.io/csvview":{ns:"http://api.28.io/csvview",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"",prefix:"an"},{uri:"http://api.28.io/csvview",prefix:"csvview"},{uri:"http://api.28.io/model",prefix:"model"}],functions:[{isDocumented:!1,arity:1,name:"column",qname:"csvview:column",signature:"($data) as xs:string",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"data",type:null,occurrence:null,description:""}],returns:{type:"xs:string",description:""},errors:[]},{isDocumented:!1,arity:1,name:"line",qname:"csvview:line",signature:"($entries as xs:string*)",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"entries",type:"xs:string",occurrence:"*",description:""}],returns:{type:null,description:""},errors:[]},{isDocumented:!1,arity:2,name:"show-nodes",qname:"csvview:show-nodes",signature:"($nodes, $show-headers as xs:boolean)",description:"",summary:"",annotation_str:" %an:sequential",annotations:[{prefix:"an",ns:"",name:"sequential",value:""}],updating:!1,parameters:[{name:"nodes",type:null,occurrence:null,description:""},{name:"show-headers",type:"xs:boolean",occurrence:null,description:""}],returns:{type:null,description:""},errors:[]}],variables:[]},"http://api.28.io/util":{ns:"http://api.28.io/util",description:"",sees:[],authors:[],version:null,encoding:null,namespaces:[{uri:"http://www.28msec.com/modules/http/request",prefix:"req"},{uri:"http://api.28.io/util",prefix:"util"}],functions:[{isDocumented:!1,arity:1,name:"param-or-body",qname:"util:param-or-body",signature:"($param-name as xs:string) as xs:string?",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"param-name",type:"xs:string",occurrence:null,description:""}],returns:{type:"xs:string?",description:""},errors:[]},{isDocumented:!1,arity:1,name:"path",qname:"util:path",signature:"($from as xs:integer) as xs:string*",description:"",summary:"",annotation_str:"",annotations:[],updating:!1,parameters:[{name:"from",type:"xs:integer",occurrence:null,description:""}],returns:{type:"xs:string*",description:""},errors:[]}],variables:[{name:"util:collection-namespace",type:"item()*",description:""}]}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o - - CodeCombat - Learn how to code by playing a game - + - + - + - + - - + - + - - - - - + diff --git a/app/initialize.coffee b/app/initialize.coffee index 9cb2e2954..9bb984878 100644 --- a/app/initialize.coffee +++ b/app/initialize.coffee @@ -6,6 +6,7 @@ channelSchemas = 'bus': require './schemas/subscriptions/bus' 'editor': require './schemas/subscriptions/editor' 'errors': require './schemas/subscriptions/errors' + 'ipad': require './schemas/subscriptions/ipad' 'misc': require './schemas/subscriptions/misc' 'multiplayer': require './schemas/subscriptions/multiplayer' 'play': require './schemas/subscriptions/play' @@ -76,7 +77,7 @@ setUpMoment = -> initializeUtilityServices = -> services = [ - './lib/services/filepicker' + #'./lib/services/filepicker' # Not until needed './lib/services/segmentio' ] @@ -102,7 +103,7 @@ watchForErrors = -> #msg += "\nStack: #{stack}" if stack = error?.stack unless webkit?.messageHandlers # Don't show these notys on iPad noty text: message, layout: 'topCenter', type: 'error', killer: false, timeout: 5000, dismissQueue: true, maxVisible: 3, callback: {onClose: -> --currentErrors} - Backbone.Mediator.publish 'application:error', message: msg # For iOS app + Backbone.Mediator.publish 'application:error', message: "Line #{line} of #{url}:\n#{msg}" # For iOS app window.addIPadSubscription = (channel) -> window.iPadSubscriptions[channel] = true diff --git a/app/lib/God.coffee b/app/lib/God.coffee index c6b9deb01..079d071dd 100644 --- a/app/lib/God.coffee +++ b/app/lib/God.coffee @@ -34,8 +34,15 @@ module.exports = class God extends CocoClass angels: [] busyAngels: [] # Busy angels will automatically register here. + # Determine how many concurrent Angels/web workers to use at a time # ~20MB per idle worker + angel overhead - every Angel maps to 1 worker - angelCount = options.maxAngels ? 2 # How many concurrent Angels/web workers to use at a time + if options.maxAngels? + angelCount = options.maxAngels + else if window.application.isIPadApp + angelCount = 1 + else + angelCount = 2 + # Don't generate all Angels at once. _.delay (=> new Angel @angelsShare unless @destroyed), 250 * i for i in [0 ... angelCount] diff --git a/app/lib/LevelBus.coffee b/app/lib/LevelBus.coffee index 61d8f79bf..04a7429a1 100644 --- a/app/lib/LevelBus.coffee +++ b/app/lib/LevelBus.coffee @@ -173,7 +173,7 @@ module.exports = class LevelBus extends Bus @fireScriptsRef?.set({}) state = @session.get('state') state.scripts = {} - state.complete = false + #state.complete = false # Keep it complete once ever completed. @session.set('state', state) @changedSessionProperties.state = true @saveSession() @@ -217,14 +217,14 @@ module.exports = class LevelBus extends Bus newGoalStates = goalStates state = @session.get('state') oldGoalStates = state.goalStates or {} - + changed = false for goalKey, goalState of newGoalStates continue if oldGoalStates[goalKey]?.status is 'success' and goalState.status isnt 'success' # don't undo success, this property is for keying off achievements continue if utils.kindaEqual state.goalStates?[goalKey], goalState # Only save when goals really change changed = true oldGoalStates[goalKey] = _.cloneDeep newGoalStates[goalKey] - + if changed state.goalStates = oldGoalStates @session.set 'state', state diff --git a/app/lib/LevelLoader.coffee b/app/lib/LevelLoader.coffee index 02089c753..cd07e3020 100644 --- a/app/lib/LevelLoader.coffee +++ b/app/lib/LevelLoader.coffee @@ -117,7 +117,7 @@ module.exports = class LevelLoader extends CocoClass @loadDefaultComponentsForThangType itemThangType @loadThangsRequiredByThangType itemThangType @sessionDependenciesRegistered[session.id] = true - if _.size(@sessionDependenciesRegistered) is 2 and not (r for r in @worldNecessities when r?).length + if _.size(@sessionDependenciesRegistered) is 2 and @checkAllWorldNecessitiesRegisteredAndLoaded() @onWorldNecessitiesLoaded() consolidateFlagHistory: -> @@ -204,6 +204,8 @@ module.exports = class LevelLoader extends CocoClass for thangType in thangNames.models @loadDefaultComponentsForThangType(thangType) @loadThangsRequiredByThangType(thangType) + @thangNamesLoaded = true + @onWorldNecessitiesLoaded() if @checkAllWorldNecessitiesRegisteredAndLoaded() loadDefaultComponentsForThangType: (thangType) -> return unless components = thangType.get('components') @@ -220,8 +222,14 @@ module.exports = class LevelLoader extends CocoClass return unless index >= 0 @worldNecessities.splice(index, 1) @worldNecessities = (r for r in @worldNecessities when r?) - if @worldNecessities.length is 0 and (not @sessionDependenciesRegistered or @sessionDependenciesRegistered[@session.id] and (not @opponentSession or @sessionDependenciesRegistered[@opponentSession.id])) - @onWorldNecessitiesLoaded() + @onWorldNecessitiesLoaded() if @checkAllWorldNecessitiesRegisteredAndLoaded() + + checkAllWorldNecessitiesRegisteredAndLoaded: -> + return false unless _.filter(@worldNecessities).length is 0 + return false unless @thangNamesLoaded + return false if @sessionDependenciesRegistered and not @sessionDependenciesRegistered[@session.id] + return false if @sessionDependenciesRegistered and @opponentSession and not @sessionDependenciesRegistered[@opponentSession.id] + true onWorldNecessitiesLoaded: -> @initWorld() diff --git a/app/lib/LevelOptions.coffee b/app/lib/LevelOptions.coffee new file mode 100644 index 000000000..908fb1239 --- /dev/null +++ b/app/lib/LevelOptions.coffee @@ -0,0 +1,221 @@ +module.exports = LevelOptions = + 'dungeons-of-kithgard': + hidesSubmitUntilRun: true + hidesPlayButton: true + hidesRunShortcut: true + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots'} + restrictedGear: {feet: 'leather-boots'} + 'gems-in-the-deep': + hidesSubmitUntilRun: true + hidesPlayButton: true + hidesRunShortcut: true + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots'} + restrictedGear: {feet: 'leather-boots'} + 'shadow-guard': + hidesSubmitUntilRun: true + hidesPlayButton: true + hidesRunShortcut: true + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots'} + restrictedGear: {feet: 'leather-boots', 'right-hand': 'simple-sword'} + 'kounter-kithwise': + hidesPlayButton: true + hidesRunShortcut: true + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots'} + restrictedGear: {feet: 'leather-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'} + 'crawlways-of-kithgard': + hidesPlayButton: true + hidesRunShortcut: true + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots'} + restrictedGear: {feet: 'leather-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'} + 'forgetful-gemsmith': + hidesPlayButton: true + hidesRunShortcut: true + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots'} + restrictedGear: {feet: 'leather-boots', 'programming-book': 'programmaticon-i'} + 'true-names': + hidesPlayButton: true + hidesRunShortcut: true + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'right-hand': 'simple-sword', waist: 'leather-belt'} + restrictedGear: {feet: 'leather-boots'} + 'favorable-odds': + hidesRunShortcut: true + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'right-hand': 'simple-sword'} + restrictedGear: {feet: 'leather-boots'} + 'the-raised-sword': + hidesRunShortcut: true + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic'} + restrictedGear: {feet: 'leather-boots'} + 'the-first-kithmaze': + hidesRunShortcut: true + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} + restrictedGear: {feet: 'leather-boots'} + 'haunted-kithmaze': + hidesRunShortcut: true + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} + restrictedGear: {feet: 'leather-boots'} + 'descending-further': + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} + restrictedGear: {feet: 'leather-boots'} + 'the-second-kithmaze': + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} + restrictedGear: {feet: 'leather-boots'} + 'dread-door': + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'} + restrictedGear: {feet: 'leather-boots'} + 'known-enemy': + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i', torso: 'leather-tunic'} + restrictedGear: {feet: 'leather-boots'} + 'master-of-names': + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses', torso: 'leather-tunic'} + restrictedGear: {feet: 'leather-boots'} + 'lowly-kithmen': + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses', torso: 'leather-tunic'} + restrictedGear: {feet: 'leather-boots'} + 'closing-the-distance': + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic', eyes: 'crude-glasses'} + restrictedGear: {feet: 'leather-boots'} + 'tactical-strike': + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic', eyes: 'crude-glasses'} + restrictedGear: {feet: 'leather-boots'} + 'the-final-kithmaze': + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'} + 'the-gauntlet': + hidesHUD: true + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'} + restrictedGear: {feet: 'leather-boots'} + 'kithgard-gates': + hidesSay: true + hidesCodeToolbar: true + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'right-hand': 'builders-hammer', torso: 'leather-tunic'} + restrictedGear: {'right-hand': 'simple-sword'} + 'defense-of-plainswood': + hidesRealTimePlayback: true + requiredGear: {feet: 'simple-boots', 'right-hand': 'builders-hammer'} + restrictedGear: {'right-hand': 'simple-sword'} + 'winding-trail': + hidesRealTimePlayback: true + requiredGear: {feet: 'leather-boots', 'right-hand': 'builders-hammer'} + restrictedGear: {feet: 'simple-boots', 'right-hand': 'simple-sword'} + 'thornbush-farm': + requiredGear: {feet: 'leather-boots', 'right-hand': 'builders-hammer', eyes: 'crude-glasses'} + restrictedGear: {feet: 'simple-boots', 'right-hand': 'simple-sword'} + 'back-to-back': + requiredGear: {feet: 'leather-boots', torso: 'leather-tunic', waist: 'leather-belt', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses', 'right-hand': 'simple-sword', 'left-hand': 'wooden-shield'} + restrictedGear: {feet: 'simple-boots', 'right-hand': 'builders-hammer'} + 'ogre-encampment': + requiredGear: {torso: 'leather-tunic', waist: 'leather-belt', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses', 'right-hand': 'simple-sword', 'left-hand': 'wooden-shield'} + restrictedGear: {feet: 'simple-boots', 'right-hand': 'builders-hammer'} + 'woodland-cleaver': + requiredGear: {torso: 'leather-tunic', waist: 'leather-belt', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses', 'right-hand': 'long-sword', 'left-hand': 'wooden-shield', wrists: 'sundial-wristwatch', feet: 'leather-boots'} + restrictedGear: {feet: 'simple-boots', 'right-hand': 'simple-sword'} + 'shield-rush': + requiredGear: {torso: 'leather-tunic', waist: 'leather-belt', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses', 'right-hand': 'long-sword', 'left-hand': 'bronze-shield', wrists: 'sundial-wristwatch'} + restrictedGear: {'left-hand': 'wooden-shield'} + 'peasant-protection': + requiredGear: {torso: 'leather-tunic', waist: 'leather-belt', 'programming-book': 'programmaticon-i', eyes: 'wooden-glasses', 'right-hand': 'long-sword', 'left-hand': 'bronze-shield', wrists: 'sundial-wristwatch'} + restrictedGear: {eyes: 'crude-glasses'} + 'munchkin-swarm': + requiredGear: {torso: 'leather-tunic', waist: 'leather-belt', 'programming-book': 'programmaticon-i', eyes: 'wooden-glasses', 'right-hand': 'long-sword', 'left-hand': 'bronze-shield', wrists: 'sundial-wristwatch'} + restrictedGear: {} + 'coinucopia': + requiredGear: {'programming-book': 'programmaticon-i', feet: 'leather-boots', flag: 'basic-flags'} + restrictedGear: {} + 'copper-meadows': + requiredGear: {'programming-book': 'programmaticon-i', feet: 'leather-boots', flag: 'basic-flags', eyes: 'wooden-glasses'} + restrictedGear: {} + 'drop-the-flag': + requiredGear: {'programming-book': 'programmaticon-i', feet: 'leather-boots', flag: 'basic-flags', eyes: 'wooden-glasses', 'right-hand': 'builders-hammer'} + restrictedGear: {'right-hand': 'longsword'} + 'deadly-pursuit': + requiredGear: {'programming-book': 'programmaticon-i', feet: 'leather-boots', flag: 'basic-flags', eyes: 'wooden-glasses', 'right-hand': 'builders-hammer'} + restrictedGear: {'right-hand': 'longsword'} + 'rich-forager': + requiredGear: {'programming-book': 'programmaticon-i', feet: 'leather-boots', flag: 'basic-flags', eyes: 'wooden-glasses', torso: 'leather-tunic', 'right-hand': 'longsword', 'left-hand': 'bronze-shield'} + restrictedGear: {'right-hand': 'builders-hammer'} + 'multiplayer-treasure-grove': + requiredGear: {'programming-book': 'programmaticon-i', feet: 'leather-boots', flag: 'basic-flags', eyes: 'wooden-glasses', torso: 'leather-tunic'} + restrictedGear: {} diff --git a/app/lib/LevelSetupManager.coffee b/app/lib/LevelSetupManager.coffee index d38ba6854..60231415e 100644 --- a/app/lib/LevelSetupManager.coffee +++ b/app/lib/LevelSetupManager.coffee @@ -8,16 +8,34 @@ module.exports = class LevelSetupManager extends CocoClass constructor: (@options) -> super() - @supermodel = new SuperModel() + @supermodel = @options.supermodel ? new SuperModel() @session = @options.session if @session @fillSessionWithDefaults() else - @loadSession(@supermodel) + @loadSession() + @loadModals() + loadSession: -> + url = "/db/level/#{@options.levelID}/session" + #url += "?team=#{@team}" if @options.team # TODO: figure out how to get the teams for multiplayer PVP hero style + @session = new LevelSession().setURL url + onSessionSync = -> + @session.url = -> '/db/level.session/' + @id + @fillSessionWithDefaults() + @listenToOnce @session, 'sync', onSessionSync + @session = @supermodel.loadModel(@session, 'level_session').model + if @session.loaded + onSessionSync.call @ + + fillSessionWithDefaults: -> + heroConfig = _.merge {}, me.get('heroConfig'), @session.get('heroConfig') + @session.set('heroConfig', heroConfig) + + loadModals: -> # build modals and prevent them from disappearing. - @heroesModal = new PlayHeroesModal({supermodel: @supermodel, session: @session, confirmButtonI18N: 'play.next', levelID: options.levelID}) - @inventoryModal = new InventoryModal({supermodel: @supermodel, session: @session, levelID: options.levelID}) + @heroesModal = new PlayHeroesModal({supermodel: @supermodel, session: @session, confirmButtonI18N: 'play.next', levelID: @options.levelID, hadEverChosenHero: @options.hadEverChosenHero}) + @inventoryModal = new InventoryModal({supermodel: @supermodel, session: @session, levelID: @options.levelID}) @heroesModalDestroy = @heroesModal.destroy @inventoryModalDestroy = @inventoryModal.destroy @heroesModal.destroy = @inventoryModal.destroy = _.noop @@ -25,32 +43,19 @@ module.exports = class LevelSetupManager extends CocoClass @listenToOnce @heroesModal, 'hero-loaded', @onceHeroLoaded @listenTo @inventoryModal, 'choose-hero-click', @onChooseHeroClicked @listenTo @inventoryModal, 'play-click', @onInventoryModalPlayClicked - - loadSession: (supermodel) -> - url = "/db/level/#{@options.levelID}/session" - #url += "?team=#{@team}" if @options.team # TODO: figure out how to get the teams for multiplayer PVP hero style - @session = new LevelSession().setURL url - @listenToOnce @session, 'sync', -> - @session.url = -> '/db/level.session/' + @id - @fillSessionWithDefaults() - supermodel.loadModel(@session, 'level_session').model - fillSessionWithDefaults: -> - heroConfig = _.merge {}, me.get('heroConfig'), @session.get('heroConfig') - @session.set('heroConfig', heroConfig) - open: -> - firstModal = if @options.hadEverChosenHero then @inventoryModal else @heroesModal + firstModal = if @options.hadEverChosenHero then @inventoryModal else @heroesModal @options.parent.openModalView(firstModal) # @inventoryModal.onShown() # replace? Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-open', volume: 1 - - + + #- Modal events onceHeroLoaded: (e) -> @inventoryModal.setHero(e.hero) - + onHeroesModalConfirmClicked: (e) -> @options.parent.openModalView(@inventoryModal) @inventoryModal.render() @@ -65,7 +70,7 @@ module.exports = class LevelSetupManager extends CocoClass @heroesModal.didReappear() @inventoryModal.endHighlight() window.tracker?.trackEvent 'Play Level Modal', Action: 'Choose Hero' - + onInventoryModalPlayClicked: -> @navigatingToPlay = true PlayLevelView = require 'views/play/level/PlayLevelView' @@ -75,4 +80,9 @@ module.exports = class LevelSetupManager extends CocoClass route: "/play/#{@options.levelPath || 'level'}/#{@options.levelID}" viewClass: viewClass viewArgs: [{supermodel: @supermodel}, @options.levelID] - } \ No newline at end of file + } + + destroy: -> + @heroesModalDestroy.call @heroesModal unless @heroesModal.destroyed + @inventoryModalDestroy.call @inventoryModal unless @inventoryModal.destroyed + super() diff --git a/app/lib/LinkedInHandler.coffee b/app/lib/LinkedInHandler.coffee deleted file mode 100644 index a1a7d0b5a..000000000 --- a/app/lib/LinkedInHandler.coffee +++ /dev/null @@ -1,34 +0,0 @@ -CocoClass = require 'lib/CocoClass' -{me} = require 'lib/auth' -{backboneFailure} = require 'lib/errors' -storage = require 'lib/storage' - - -module.exports = LinkedInHandler = class LinkedInHandler extends CocoClass - constructor: -> - super() - - subscriptions: - 'auth:linkedin-api-loaded': 'onLinkedInLoaded' - - onLinkedInLoaded: (e) -> - IN.Event.on IN, 'auth', @onLinkedInAuth - - onLinkedInAuth: (e) => #console.log 'Authorized with LinkedIn' - - constructEmployerAgreementObject: (cb) => - IN.API.Profile('me') - .fields(['positions', 'public-profile-url', 'id', 'first-name', 'last-name', 'email-address']) - .error(cb) - .result (profiles) => - cb null, profiles.values[0] - - getProfileData: (cb) => - IN.API.Profile('me') - .fields(['formatted-name', 'educations', 'skills', 'headline', 'summary', 'positions', 'public-profile-url']) - .error(cb) - .result (profiles) => - cb null, profiles.values[0] - - destroy: -> - super() diff --git a/app/lib/services/linkedin.coffee b/app/lib/services/linkedin.coffee deleted file mode 100644 index 7c1a22a63..000000000 --- a/app/lib/services/linkedin.coffee +++ /dev/null @@ -1,9 +0,0 @@ -module.exports = initializeLinkedIn = -> - window.linkedInAsyncInit = -> - #console.log 'Linkedin async init success!' - Backbone.Mediator.publish 'auth:linkedin-api-loaded', {} - - linkedInSnippet = - '' - - $('head').append(linkedInSnippet) diff --git a/app/lib/sprites/SpriteBuilder.coffee b/app/lib/sprites/SpriteBuilder.coffee index 527c263a8..91ee6a07e 100644 --- a/app/lib/sprites/SpriteBuilder.coffee +++ b/app/lib/sprites/SpriteBuilder.coffee @@ -115,6 +115,7 @@ module.exports = class SpriteBuilder if _.isString(childData) child = @buildShapeFromStore(childData) else + continue if not childData.gn child = @buildContainerFromStore(childData.gn) child.setTransform(childData.t...) cont.addChild(child) diff --git a/app/lib/surface/Lank.coffee b/app/lib/surface/Lank.coffee index 5adbbb4d5..731119d1c 100644 --- a/app/lib/surface/Lank.coffee +++ b/app/lib/surface/Lank.coffee @@ -59,7 +59,8 @@ module.exports = Lank = class Lank extends CocoClass constructor: (@thangType, options) -> super() - @isMissile = @thangType.get('name') in ['Arrow', 'Spear'] + spriteName = @thangType.get('name') + @isMissile = /(Missile|Arrow|Spear)/.test(spriteName) and not /Tower/.test(spriteName) @options = _.extend($.extend(true, {}, @options), options) @setThang @options.thang if @thang? @@ -638,8 +639,9 @@ module.exports = Lank = class Lank extends CocoClass onDialogue: (e) -> return unless @thang?.id is e.spriteID - label = @addLabel 'dialogue', Label.STYLE_DIALOGUE - label.setText e.blurb or '...' + unless @thang?.id is 'Hero Placeholder' # Don't show these for heroes, because they aren't actually first-person, just LevelDialogueView narration + label = @addLabel 'dialogue', Label.STYLE_DIALOGUE + label.setText e.blurb or '...' sound = e.sound ? AudioPlayer.soundForDialogue e.message, @thangType.get 'soundTriggers' @dialogueSoundInstance?.stop() if @dialogueSoundInstance = @playSound sound, false @@ -679,6 +681,13 @@ module.exports = Lank = class Lank extends CocoClass @lastGold = gold Backbone.Mediator.publish 'surface:gold-changed', {team: @thang.team, gold: gold, goldEarned: Math.floor(@thang.goldEarned ? 0)} + shouldMuteMessage: (m) -> + return true if m in ['moveRight', 'moveUp', 'moveDown', 'moveLeft'] + return true if /^attack /.test m + return true if /^Repeating loop/.test m + return true if /^findNearestEnemy/.test m + false + playSounds: (withDelay=true, volume=1.0) -> for event in @thang.currentEvents ? [] @playSound event, withDelay, volume @@ -686,7 +695,7 @@ module.exports = Lank = class Lank extends CocoClass AudioPlayer.playInterfaceSound 'coin_1', 0.25 if @thang.actionActivated and (action = @thang.getActionName()) isnt 'say' @playSound action, withDelay, volume - if @thang.sayMessage and withDelay and not @thang.silent # don't play sayMessages while scrubbing, annoying + if @thang.sayMessage and withDelay and not @thang.silent and not @shouldMuteMessage @thang.sayMessage # don't play sayMessages while scrubbing, annoying offsetFrames = Math.abs(@thang.sayStartTime - @thang.world.age) / @thang.world.dt if offsetFrames <= 2 # or (not withDelay and offsetFrames < 30) sound = AudioPlayer.soundForDialogue @thang.sayMessage, @thangType.get 'soundTriggers' diff --git a/app/lib/surface/LankBoss.coffee b/app/lib/surface/LankBoss.coffee index cd68e6b9f..a6703d99e 100644 --- a/app/lib/surface/LankBoss.coffee +++ b/app/lib/surface/LankBoss.coffee @@ -230,11 +230,12 @@ module.exports = class LankBoss extends CocoClass cacheObstacles: (updatedObstacles=null) -> return if @cachedObstacles and not updatedObstacles - wallLanks = (lank for lank in @lankArray when lank.thangType?.get('name').search(/(dungeon|indoor).wall/i) isnt -1) + lankArray = @lankArray + wallLanks = (lank for lank in lankArray when lank.thangType?.get('name').search(/(dungeon|indoor).wall/i) isnt -1) return if _.any (s.stillLoading for s in wallLanks) walls = (lank.thang for lank in wallLanks) @world.calculateBounds() - wallGrid = new Grid walls, @world.size()... + wallGrid = new Grid walls, @world.width, @world.height if updatedObstacles possiblyUpdatedWallLanks = (lank for lank in wallLanks when _.find updatedObstacles, (w2) -> lank is w2 or (Math.abs(lank.thang.pos.x - w2.thang.pos.x) + Math.abs(lank.thang.pos.y - w2.thang.pos.y)) <= 16) else diff --git a/app/lib/world/names.coffee b/app/lib/world/names.coffee index e86921e41..fcee679d9 100644 --- a/app/lib/world/names.coffee +++ b/app/lib/world/names.coffee @@ -69,6 +69,10 @@ module.exports.thangNames = thangNames = 'Allankrita' 'Kay' 'Shannon' + 'Scarlett' + 'Natasha' + 'Aphrodite' + 'Gabrielle' ] 'Peasant M': [ 'Yorik' @@ -88,6 +92,10 @@ module.exports.thangNames = thangNames = 'Paps' 'Hodor' 'James' + 'Merek' + 'Brom' + 'Tybalt' + 'Fendrel' ] 'Peasant F': [ 'Hilda' @@ -101,6 +109,18 @@ module.exports.thangNames = thangNames = 'Regan' 'Giselle' 'Bernadette' + 'Millicent' + 'Anastas' + 'Thea' + 'Ellyn' + 'Alianor' + 'Anastas' + 'Cristiana' + 'Helena' + 'Alexia' + 'Katelyn' + 'Rose' + ] 'Archer F': [ 'Phoebe' diff --git a/app/lib/world/world.coffee b/app/lib/world/world.coffee index a904d287c..6c21b795e 100644 --- a/app/lib/world/world.coffee +++ b/app/lib/world/world.coffee @@ -17,7 +17,7 @@ REAL_TIME_BUFFER_MAX = 3 * PROGRESS_UPDATE_INTERVAL REAL_TIME_BUFFERED_WAIT_INTERVAL = 0.5 * PROGRESS_UPDATE_INTERVAL REAL_TIME_COUNTDOWN_DELAY = 3000 # match CountdownScreen ITEM_ORIGINAL = '53e12043b82921000051cdf9' -COUNTDOWN_LEVELS = ['sky-span', 'dueling-grounds', 'cavern-survival'] # TODO: determine flag usage dynamically +COUNTDOWN_LEVELS = ['sky-span'] module.exports = class World @className: 'World' @@ -99,12 +99,10 @@ module.exports = class World continueLaterFn = => @loadFrames(loadedCallback, errorCallback, loadProgressCallback, preloadedCallback, skipDeferredLoading, loadUntilFrame) unless @destroyed if @realTime and not @countdownFinished - if @levelID in ['the-first-kithmaze', 'haunted-kithmaze', 'the-second-kithmaze', 'the-final-kithmaze', 'the-gauntlet', 'winding-trail', 'thornbush-farm'] - @realTimeSpeedFactor = 5 - else if @levelID in ['forgetful-gemsmith', 'descending-further', 'tactical-strike', 'kithgard-gates'] - @realTimeSpeedFactor = 3 - else - @realTimeSpeedFactor = 1 + @realTimeSpeedFactor = 1 + unless @showsCountdown + if @levelID in ['thornbush-farm', 'back-to-back', 'ogre-encampment', 'woodland-cleaver', 'shield-rush', 'peasant-protection', 'munchkin-swarm'] + @realTimeSpeedFactor = 3 if @showsCountdown return setTimeout @finishCountdown(continueLaterFn), REAL_TIME_COUNTDOWN_DELAY else @@ -203,12 +201,12 @@ module.exports = class World loadFromLevel: (level, willSimulate=true) -> @levelID = level.slug - @showsCountdown = @levelID in COUNTDOWN_LEVELS @levelComponents = level.levelComponents @thangTypes = level.thangTypes @loadScriptsFromLevel level @loadSystemsFromLevel level @loadThangsFromLevel level, willSimulate + @showsCountdown = @levelID in COUNTDOWN_LEVELS or _.any(@thangs, (t) -> (t.programmableProperties and 'findFlags' in t.programmableProperties) or t.inventory?.flag) system.start @thangs for system in @systems loadSystemsFromLevel: (level) -> diff --git a/app/locale/ar.coffee b/app/locale/ar.coffee index 0164bb1f8..de3c0f0bd 100644 --- a/app/locale/ar.coffee +++ b/app/locale/ar.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi io_blurb: "بسيطة ولكنها غامضة." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/bg.coffee b/app/locale/bg.coffee index 3cc54c790..de1f5c4dc 100644 --- a/app/locale/bg.coffee +++ b/app/locale/bg.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "български език", englishDescri # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "български език", englishDescri # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "български език", englishDescri # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "български език", englishDescri # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "български език", englishDescri # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "български език", englishDescri # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "български език", englishDescri # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "български език", englishDescri # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "български език", englishDescri # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/ca.coffee b/app/locale/ca.coffee index e42be4a54..7d0bfdbbb 100644 --- a/app/locale/ca.coffee +++ b/app/locale/ca.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details heroes: "Herois" # Tooltip on hero shop button from /play achievements: "Triomfs" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr restart: "Recomençar" goals: "Objectius" goal: "Objectiu" +# running: "Running..." success: "Exit!" incomplete: "Incomplet" timed_out: "S'ha acabat el temps" failing: "Fallant" action_timeline: "Cronologia d'accions" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. tome_other_units: "Altres unitats" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. tome_cast_button_run: "Executar" tome_cast_button_running: "Executant" tome_cast_button_ran: "Executat" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" tome_your_skills: "Les teves habilitats" - hud_continue: "Continuar (shift+espai)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" keyboard_shortcuts: "Dreceres del teclat" loading_ready: "Preparat!" loading_start: "Comença el nivell" +# problem_alert_title: "Fix Your Code" time_current: "Ara:" time_total: "Maxim:" time_goto: "Ves a:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr game_menu: inventory_tab: "Inventari" - choose_hero_tab: "Recomençar nivell" save_load_tab: "Desa/Carrega" options_tab: "Opcions" guide_tab: "Gui" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: choose_hero: "Escull el teu heroi" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr io_blurb: "Senzill però obscur." status: "Estat" weapons: "Armes" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" attack: "Dany" # Can also translate as "Attack" health: "Salut" speed: "Velocitat" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr enter: "Enter" escape: "Escape" shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/cs.coffee b/app/locale/cs.coffee index 200432f54..92506c2d6 100644 --- a/app/locale/cs.coffee +++ b/app/locale/cs.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr restart: "Restartovat" goals: "Cíl" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "Časová osa" click_to_select: "Vyberte kliknutím." +# reload: "Reload" reload_title: "Znovunačíst veškerý kód?" reload_really: "Opravdu chcete resetovat tuto úroveň do počátečního stavu?" reload_confirm: "Znovu načíst vše" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr tome_minion_spells: "Vaše oblíbená kouzla" # Only in old-style levels. tome_read_only_spells: "Kouzla jen pro čtení" # Only in old-style levels. tome_other_units: "Ostatní jednotky" # Only in old-style levels. - tome_cast_button_castable: "Spustit" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Spouštění" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Spustit Kouzlo" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr tome_select_a_thang: "Zvolte někoho pro " tome_available_spells: "Dostupná kouzla" # tome_your_skills: "Your Skills" - hud_continue: "Pokračovat (stiskněte shift-mezera)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr diplomat_launch_url: "zahájení v Říjnu" diplomat_introduction_suf: "bylo, že o CodeCombat je velký zájem i v jiných zemích, obzvláště v Brazílii! Chystáme regiment překladatelů ke zpřístupnění CodeCombatu světu. Pokud chcete nakouknout pod pokličku, dozvědět se o připravovaných novinkách a zpřístupnit úrovně vašim národním kolegům, toto je role pro vás." diplomat_attribute_1: "Plynulost v angličtině a v jazyce do kterého budete překládat. Při předávání komplexních myšlenek je důležité si být jistí v kramflecích v obou jazycích!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/da.coffee b/app/locale/da.coffee index b245a0739..e8467ffe4 100644 --- a/app/locale/da.coffee +++ b/app/locale/da.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans restart: "Start forfra" goals: "Mål" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "Handlingstidslinje" click_to_select: "Klik på en enhed for at vælge" +# reload: "Reload" reload_title: "Genindlæs alt kode?" reload_really: "Er du sikker på at du ønsker at genindlæse denne bane helt fra begyndelsen?" reload_confirm: "Genindlæs alt" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. tome_other_units: "Andre enheder" # Only in old-style levels. - tome_cast_button_castable: "Kast Trylleformular" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans tome_select_a_thang: "Vælg nogen til at " tome_available_spells: "Tilgængelige trylleformularer" # tome_your_skills: "Your Skills" - hud_continue: "Fortsæt (tryk skift-mellemrum)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Spring over (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/de-AT.coffee b/app/locale/de-AT.coffee index 26caf708f..9f397f82b 100644 --- a/app/locale/de-AT.coffee +++ b/app/locale/de-AT.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details heroes: "Helden" # Tooltip on hero shop button from /play achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: restart: "Neustart" goals: "Ziele" # goal: "Goal" +# running: "Running..." success: "Erfolgreich!" incomplete: "Unvollständig" timed_out: "Zeit abgelaufen" # failing: "Failing" action_timeline: "Aktionszeitstrahl" click_to_select: "Klicke auf eine Einheit, um sie auszuwählen." +# reload: "Reload" reload_title: "Gesamten Code neu laden?" reload_really: "Bist Du sicher, dass Du das Level neu beginnen willst?" reload_confirm: "Alles neu laden" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: tome_minion_spells: "Die Zaubersprüche Deiner Knechte" # Only in old-style levels. tome_read_only_spells: "Nur-lesen Zauberspüche" # Only in old-style levels. tome_other_units: "Andere Einheiten" # Only in old-style levels. - tome_cast_button_castable: "Führe aus" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Ausführen" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Zauberspuch ausführen" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: tome_select_a_thang: "Wähle jemanden aus, um " tome_available_spells: "Verfügbare Zauber" # tome_your_skills: "Your Skills" - hud_continue: "Weiter (drücke Shift + Leertaste)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Überspringen (Esc)" keyboard_shortcuts: "Tastenkürzel" loading_ready: "Bereit!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" time_current: "Aktuell" time_total: "Total" time_goto: "Gehe zu" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: game_menu: inventory_tab: "Inventar" - choose_hero_tab: "Level neustarten" save_load_tab: "Speichere/Lade" options_tab: "Einstellungen" guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: choose_hero: "Wähle deinen Helden" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: io_blurb: "Simpel aber obskur." status: "Status" weapons: "Waffen" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" health: "Gesundheit" speed: "Geschwindigkeit" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: enter: "Eingabetaste" escape: "Escape" shift: "Umschalttaste" - cast_spell: "Führe aktuellen Zauberspruch aus." +# run_code: "Run current code." run_real_time: "Führe in Echtzeit aus." continue_script: "Setze nach aktuellenm Skript fort." skip_scripts: "Überspringe alle überspringbaren Skripte." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: diplomat_launch_url: "Launch im Oktober" diplomat_introduction_suf: "ist das es ein großes Interesse an CodeCombat in anderen Ländern gibt! Wir stellen eine Truppe von Übersetzern zusammen, die gewillt sind einen Satz Wörten in einen anderen Satz Wörter umzuwandeln um CodeCombat der Welt so zugänglich wie möglich zu machen. Wenn du es magst eine Vorschau von zukünftigem Content zu erhalten und diese Level so schnell wie möglich deinen Landsleuten zur Verfügung zu stellen, dann ist diese Klasse vielleicht für dich." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "Finde deine Sprachdatei " diplomat_github_url: "bei GitHub" diplomat_join_suf_github: ", editiere sie online und reiche einen Pull Request ein. Außerdem, hake die Checkbox unten an um über neue Entwicklungen bei der Internationalisierung auf dem laufenden zu bleiben!" diff --git a/app/locale/de-CH.coffee b/app/locale/de-CH.coffee index 03ab4b580..f7800c398 100644 --- a/app/locale/de-CH.coffee +++ b/app/locale/de-CH.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge restart: "Neu starte" goals: "Ziel" # goal: "Goal" +# running: "Running..." success: "Erfolg!" incomplete: "Unvollständig" timed_out: "Ziit abglaufe" failing: "Fehler" action_timeline: "Aktionsziitleiste" click_to_select: "Klick uf e Einheit zum sie uswähle." +# reload: "Reload" reload_title: "De ganze Code neu lade?" reload_really: "Bisch sicher du willsch level neu lade bis zrugg zum Afang?" reload_confirm: "Alles neu lade" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge tome_minion_spells: "Zaubersprüch vo dine Minions" # Only in old-style levels. tome_read_only_spells: "Read-Only Zaubersprüch" # Only in old-style levels. tome_other_units: "Anderi Einheite" # Only in old-style levels. - tome_cast_button_castable: "Zauber beschwöre" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Wird beschwore" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge tome_select_a_thang: "Wähl öpper us für" tome_available_spells: "Verfüegbari Zaubersprüch" # tome_your_skills: "Your Skills" - hud_continue: "Wiiter (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Überspringe (esc)" keyboard_shortcuts: "Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" time_current: "Jetzt:" time_total: "Max:" time_goto: "Goh zu:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge io_blurb: "Eifach aber undurchsichtig." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge enter: "Enter" escape: "Escape" # shift: "Shift" - cast_spell: "Aktuelle Zauberspruch beschwöre." +# run_code: "Run current code." # run_real_time: "Run in real time." continue_script: "Nochem aktuelle Script fortsetze." skip_scripts: "Alli überspringbare Scripts überspringe." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/de-DE.coffee b/app/locale/de-DE.coffee index 2a1eb0728..17f311555 100644 --- a/app/locale/de-DE.coffee +++ b/app/locale/de-DE.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details heroes: "Helden" # Tooltip on hero shop button from /play achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: restart: "Neustart" goals: "Ziele" # goal: "Goal" +# running: "Running..." success: "Erfolgreich!" incomplete: "Unvollständig" timed_out: "Zeit abgelaufen" # failing: "Failing" action_timeline: "Aktionszeitstrahl" click_to_select: "Klicke auf eine Einheit, um sie auszuwählen." +# reload: "Reload" reload_title: "Gesamten Code neu laden?" reload_really: "Bist Du sicher, dass Du das Level neu beginnen willst?" reload_confirm: "Alles neu laden" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: tome_minion_spells: "Die Zaubersprüche Deiner Knechte" # Only in old-style levels. tome_read_only_spells: "Nur-lesen Zauberspüche" # Only in old-style levels. tome_other_units: "Andere Einheiten" # Only in old-style levels. - tome_cast_button_castable: "Führe aus" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Ausführen" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Zauberspuch ausführen" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: tome_select_a_thang: "Wähle jemanden aus, um " tome_available_spells: "Verfügbare Zauber" # tome_your_skills: "Your Skills" - hud_continue: "Weiter (drücke Shift + Leertaste)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Überspringen (Esc)" keyboard_shortcuts: "Tastenkürzel" loading_ready: "Bereit!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" time_current: "Aktuell" time_total: "Total" time_goto: "Gehe zu" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: game_menu: inventory_tab: "Inventar" - choose_hero_tab: "Level neustarten" save_load_tab: "Speichere/Lade" options_tab: "Einstellungen" guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: choose_hero: "Wähle deinen Helden" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: io_blurb: "Simpel aber obskur." status: "Status" weapons: "Waffen" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" health: "Gesundheit" speed: "Geschwindigkeit" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: enter: "Eingabetaste" escape: "Escape" shift: "Umschalttaste" - cast_spell: "Führe aktuellen Zauberspruch aus." +# run_code: "Run current code." run_real_time: "Führe in Echtzeit aus." continue_script: "Setze nach aktuellenm Skript fort." skip_scripts: "Überspringe alle überspringbaren Skripte." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: diplomat_launch_url: "Launch im Oktober" diplomat_introduction_suf: "ist das es ein großes Interesse an CodeCombat in anderen Ländern gibt! Wir stellen eine Truppe von Übersetzern zusammen, die gewillt sind einen Satz Wörten in einen anderen Satz Wörter umzuwandeln um CodeCombat der Welt so zugänglich wie möglich zu machen. Wenn du es magst eine Vorschau von zukünftigem Content zu erhalten und diese Level so schnell wie möglich deinen Landsleuten zur Verfügung zu stellen, dann ist diese Klasse vielleicht für dich." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "Finde deine Sprachdatei " diplomat_github_url: "bei GitHub" diplomat_join_suf_github: ", editiere sie online und reiche einen Pull Request ein. Außerdem, hake die Checkbox unten an um über neue Entwicklungen bei der Internationalisierung auf dem laufenden zu bleiben!" diff --git a/app/locale/el.coffee b/app/locale/el.coffee index f5f906856..8b74a4d66 100644 --- a/app/locale/el.coffee +++ b/app/locale/el.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details heroes: "Ήρωες" # Tooltip on hero shop button from /play achievements: "Επιτεύγματα" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre restart: "Επανεκκίνηση" goals: "Στόχοι" goal: "Στόχος" +# running: "Running..." success: "Επιτυχία!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "Χρονοδιάγραμμα δράσης" click_to_select: "Κάντε κλικ σε μια μονάδα για να το επιλέξετε." +# reload: "Reload" reload_title: "Ανανέωση όλου του κωδικά;" reload_really: "Είστε σίγουροι ότι θέλετε να φορτώσετε αυτό το επίπεδο από την αρχή;" reload_confirm: "Ανανέωση όλων" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre tome_minion_spells: "Ξόρκια για τα τσιράκια σας" # Only in old-style levels. tome_read_only_spells: "Ξορκια μονο για αναγνωση" # Only in old-style levels. tome_other_units: "Άλλες μονάδες" # Only in old-style levels. - tome_cast_button_castable: "Μαγεψε" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre io_blurb: "Απλή αλλά ασαφής." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/en-AU.coffee b/app/locale/en-AU.coffee index 0267835e2..00fe42bd4 100644 --- a/app/locale/en-AU.coffee +++ b/app/locale/en-AU.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/en-GB.coffee b/app/locale/en-GB.coffee index 8c0f02b82..441b9b6dd 100644 --- a/app/locale/en-GB.coffee +++ b/app/locale/en-GB.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalisation developments!" diff --git a/app/locale/en-US.coffee b/app/locale/en-US.coffee index 7fc99dda7..1a63a816b 100644 --- a/app/locale/en-US.coffee +++ b/app/locale/en-US.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/en.coffee b/app/locale/en.coffee index ca45b9020..8ca59d54d 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -64,10 +64,14 @@ next: "Next" # Go from choose hero to choose inventory before playing a level change_hero: "Change Hero" # Go back from choose inventory to choose hero choose_inventory: "Equip Items" + buy_gems: "Buy Gems" older_campaigns: "Older Campaigns" anonymous: "Anonymous Player" level_difficulty: "Difficulty: " campaign_beginner: "Beginner Campaign" + awaiting_levels_adventurer_prefix: "We release five levels per week." + awaiting_levels_adventurer: "Sign up as an Adventurer" + awaiting_levels_adventurer_suffix: "to be the first to play new levels." choose_your_level: "Choose Your Level" # The rest of this section is the old play view at /play-old and isn't very important. adventurer_prefix: "You can jump to any level below, or discuss the levels on " adventurer_forum: "the Adventurer forum" @@ -164,6 +168,7 @@ medium: "Medium" hard: "Hard" player: "Player" + player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard units: second: "second" @@ -198,6 +203,7 @@ failing: "Failing" action_timeline: "Action Timeline" click_to_select: "Click on a unit to select it." + reload: "Reload" reload_title: "Reload All Code?" reload_really: "Are you sure you want to reload this level back to the beginning?" reload_confirm: "Reload All" @@ -233,13 +239,14 @@ tome_select_a_thang: "Select Someone for " tome_available_spells: "Available Spells" tome_your_skills: "Your Skills" - hud_continue: "Continue (shift+space)" + tome_current_method: "Current Method" hud_continue_short: "Continue" code_saved: "Code Saved" skip_tutorial: "Skip (esc)" keyboard_shortcuts: "Key Shortcuts" loading_ready: "Ready!" loading_start: "Start Level" + problem_alert_title: "Fix Your Code" time_current: "Now:" time_total: "Max:" time_goto: "Go to:" @@ -279,7 +286,6 @@ game_menu: inventory_tab: "Inventory" - choose_hero_tab: "Restart Level" save_load_tab: "Save/Load" options_tab: "Options" guide_tab: "Guide" @@ -297,10 +303,13 @@ choose_inventory: "Equip Items" equipped_item: "Equipped" available_item: "Available" + restricted_title: "Restricted" should_equip: "(double-click to equip)" equipped: "(equipped)" locked: "(locked)" restricted: "(restricted in this level)" + equip: "Equip" + unequip: "Unequip" choose_hero: choose_hero: "Choose Your Hero" @@ -446,7 +455,7 @@ enter: "Enter" escape: "Escape" shift: "Shift" - cast_spell: "Cast current spell." + run_code: "Run current code." run_real_time: "Run in real time." continue_script: "Continue past current script." skip_scripts: "Skip past all skippable scripts." @@ -627,6 +636,9 @@ diplomat_launch_url: "launch in October" diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" + diplomat_i18n_page_prefix: "You can start translating our levels by going to our" + diplomat_i18n_page: "translations page" + diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "Find your language locale file " diplomat_github_url: "on GitHub" diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/es-419.coffee b/app/locale/es-419.coffee index 901f4f908..cdacc8d4b 100644 --- a/app/locale/es-419.coffee +++ b/app/locale/es-419.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details heroes: "Héroes" # Tooltip on hero shop button from /play achievements: "Logros" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip restart: "Reiniciar" goals: "Objetivos" goal: "Objetivo" +# running: "Running..." success: "¡Éxito!" incomplete: "Incompleto" timed_out: "Se te acabo el tiempo" failing: "Fallando" action_timeline: "Cronologia de Accion" click_to_select: "Has click en una unidad para seleccionarla." +# reload: "Reload" reload_title: "¿Recargar Todo el Código?" reload_really: "¿Estás seguro de que quieres empezar este nivel desde el principio?" reload_confirm: "Recargar Todo" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip tome_minion_spells: "Hechizos de tus Secuaces" # Only in old-style levels. tome_read_only_spells: "Hechizos de Sólo Lectura" # Only in old-style levels. tome_other_units: "Otras Unidades" # Only in old-style levels. - tome_cast_button_castable: "Invocable" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Invocando" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Invocar" # Temporary, if tome_cast_button_ran isn't translated. tome_cast_button_run: "Ejecutar" tome_cast_button_running: "Ejecutando" tome_cast_button_ran: "Ejecutado" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip tome_select_a_thang: "Selecciona Alguien para " tome_available_spells: "Hechizos Disponibles" tome_your_skills: "Tus habilidades" - hud_continue: "Continuar (presionar shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Saltar (esc)" keyboard_shortcuts: "Atajos de teclado" loading_ready: "¡Listo!" loading_start: "Iniciar nivel" +# problem_alert_title: "Fix Your Code" time_current: "Ahora:" time_total: "Max:" time_goto: "Ir a:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip game_menu: inventory_tab: "Inventario" - choose_hero_tab: "Reiniciar Nivel" save_load_tab: "Guardar/Cargar" options_tab: "Opciones" guide_tab: "Guía" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: choose_hero: "Elige tu héroe" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip io_blurb: "Simple pero oscuro." status: "Estado" weapons: "Armas" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" health: "Salud" speed: "Velocidad" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip enter: "Enter" escape: "Escape" shift: "Shift" - cast_spell: "Aplicar hechizo actual." +# run_code: "Run current code." run_real_time: "Ejecutar en tiempo real." continue_script: "Continuar hasta finalizado el script." skip_scripts: "Omitir todos los scripts omitibles." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/es-ES.coffee b/app/locale/es-ES.coffee index 019c98080..ecad14705 100644 --- a/app/locale/es-ES.coffee +++ b/app/locale/es-ES.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details heroes: "Heroes" # Tooltip on hero shop button from /play achievements: "Logros" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis restart: "Reiniciar" goals: "Objetivos" goal: "Objetivo Principal" +# running: "Running..." success: "Exito!" incomplete: "Incompleto" timed_out: "Te has quedado sin tiempo" failing: "Fallando" action_timeline: "Cronología de Acción" click_to_select: "Click en una unidad para seleccionarla" +# reload: "Reload" reload_title: "¿Recargar todo el código?" reload_really: "¿Estas seguro que quieres reiniciar el nivel?" reload_confirm: "Recargarlo todo" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis tome_minion_spells: "Los hechizos de tus súbditos" # Only in old-style levels. tome_read_only_spells: "Hechizos de solo lectura" # Only in old-style levels. tome_other_units: "Otras unidades" # Only in old-style levels. - tome_cast_button_castable: "Invocable" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Invocando" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Invocar" # Temporary, if tome_cast_button_ran isn't translated. tome_cast_button_run: "Correr" tome_cast_button_running: "Corriendo" tome_cast_button_ran: "Corrido" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis tome_select_a_thang: "Selecciona a alguien para " tome_available_spells: "Hechizos disponibles" tome_your_skills: "Tus Habilidades" - hud_continue: "Continuar (pulsa Shift+Space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" code_saved: "Codigo Salvado" skip_tutorial: "Saltar (esc)" keyboard_shortcuts: "Atajos de teclado" loading_ready: "¡Listo!" loading_start: "Iniciar Nivel" +# problem_alert_title: "Fix Your Code" time_current: "Ahora:" time_total: "Máx:" time_goto: "Ir a:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis game_menu: inventory_tab: "Inventario" - choose_hero_tab: "Reiniciar Nivel" save_load_tab: "Salvar/Cargar" options_tab: "Opciones" guide_tab: "Guia" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: choose_hero: "Selecciona tu Heroe" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis io_blurb: "Simple pero oscuro." status: "Estado" weapons: "Armas" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" attack: "Daño" # Can also translate as "Attack" health: "Salud" speed: "Velocidad" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis enter: "Enter" escape: "Escape" shift: "Shift" - cast_spell: "Invocar el hechizo actual." +# run_code: "Run current code." run_real_time: "correr en tiempo real." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis diplomat_launch_url: "lanzamiento en octubre" diplomat_introduction_suf: "hay un interés considerable en CodeCombat en otros paises, ¡especialmente Brasil! Estamos formando un cuerpo de traductores con ganas de traducir un grupo de palabras tras otro para hacer CodeCombat tan accesible para todo el mundo como sea posible. Si quieres recibir avances de próximos contenidos y quieres poner esos niveles a disposición de los que comparten tu idioma tan pronto como sea posible, entonces esta Clase es para ti." diplomat_attribute_1: "Fluidez con el ingles y el lenguaje al que quieras traducir. Cuando de transmitir ideas complejas se trata, ¡es importante tener grandes conocimientos de ambas!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "Encuentra el fichero local de tu idioma " diplomat_github_url: "en GitHub" diplomat_join_suf_github: ", edítalo online, y solicita que sea revisado. Además, marca la casilla de abajo para mantenerte informado en nuevos progresos en Internacionalización." diff --git a/app/locale/fa.coffee b/app/locale/fa.coffee index dfca228d2..94ad73a69 100644 --- a/app/locale/fa.coffee +++ b/app/locale/fa.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/fi.coffee b/app/locale/fi.coffee index 19faa2465..d7f2d373e 100644 --- a/app/locale/fi.coffee +++ b/app/locale/fi.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/fr.coffee b/app/locale/fr.coffee index 18433606a..ab4e82cd8 100644 --- a/app/locale/fr.coffee +++ b/app/locale/fr.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details heroes: "Héros" # Tooltip on hero shop button from /play achievements: "Succès" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "français", englishDescription: "French", t restart: "Relancer" goals: "Objectifs" goal: "Objectif" +# running: "Running..." success: "Succès" incomplete: "Incomplet" timed_out: "Plus de temps" failing: "Échec" action_timeline: "Action sur la ligne de temps" click_to_select: "Clique sur une unité pour la sélectionner." +# reload: "Reload" reload_title: "Recharger tout le code?" reload_really: "Êtes-vous sûr de vouloir recharger ce niveau et retourner au début?" reload_confirm: "Tout recharger" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "français", englishDescription: "French", t tome_minion_spells: "Les sorts de vos soldats" # Only in old-style levels. tome_read_only_spells: "Sorts en lecture-seule" # Only in old-style levels. tome_other_units: "Autres unités" # Only in old-style levels. - tome_cast_button_castable: "Jeter le sort" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Sort en court" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Sort jeté" # Temporary, if tome_cast_button_ran isn't translated. tome_cast_button_run: "Exécuter" tome_cast_button_running: "En cours d'exécution" tome_cast_button_ran: "Exécuté" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "français", englishDescription: "French", t tome_select_a_thang: "Sélectionnez une unité pour" tome_available_spells: "Sorts diponibles" tome_your_skills: "Vos compétences" - hud_continue: "Continuer (appuyez sur shift ou espace)" +# tome_current_method: "Current Method" hud_continue_short: "Continuer" code_saved: "Code Sauvergardé" skip_tutorial: "Passer (esc)" keyboard_shortcuts: "Raccourcis Clavier" loading_ready: "Pret!" loading_start: "Démarrer le niveau" +# problem_alert_title: "Fix Your Code" time_current: "Maintenant:" time_total: "Max:" time_goto: "Allez a:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "français", englishDescription: "French", t game_menu: inventory_tab: "Inventaire" - choose_hero_tab: "Redémmarrer le niveau" save_load_tab: "Sauvegarder/Charger" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: choose_hero: "Choisissez votre Héro" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "français", englishDescription: "French", t io_blurb: "Simple mais obscure." # status: "Status" weapons: "Arme" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" attack: "Dégât" # Can also translate as "Attack" health: "Santé" speed: "Vitesse" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t enter: "Entrer" escape: "Echap" # shift: "Shift" - cast_spell: "Jeter le sort actuel." +# run_code: "Run current code." run_real_time: "Exécuter en temps réel." continue_script: "Continuer le script passé courant." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "français", englishDescription: "French", t diplomat_launch_url: "lancement en octobre" diplomat_introduction_suf: "c'est qu'il y a un intérêt considérable pour CodeCombat dans d'autres pays, particulièrement au Brésil! Nous créons une équipe de traducteurs pour changer une liste de mots en une autre pour que CodeCombat soit le plus accessible possible à travers le monde. Si vous souhaitez avoir un aperçu des prochains contenus et avoir les niveaux dans votre langue le plus tôt possible, alors cette classe est faite pour vous." diplomat_attribute_1: "Des facilités en anglais et dans la langue que vous souhaitez traduire. Pour transmettre des idées complexes, il est important d'avoir une solide compréhension des deux!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "Trouvez le fichier de langue souhaité" diplomat_github_url: "sur GitHub" diplomat_join_suf_github: ", modifiez en ligne, et soumettez des requètes. Cochez aussi cette case ci-dessous pour vous tenir à jour sur les nouveaux développements d'internationalisation!" diff --git a/app/locale/gl.coffee b/app/locale/gl.coffee index bf90564ea..925277257 100644 --- a/app/locale/gl.coffee +++ b/app/locale/gl.coffee @@ -25,138 +25,145 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr home: "Inicio" contribute: "Colaborar" legal: "Legalidade" - about: "Sobre nó" + about: "Sobre nós" contact: "Contacta" twitter_follow: "Síguenos en Twitter" teachers: "Profesores" modal: - close: "Cerrar" + close: "Pechar" okay: "Ok" not_found: - page_not_found: "Páxina no atopada" + page_not_found: "Páxina non atopada" diplomat_suggestion: title: "Axuda a traducir CodeCombat!" # This shows up when a player switches to a non-English language using the language selector. sub_heading: "Necesitamos das túas habilidades lingüisticas." pitch_body: "Nos desenvolvemos CodeCombat en inglés, pero xa temos xogadores de todo o mundo. Moitos deles queren xogar en galego porque non falan inglés, así que si falas ambos idiomas, inscríbete como Diplomático e axuda a traducir a web e todos os niveis de CodeCombat ao galego." - missing_translations: "Mientras terminamos la traducción al español, verás en inglés las partes que no estén todavía disponibles." - learn_more: "Aprende más sobre ser un Diplomático" + missing_translations: "Mentras terminamos a traducción ao galego, verás en castelán ou en inglés as partes que non estén ainda dispoñibles." + learn_more: "Aprende máis sobre o que é ser un Diplomático" subscribe_as_diplomat: "Suscríbete como Diplomático" play: - play_as: "Jugar como" # Ladder page - spectate: "Observar" # Ladder page - players: "jugadores" # Hover over a level on /play - hours_played: "horas jugadas" # Hover over a level on /play - items: "Objetos" # Tooltip on item shop button from /play + play_as: "Xogar como" # Ladder page + spectate: "Mirar" # Ladder page + players: "xogadores" # Hover over a level on /play + hours_played: "horas xogadas" # Hover over a level on /play + items: "Obxectos" # Tooltip on item shop button from /play +# unlock: "Unlock" # For purchasing items and heroes +# confirm: "Confirm" +# owned: "Owned" # For items you own +# locked: "Locked" +# available: "Available" +# skills_granted: "Skills Granted" # Property documentation details heroes: "Heroes" # Tooltip on hero shop button from /play achievements: "Logros" # Tooltip on achievement list button from /play - account: "Cuenta" # Tooltip on account button from /play - settings: "Ajustes" # Tooltip on settings button from /play - next: "Siguiente Heroe" # Go from choose hero to choose inventory before playing a level + account: "Conta" # Tooltip on account button from /play + settings: "Axustes" # Tooltip on settings button from /play + next: "Seguente Heroe" # Go from choose hero to choose inventory before playing a level change_hero: "Seleccionar Heroe" # Go back from choose inventory to choose hero - choose_inventory: "Equipar Objetos" + choose_inventory: "Equipar Obxectos" older_campaigns: "Campañas Anteriores" - anonymous: "Jugador Anonimo" - level_difficulty: "Dificultad: " + anonymous: "Xogador Anónimo" + level_difficulty: "Dificultade: " campaign_beginner: "Campaña de Principiante" - choose_your_level: "Elige tu nivel" # The rest of this section is the old play view at /play-old and isn't very important. - adventurer_prefix: "Puedes elegir cualquier pantalla o charlar en " - adventurer_forum: "el foro del aventurero " - adventurer_suffix: "sobre ello." - campaign_old_beginner: "Antigua Campaña de Principiante" - campaign_old_beginner_description: "... en la que aprenderás la magia de la programación." - campaign_dev: "Niveles aleatorios más dificiles" - campaign_dev_description: "... en los que aprenderás sobre la interfaz mientras haces algo más difícil." - campaign_multiplayer: "Arenas Multijugador" - campaign_multiplayer_description: "... en las que tu código se enfrentará al de otros jugadores." - campaign_player_created: "Creaciones de los Jugadores" - campaign_player_created_description: "... en las que luchas contra la creatividad de tus compañeros Magos Artesanos." - campaign_classic_algorithms: "Algoritmos Clasicos" - campaign_classic_algorithms_description: "... donde aprendes los algoritmos mas populares de la informatica." + choose_your_level: "Elixe o teu nivel" # The rest of this section is the old play view at /play-old and isn't very important. + adventurer_prefix: "Podes elixir calqueira pantalla ou falar no " + adventurer_forum: " foro do aventureiro " + adventurer_suffix: "sobre elo." + campaign_old_beginner: "Antiga Campaña de Principiante" + campaign_old_beginner_description: "... na que aprenderás a maxia da programación." + campaign_dev: "Niveis aleatorios máis dificiles" + campaign_dev_description: "... nos que aprenderás sobre a interface mentres fas algo máis difícil." + campaign_multiplayer: "Areas Multixogador" + campaign_multiplayer_description: "... nas que o teu código se enfrentará ao de outros xogadores." + campaign_player_created: "Creacións dos Xogadores" + campaign_player_created_description: "... nas que loitas contra a creatividade dos teus compañeiros Magos Artesáns." + campaign_classic_algorithms: "Algoritmos Clásicos" + campaign_classic_algorithms_description: "... donde aprendes os algoritmos máis populares da informatica." # campaign_forest: "Forest Campaign" # campaign_dungeon: "Dungeon Campaign" login: - sign_up: "Crear una cuenta" + sign_up: "Crear unha conta" log_in: "Entrar" logging_in: "Entrando..." - log_out: "Salir" - recover: "recuperar cuenta" + log_out: "Sair" + recover: "Recuperar conta" signup: - create_account_title: "Crea una cuenta para guardar tu progreso" - description: "¡Es gratis!. ¡Solo necesitamos un par de cosas y listo para comenzar!" + create_account_title: "Crea unha conta para gardar o teu progreso" + description: "É de balde!. Só precisamos un par de cousas e xa podes comenzar!" email_announcements: "Recibir noticias por correo electrónico" - coppa: "Soy mayor de 13 o de fuera de los Estados Unidos" - coppa_why: "(¿Por qué?)" - creating: "Creando cuenta..." - sign_up: "Registrarse" - log_in: "Iniciar sesión con contraseña" - social_signup: "O, puedes acceder a través de tu cuenta de Facebook o G+:" - required: "Tienes que estar reginstrado antes de poder seguir por aquí." + coppa: "Son maior de 13 anos ou de fora dos Estados Unidos" + coppa_why: "(Por que?)" + creating: "Creando conta..." + sign_up: "Rexistrarse" + log_in: "Iniciar sesión con contrasinal" + social_signup: "Ou, podes acceder a través da túa conta de Facebook ou G+:" + required: "Tes que estar rexistrado antes de poder seguir por aquí." recover: - recover_account_title: "Recuperar Cuenta" - send_password: "Enviar recuperación de contraseña" - recovery_sent: "Email de recuperación de contraseña enviado." + recover_account_title: "Recuperar Conta" + send_password: "Enviar recuperación de contrasinal" + recovery_sent: "Email de recuperación de contrasinal enviado." items: +# primary: "Primary" +# secondary: "Secondary" armor: "Armadura" - hands: "Manos" accessories: "Accesorios" - minions: "Peones" misc: "Miscelanea" +# books: "Books" common: loading: "Cargando..." - saving: "Guardando..." + saving: "Gardando..." sending: "Enviando..." send: "Enviar" cancel: "Cancelar" - save: "Guardar" + save: "Gardar" publish: "Publicar" create: "Crear" manual: "Manual" fork: "Bifurcar" - play: "Jugar" # When used as an action verb, like "Play next level" + play: "Xogar" # When used as an action verb, like "Play next level" retry: "Reintentar" watch: "Mirar" unwatch: "Pasar" submit_patch: "Mandar Parche" general: - and: "y" - name: "Nombre" - date: "Fecha" - body: "Cuerpo" + and: "e" + name: "Nome" + date: "Data" + body: "Corpo" version: "Versión" - commit_msg: "Mensaje de Asignación o Commit" + commit_msg: "Mensaxe de Asignación ou Commit" version_history: "Historial de versión" - version_history_for: "Historial de las versiones de: " + version_history_for: "Historial das versións de: " result: "Resultado" results: "Resultados" description: "Descripción" - or: "o" + or: "ou" subject: "Asunto" email: "Correo electrónico" password: "Password" - message: "Mensaje" + message: "Mensaxe" code: "Código" ladder: "Clasificación" - when: "Cuando" - opponent: "Oponente" + when: "Cando" + opponent: "Opoñente" rank: "Rango" score: "Puntuación" win: "Victoria" loss: "Derrota" tie: "Empate" - easy: "Fácil" + easy: "Doado" medium: "Media" hard: "Difícil" - player: "Jugador" + player: "Xogador" units: second: "segundo" @@ -167,269 +174,281 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr hours: "horas" day: "día" days: "días" - week: "semana" + week: "semán" weeks: "semanas" month: "mes" months: "meses" - year: "año" - years: "años" + year: "ano" + years: "anos" play_level: - done: "Hecho" - home: "Inicio" + done: "Feito" + home: "Inicio" # Not used any more, will be removed soon. +# level: "Level" # Like "Level: Dungeons of Kithgard" skip: "Saltar" - game_menu: "Menu del Juego" + game_menu: "Menú do Xogo" guide: "Guía" restart: "Reiniciar" - goals: "Objetivos" - goal: "Objetivo Principal" - success: "Exito!" + goals: "Obxectivos" + goal: "Obxectivo Principal" +# running: "Running..." + success: "Éxito!" incomplete: "Incompleto" - timed_out: "Te has quedado sin tiempo" + timed_out: "Quedalles sin tiempo" failing: "Fallando" - action_timeline: "Cronología de Acción" - click_to_select: "Click en una unidad para seleccionarla" - reload_title: "¿Recargar todo el código?" - reload_really: "¿Estas seguro que quieres reiniciar el nivel?" - reload_confirm: "Recargarlo todo" + action_timeline: "Cronoloxía de Acción" + click_to_select: "Preme nunha unidade para seleccionala" +# reload: "Reload" + reload_title: "Recargar todo o código?" + reload_really: "Estás seguro que queres reiniciar o nivel?" + reload_confirm: "Recargalo todo" victory_title_prefix: "¡" victory_title_suffix: " Completado!" - victory_sign_up: "Regístrate para recibir actualizaciones." - victory_sign_up_poke: "¿Quieres recibir las últimas noticias en tu correo electrónico? ¡Crea una cuente gratuita y te mantendremos informado!" + victory_sign_up: "Rexístrate para recibir actualizacións." + victory_sign_up_poke: "Queres recibir as últimas noticias no teu correo electrónico? Crea unha conta gratuita e manteremoste informado!" victory_rate_the_level: "Puntúa este nivel: " # Only in old-style levels. - victory_return_to_ladder: "Volver a Clasificación" + victory_return_to_ladder: "Volver á Clasificación" victory_play_continue: "Continuar" - victory_play_skip: "Saltar animacion" - victory_play_next_level: "Jugar el siguiente nivel" - victory_play_more_practice: "Mas Practica" - victory_play_too_easy: "Demasiado facil" - victory_play_just_right: "Justo" + victory_play_skip: "Saltar animación" + victory_play_next_level: "Xogar o seguinte nivel" + victory_play_more_practice: "Máis Práctica" + victory_play_too_easy: "Demasiado doado" + victory_play_just_right: "Xusto" victory_play_too_hard: "Demasiado dificil" - victory_saving_progress: "Salvando Progreso" - victory_go_home: "Ir a Inicio" # Only in old-style levels. - victory_review: "¡Cuéntanos más!" # Only in old-style levels. - victory_hour_of_code_done: "¿Ya terminaste?" - victory_hour_of_code_done_yes: "Si, ¡He terminado con mi hora de código!" + victory_saving_progress: "Gardando Progreso" + victory_go_home: "Ir ao Inicio" # Only in old-style levels. + victory_review: "Contanos máis!" # Only in old-style levels. + victory_hour_of_code_done: "Xa remataches?" + victory_hour_of_code_done_yes: "Si, rematei coa miña hora de código!" guide_title: "Guía" - tome_minion_spells: "Los hechizos de tus súbditos" # Only in old-style levels. - tome_read_only_spells: "Hechizos de solo lectura" # Only in old-style levels. - tome_other_units: "Otras unidades" # Only in old-style levels. - tome_cast_button_castable: "Invocable" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Invocando" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Invocar" # Temporary, if tome_cast_button_ran isn't translated. - tome_cast_button_run: "Correr" - tome_cast_button_running: "Corriendo" - tome_cast_button_ran: "Corrido" + tome_minion_spells: "Os feitizos dos de teus súbditos" # Only in old-style levels. + tome_read_only_spells: "Feitizos de so lectura" # Only in old-style levels. + tome_other_units: "Outras unidades" # Only in old-style levels. + tome_cast_button_run: "Executar" + tome_cast_button_running: "Executando" + tome_cast_button_ran: "Executado" tome_submit_button: "Mandar" - tome_reload_method: "Recargcar código original para este método" # Title text for individual method reload button. + tome_reload_method: "Recargcar código orixinal para este método" # Title text for individual method reload button. tome_select_method: "Seleccionar método" - tome_see_all_methods: "Métodos que pueden ser editados" # Title text for method list selector (shown when there are multiple programmable methdos). - tome_select_a_thang: "Selecciona a alguien para " - tome_available_spells: "Hechizos disponibles" - tome_your_skills: "Tus Habilidades" - hud_continue: "Continuar (pulsa Shift+Space)" + tome_see_all_methods: "Métodos que poden ser editados" # Title text for method list selector (shown when there are multiple programmable methdos). + tome_select_a_thang: "Selecciona a alguén para " + tome_available_spells: "Feitizos dispoñibles" + tome_your_skills: "As Túas Habilidades" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" - code_saved: "Codigo Salvado" + code_saved: "Codigo Gardado" skip_tutorial: "Saltar (esc)" - keyboard_shortcuts: "Atajos de teclado" - loading_ready: "¡Listo!" + keyboard_shortcuts: "Atallos de teclado" + loading_ready: "Listo!" loading_start: "Iniciar Nivel" - time_current: "Ahora:" +# problem_alert_title: "Fix Your Code" + time_current: "Agora:" time_total: "Máx:" time_goto: "Ir a:" - infinite_loop_try_again: "Inténtalo de nuevo" + infinite_loop_try_again: "Tentao de novo" infinite_loop_reset_level: "Reiniciar nivel" - infinite_loop_comment_out: "Comenta mi código" - tip_toggle_play: "Alterna entre jugar/pausa con Ctrl+P." - tip_scrub_shortcut: "Ctrl+[ y Ctrl+] rebobina y avanza hacia adelante." - tip_guide_exists: "Haz clic en la guía arriba de la página para más información útil." - tip_open_source: "¡CodeCombat es 100% open source!" - tip_beta_launch: "CodeCombat lanzó su beta en Octubre de 2013." - tip_think_solution: "Piensa en la solución, no en el problema." - tip_theory_practice: "En teoría, no hay diferencia entre la teoría y la práctica. Pero en la práctica, la hay. - Yogi Berra" - tip_error_free: "Hay dos formas de escribir programas sin errores; solo la tercera funciona. - Alan Perlis" - tip_debugging_program: "Si depurar es el proceso de eliminar bugs, entonces programar debe ser el proceso de crearlos. - Edsger W. Dijkstra" - tip_forums: "¡Dirígete a los foros y dinos lo que piensas!" - tip_baby_coders: "En el futuro, incluso los bebés serás Archimagos." - tip_morale_improves: "Se seguirá cargando hasta que la moral mejore." - tip_all_species: "Creemos en las mismas oportunidades para aprender a programar para todas las especies." - tip_reticulating: "Reticulating spines." - tip_harry: "Ey un mago, " - tip_great_responsibility: "Grandes habilidades de codificación programación conllevan una gran responsabilidad a la hora de depurar." - tip_munchkin: "Si no te comes la verdura, un munchkin vendrá a por ti mientras duermes." - tip_binary: "Hay 10 tipos de personas en el mundo: las que saben binario y las que no." - tip_commitment_yoda: "Un programador debe tener el más serio compromiso, la mente más crítica. ~ Yoda" - tip_no_try: "Hazlo o no lo hagas, pero no lo intentes. - Yoda" - tip_patience: "Paciencia tener debes, joven Padawan. - Yoda" - tip_documented_bug: "Un bug documentado no es un bug, es una característica más." - tip_impossible: "Siempre parece imposible, hasta que se hace. - Nelson Mandela" - tip_talk_is_cheap: "Hablar es fácil. Enséñame el código. - Linus Torvalds" - tip_first_language: "La cosa más desastrosa que puedes aprender es tu primer lenguaje de programación. - Alan Kay" - tip_hardware_problem: "P: Cuantos programadores hacen falta para cambiar una bombilla? R: Ninguno, es un problema de hardware." + infinite_loop_comment_out: "Comenta o meu código" + tip_toggle_play: "Alterna entre xogar/pausa con Ctrl+P." + tip_scrub_shortcut: "Ctrl+[ y Ctrl+] rebobina e avanza cara adiante." + tip_guide_exists: "Preme na guía arriba da páxina para máis información útil." + tip_open_source: "CodeCombat é 100% código aberto!" + tip_beta_launch: "CodeCombat lanzou a súa beta en Outubro de 2014." + tip_think_solution: "Pensa na solución, non no problema." + tip_theory_practice: "En teoría, non hai diferenza entre a teoría e a práctica. Pero na práctica, si que a hai. - Yogi Berra" + tip_error_free: "Hai dúas formas de escribir programas sin erros; só a terceira funciona. - Alan Perlis" + tip_debugging_program: "Si depurar é o proceso de eliminar erros, entón programar debe ser o proceso de crearlos. - Edsger W. Dijkstra" + tip_forums: "Diríxete aos foros e dinos o que pensas!" + tip_baby_coders: "No futuro, incluso os bebés serán Archimagos." + tip_morale_improves: "Seguirase cargando ata que a moral mellore." + tip_all_species: "Cremos nas mesmas oportunidades para aprender a programar para todas as especies." + tip_reticulating: "Recompoñendo o espiñazo." + tip_harry: "Ei un mago, " + tip_great_responsibility: "Grandes habilidades de codificación programación conlevan unha gran responsabilidade á hora de depurar." + tip_munchkin: "Si non comes a verdura, un munchkin virá a por ti mentras dormes." + tip_binary: "Hai 10 tipos de personas no mundo: as que saben binario e as que non." + tip_commitment_yoda: "Un programador debe ter o máis serio compromiso, a mente máis crítica. ~ Ioda" + tip_no_try: "Faino ou non o fagas, pero non o tentes. - Ioda" + tip_patience: "Paciencia ter debes, xoven Padawan. - Ioda" + tip_documented_bug: "Un erro documentado non é un erro, é unha característica máis." + tip_impossible: "Sempre parece imposible, ata que se fai. - Nelson Mandela" + tip_talk_is_cheap: "Falar é doado. Ensiname o código. - Linus Torvalds" + tip_first_language: "A cousa máis desastrosa que podes aprender é a túa primeira linguaxe de programación. - Alan Kay" + tip_hardware_problem: "P: Cantos programadores fan falla para cambiar unha bombilla? R: Ningún, é un problema de hardware." # tip_hofstadters_law: "Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law." - tip_premature_optimization: "La optimizacion prematura es la raiz de todo mal. - Donald Knuth" - tip_brute_force: "Cuando haya dudas, usa la fuerza bruta. - Ken Thompson" - customize_wizard: "Personalizar Mago" + tip_premature_optimization: "A optimizacion prematura é a raíz de todo mal. - Donald Knuth" + tip_brute_force: "Cando hai dúbidas, usa a forza bruta. - Ken Thompson" + customize_wizard: "Persoalizar Mago" game_menu: inventory_tab: "Inventario" - choose_hero_tab: "Reiniciar Nivel" - save_load_tab: "Salvar/Cargar" - options_tab: "Opciones" + save_load_tab: "Gardar/Cargar" + options_tab: "Opcións" guide_tab: "Guia" - multiplayer_tab: "Multijugador" - auth_tab: "Crear cuenta" - inventory_caption: "Equipa a tu heroe" - choose_hero_caption: "Elige la lengua del heroe" - save_load_caption: "... y ver la historia" - options_caption: "Ajustes de configuracion" - guide_caption: "Documentos y pistas" - multiplayer_caption: "Juega con amigos!" - auth_caption: "Salvar tu progreso." + multiplayer_tab: "Multixogador" + auth_tab: "Crear conta" + inventory_caption: "Equipa ao teu heroe" + choose_hero_caption: "Elixe a lingua do heroe" + save_load_caption: "... e mirar a historia" + options_caption: "Axustes de configuracion" + guide_caption: "Documentos e pistas" + multiplayer_caption: "Xoga con amigos!" + auth_caption: "Gardar o teu progreso." inventory: - choose_inventory: "Equipar Objetos" + choose_inventory: "Equipar Obxectos" +# equipped_item: "Equipped" +# available_item: "Available" +# should_equip: "(double-click to equip)" +# equipped: "(equipped)" +# locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: - choose_hero: "Selecciona tu Heroe" - programming_language: "Lenguaje de Programación" - programming_language_description: "¿Qué lenguaje de programación deseas usar?" + choose_hero: "Selecciona o teu Heroe" + programming_language: "Linguaxe de Programación" + programming_language_description: "Que linguaxe de programación desexas usar?" python_blurb: "Simple pero poderoso." - javascript_blurb: "El lenguaje de la web." - coffeescript_blurb: "Sintaxsis de JavaScript mejorada." + javascript_blurb: "A linguaxe da web." + coffeescript_blurb: "Sintase de JavaScript mellorada." clojure_blurb: "Un Lisp moderno." - lua_blurb: "Lenguaje Script para Juegos." + lua_blurb: "Linguaxe Script para Xogos." io_blurb: "Simple pero oscuro." status: "Estado" weapons: "Armas" - attack: "Daño" # Can also translate as "Attack" - health: "Salud" - speed: "Velocidad" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" + attack: "Dano" # Can also translate as "Attack" + health: "Saúde" + speed: "Velocidade" +# regeneration: "Regeneration" +# range: "Range" # As in "attack or visual range" +# blocks: "Blocks" # As in "this shield blocks this much damage" skills: "Habilidades" save_load: - granularity_saved_games: "Salvado" + granularity_saved_games: "Gardado" granularity_change_history: "Historia" options: - general_options: "Opciones Generales" # Check out the Options tab in the Game Menu while playing a level - volume_label: "Volumen" + general_options: "Opcións Xerais" # Check out the Options tab in the Game Menu while playing a level + volume_label: "Volume" music_label: "Musica" music_description: "Musica de fondo on/off." autorun_label: "Autorun" - autorun_description: "Control automatico de codigo en ejecucion." + autorun_description: "Control automatico de código en execución." editor_config: "Conf. editor" - editor_config_title: "Configuración del editor" - editor_config_level_language_label: "Lenguaje para este nivel" - editor_config_level_language_description: "Escoge lenguaje de programacion para este nivel en concreto." - editor_config_default_language_label: "Lenguaje de programación por defecto" - editor_config_default_language_description: "Define el lenguaje de programacion en el que quieres programar cuando empieces un nuevo nivel." - editor_config_keybindings_label: "Atajos de teclado" + editor_config_title: "Configuración do editor" + editor_config_level_language_label: "Linguaxe para este nivel" + editor_config_level_language_description: "Escolle a linguaxe de programacion para este nivel en concreto." + editor_config_default_language_label: "Linguaxe de programación por defecto" + editor_config_default_language_description: "Define a linguaxe de programación na que queres programar cando empiezes un novo nivel." + editor_config_keybindings_label: "Atallos de teclado" editor_config_keybindings_default: "Actual (Ace)" - editor_config_keybindings_description: "Permite el uso de atajos de teclado de algunos editores conocidos." + editor_config_keybindings_description: "Permite o uso de atallos de teclado de algúns editores coñecidos." # editor_config_livecompletion_label: "Live Autocompletion" - editor_config_livecompletion_description: "Muestra sugerencias de autocompletado mientras se escribe." - editor_config_invisibles_label: "Mostrar elementos invisibles" - editor_config_invisibles_description: "Se pueden ver elementos invisibles como espacios o tabulaciones." - editor_config_indentguides_label: "Mostrar guías de sangría" - editor_config_indentguides_description: "Se puede ver las líneas verticales que definen el sangrado de una forma más claraDisplays vertical lines to see indentation better." - editor_config_behaviors_label: "Comportamientos inteligentes" - editor_config_behaviors_description: "Se completan automáticamente corchetes, paréntesis y comillas." + editor_config_livecompletion_description: "Amosa suxestións de autocompletado mentres se escribe." + editor_config_invisibles_label: "Amosar elementos invisibles" + editor_config_invisibles_description: "Pódense ver elementos invisibles como espacios ou tabulacións." + editor_config_indentguides_label: "Amostrar guías de sangría" + editor_config_indentguides_description: "Pódense ver as liñas verticais que definen o sangrado dunha forma máis clara." + editor_config_behaviors_label: "Comportamentos intelixentes" + editor_config_behaviors_description: "Complétanse automáticamente corchetes, paréntesis e comiñas." about: - why_codecombat: "¿Por qué CodeCombat?" - why_paragraph_1: "¿Necesitas aprender a programar? No necesitas lecciones. Necesitas escribir muchísimo código y pasarlo bien haciéndolo." - why_paragraph_2_prefix: "De eso va la programación. Tiene que ser divertido. No divertido como:" - why_paragraph_2_italic: "¡bien una insignia!," - why_paragraph_2_center: "sino más bien como:" - why_paragraph_2_italic_caps: "¡NO MAMA, TENGO QUE TERMINAR EL NIVEL!" - why_paragraph_2_suffix: "Por eso Codecombat es multijugador, no un curso con lecciones \"gamificadas\" . No pararemos hasta que tú no puedas parar... pero esta vez, eso será buena señal." - why_paragraph_3: "Si vas a engancharte a algún juego, engánchate a este y conviértete en uno de los magos de la era tecnológica." + why_codecombat: "Por que CodeCombat?" + why_paragraph_1: "Precisas aprender a programar? Non che fan falla leccións. O que precisas é escribir moitísimo código e pasalo ben facéndoo." + why_paragraph_2_prefix: "De iso vai a programación. Ten que ser divertido. Non divertido como:" + why_paragraph_2_italic: "ben unha medalla!," + why_paragraph_2_center: "sinón máis ben como:" + why_paragraph_2_italic_caps: "NON MAMÁ, TEñO QUE REMATAR O NIVEL!" + why_paragraph_2_suffix: "Por eso Codecombat é multixogador, non un curso con leccións \"con dinámicas de xogo\" . Non pararemos ata que ti non poidas parar... pero esta vez, eso será bo sinal." + why_paragraph_3: "Si vas a engancharte a algún xogo, engánchate a este e convírtete nun dos magos da era tecnolóxica." press_title: "Blogueros/Prensa" - press_paragraph_1_prefix: "Quieres escribir sobre nosotros? Bajate y usa todos los recursos incluidos en nuestro" + press_paragraph_1_prefix: "Queres escribir sobre nós? Baixate e usa todos os recursos incluidos no noso" press_paragraph_1_link: "paquete de prensa" - press_paragraph_1_suffix: ". Todos los logos y las imagenes pueden ser usados sin necesidad de contactarnos directamente." + press_paragraph_1_suffix: ". Todos os logos e as imaxes poden ser usadas sin necesidade de contactarnos directamente." team: "Equipo" george_title: "CEO" - george_blurb: "Hombre de Negocios" + george_blurb: "Home de Negocios" scott_title: "Programador" - scott_blurb: "Razonable" + scott_blurb: "Razoable" nick_title: "Programador" - nick_blurb: "Guru Motivacional" + nick_blurb: "Gurú Motivacional" michael_title: "Programador" michael_blurb: "Administrador de Sistemas" matt_title: "Programador" matt_blurb: "Ciclista" versions: - save_version_title: "Guardar nueva versión" - new_major_version: "Nueva versión principal" - cla_prefix: "Para guardar los cambios, primero debes aceptar nuestro" + save_version_title: "Gardar nova versión" + new_major_version: "Nova versión principal" + cla_prefix: "Para gardar os cambios, primeiro debes aceptar o noso" cla_url: "CLA" cla_suffix: "." - cla_agree: "De acuerdo" + cla_agree: "De acordo" contact: contact_us: "Contacta con CodeCombat" - welcome: "¡Nos gusta saber de ti! Usa este formulario para enviarnos un correo. " - contribute_prefix: "Si estás interesado en colaborar, ¡échale un vistazo a nuestra " - contribute_page: "página de contribuciones" + welcome: "Gústanos saber de ti! Usa este formulario para enviarnos un correo. " + contribute_prefix: "Si estás interesado en colaborar, botalle un ollo á nosa " + contribute_page: "páxina de contribucións" contribute_suffix: "!" forum_prefix: "Para asuntos públicos, por favor usa " - forum_page: "nuestro foro" - forum_suffix: " en su lugar." - send: "Envía tu comentario" + forum_page: "o noso foro" + forum_suffix: " no seu lugar." + send: "Envía o teu comentario" contact_candidate: "Contactar Candidato" # Deprecated - recruitment_reminder: "Usa este formulario para contactar con los candidatos que quieras entrevistar. Recuerda que CodeCombat cobrará el 18% del salario durante el primer año. La cuota es por la contratación del empleado y es reembolsable durante 90 días si el empleado no permanece contratado. A tiempo parcial, a distancia y los empleados de contrato son gratis, como lo son los becarios." # Deprecated + recruitment_reminder: "Usa este formulario para contactar cos candidatos que queiras entrevistar. Recorda que CodeCombat cobrará o 18% do salario durante o primeiro ano. A cuota é pola contratación do empregado e é reembolsable durante 90 días si o empregado non permanece contratado. A tempo parcial, a distancia e os empregados de contrato son gratis, como o son os bolseiros." # Deprecated account_settings: - title: "Ajustes de la cuenta" - not_logged_in: "Inicia sesión o crea una cuenta para cambiar tus ajustes." - autosave: "Los cambios se guardan automáticamente" - me_tab: "Yo" + title: "Axustes da conta" + not_logged_in: "Inicia sesión ou crea unha conta para cambiar os teus axustes." + autosave: "Os cambios gardaranse automáticamente" + me_tab: "Eu" picture_tab: "Foto" - upload_picture: "Sube una imagen" - password_tab: "Contraseña" + upload_picture: "Sube unha imaxe" + password_tab: "Contrasinal" emails_tab: "Correos electrónicos" admin: "Admin" - new_password: "Nueva contraseña" + new_password: "Novo contrasinal" new_password_verify: "Verificar" - email_subscriptions: "Suscripciones de correo electrónico" - email_subscriptions_none: "Sin suscripciones de correo electrónico." - email_announcements: "Noticias" - email_announcements_description: "Recibe correos electrónicos con las últimas noticias y desarrollos de CodeCombat." - email_notifications: "Notificationes" - email_notifications_summary: "Controles para personalizar las notificaciones por email automaticas, relacionadas con tu actividad en CodeCombat." - email_any_notes: "Cualquier Notificacion" - email_any_notes_description: "Deshabilitar todas las notificaciones por mail." - email_news: "Noticias" - email_recruit_notes: "Oportunidades de Trabajo" - email_recruit_notes_description: "Si tu juegas realmente bien, puede que contactemos contigo para que consigas un trabajo (mejor)." + email_subscriptions: "Suscripcións de correo electrónico" + email_subscriptions_none: "Sin suscripcións de correo electrónico." + email_announcements: "Novas" + email_announcements_description: "Recibe correos electrónicos coas últimas novas e desenvolvementos de CodeCombat." + email_notifications: "Notificacións" + email_notifications_summary: "Controles para persoalizar as notificacións antomáticas por correo electrónico, relacionadas coa túa actividade en CodeCombat." + email_any_notes: "Calqueira Notificacion" + email_any_notes_description: "Deshabilitar todas as notificacións por correo electrónico." + email_news: "Novas" + email_recruit_notes: "Oportunidades de Traballo" + email_recruit_notes_description: "Si xogas realmente ben, pode que contactemos contigo para que consigas un traballo (mellor)." contributor_emails: "Correos para colaboradores" - contribute_prefix: "¡Buscamos gente que se una a nuestro comunidad! Comprueba la " - contribute_page: "página de colaboraciones" - contribute_suffix: " para saber más." + contribute_prefix: "Buscamos xente que se una á nosa comunidade! Comprobaa " + contribute_page: "páxina de colaboraciones" + contribute_suffix: " para saber máis." email_toggle: "Activar todo" - error_saving: "Error al guardar" - saved: "Cambios guardados" - password_mismatch: "La contraseña no coincide" - password_repeat: "Repite tu contraseña." - job_profile: "Perfil de trabajo" # Rest of this section (the job profile stuff and wizard stuff) is deprecated - job_profile_approved: "Tu perfil de trabajo ha sido aprobado por CodeCombat. Los empleadores podrán verlo hasta que lo marques como inactivo o no haya sido cambiado durante cuatro semanas." - job_profile_explanation: "¡Hola! Rellena esto y estaremos en contacto para hablar sobre encontrarte un trabajo como desarrollador de software." - sample_profile: "Mira un perfil de ejemplo" - view_profile: "Mira tu perfil" + error_saving: "Error ao gardar" + saved: "Cambios gardados" + password_mismatch: "O contrasinal no coincide" + password_repeat: "Repite o teu contrasinal." + job_profile: "Perfil de traballo" # Rest of this section (the job profile stuff and wizard stuff) is deprecated + job_profile_approved: "O teu perfil de traballo foi aprobado por CodeCombat. Os empleadores poderán velo ata que o marques como inactivo ou non sexa cambiado durante catro semanas." + job_profile_explanation: "Oola! Enche isto e estaremos en contacto para falar sobre atoparche un traballo como desenvolvedor de software." + sample_profile: "Mira un perfil de exemplo" + view_profile: "Mira o teu perfil" wizard_tab: "Mago" - wizard_color: "Color de la ropa del Mago" + wizard_color: "Cor da roupa do Mago" keyboard_shortcuts: - keyboard_shortcuts: "Atajos de teclado" - space: "Barra espaciadora (Espacio)" + keyboard_shortcuts: "Atallos de teclado" + space: "Barra espaciadora (Espazo)" enter: "Enter" escape: "Escape" shift: "Shift" - cast_spell: "Invocar el hechizo actual." - run_real_time: "correr en tiempo real." +# run_code: "Run current code." + run_real_time: "executar en tempo real." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." # toggle_playback: "Toggle play/pause." @@ -439,12 +458,12 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr # toggle_debug: "Toggle debug display." # toggle_grid: "Toggle grid overlay." # toggle_pathfinding: "Toggle pathfinding overlay." - beautify: "Embellece tu código estandarizando el formato." - maximize_editor: "Maximizar/minimizar editor de codigo." - move_wizard: "Mover a tu hechicero por el nivel." + beautify: "Embelece o teu código estandarizando o formato." + maximize_editor: "Maximizar/minimizar editor de código." + move_wizard: "Mover ao teu feiticeiro polo nivel." community: - main_title: "Comunidad de CodeCombat" + main_title: "Comunidade de CodeCombat" # introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" # level_editor_prefix: "Use the CodeCombat" # level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" @@ -452,450 +471,453 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr # thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." # article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" # article_editor_suffix: "and help CodeCombat players get the most out of their playtime." - find_us: "Encuentranos en estos sitios" - social_blog: "Lee el blog de CodeCombat en Sett" - social_discource: "Unete a la discusion en nuestro foro" - social_facebook: "Dale a Me Gusta a CodeCombat en Facebook" - social_twitter: "Sigue a CodeCombat en Twitter" - social_gplus: "Unete a CodeCombat en Google+" - social_hipchat: "Habla con nosotros en el chat publico de CodeCombat HipChat room" - contribute_to_the_project: "Contribuye al proyecto" + find_us: "Encontranos nestes sitios" + social_blog: "Lee o blogue de CodeCombat en Sett" + social_discource: "Únete á discusion no noso foro" + social_facebook: "Dalle a Gústame a CodeCombat en Facebook" + social_twitter: "Segue a CodeCombat en Twitter" + social_gplus: "Únete a CodeCombat en Google+" + social_hipchat: "Fala con nós no chat público de CodeCombat HipChat room" + contribute_to_the_project: "Contribue ao proxecto" classes: archmage_title: "Archimago" archmage_title_description: "(Programador)" - artisan_title: "Artesano" - artisan_title_description: "(Diseñador de Niveles)" - adventurer_title: "Aventurero" - adventurer_title_description: "(Tester de Niveles)" + artisan_title: "Artesán" + artisan_title_description: "(Deseñador de Niveis)" + adventurer_title: "Aventureiro" + adventurer_title_description: "(Tester de Niveis)" scribe_title: "Escriba" - scribe_title_description: "(Editor de Artículos)" + scribe_title_description: "(Editor de Artigos)" diplomat_title: "Diplomático" diplomat_title_description: "(Traductor)" - ambassador_title: "Embajador" + ambassador_title: "Embaixador" ambassador_title_description: "(Soporte)" editor: main_title: "Editores de CodeCombat" - article_title: "Editor de Artículos" - thang_title: "Editor de Objetos" - level_title: "Editor de Niveles" + article_title: "Editor de Artigos" + thang_title: "Editor de Obxectos" + level_title: "Editor de Niveis" achievement_title: "Editor de Logros" - back: "Volver" + back: "Voltar" revert: "Revertir" revert_models: "Revertir Modelos" - pick_a_terrain: "Escoge un Terreno" - small: "Pequeño" - grassy: "Cubierto de hierba" - fork_title: "Bifurcar nueva versión" + pick_a_terrain: "Escolle un Terreno" + small: "Pequeno" + grassy: "Cuberto de herba" + fork_title: "Bifurcar nova versión" fork_creating: "Creando bifurcación..." - generate_terrain: "Generar Terreno" - more: "Más" + generate_terrain: "Xerar Terreo" + more: "Máis" wiki: "Wiki" live_chat: "Chat en directo" - level_some_options: "¿Algunas opciones?" - level_tab_thangs: "Objetos" + level_some_options: "Algunhas opcións?" + level_tab_thangs: "Obxectos" level_tab_scripts: "Scripts" - level_tab_settings: "Ajustes" - level_tab_components: "Componentes" + level_tab_settings: "Axustes" + level_tab_components: "Compoñentes" level_tab_systems: "Sistemas" - level_tab_docs: "Documentacion" - level_tab_thangs_title: "Objetos actuales" + level_tab_docs: "Documentación" + level_tab_thangs_title: "Obxectos actuais" level_tab_thangs_all: "Todo" - level_tab_thangs_conditions: "Condiciones de inicio" - level_tab_thangs_add: "Añadir Objetos" + level_tab_thangs_conditions: "Condicións de inicio" + level_tab_thangs_add: "Engadir Obxectos" delete: "Borrar" duplicate: "Duplicar" rotate: "Rotar" - level_settings_title: "Ajustes" - level_component_tab_title: "Componentes Actuales" - level_component_btn_new: "Crear Nuevo Componente" - level_systems_tab_title: "Sistemas Actuales" - level_systems_btn_new: "Crear Nuevo Sistema" - level_systems_btn_add: "Añadir Sistema" - level_components_title: "Volver a Todos los Objetos" + level_settings_title: "Axustes" + level_component_tab_title: "Compoñentes Actuais" + level_component_btn_new: "Crear Novo Compoñente" + level_systems_tab_title: "Sistemas Actuais" + level_systems_btn_new: "Crear Novo Sistema" + level_systems_btn_add: "Engadir Sistema" + level_components_title: "Voltar a todos os Obxectos" level_components_type: "Tipo" - level_component_edit_title: "Editar Componente" + level_component_edit_title: "Editar Compoñente" level_component_config_schema: "Configurar esquema" - level_component_settings: "Ajustes" + level_component_settings: "Axustes" level_system_edit_title: "Editar Sistema" - create_system_title: "Crear Nuevo Sistema" - new_component_title: "Crear Nuevo Componente" + create_system_title: "Crear Novo Sistema" + new_component_title: "Crear Novo Compoñente" new_component_field_system: "Sistema" - new_article_title: "Crear un nuevo artículo" - new_thang_title: "Crea un nuevo tipo de objeto" - new_level_title: "Crear un nuevo nivel" - new_article_title_login: "Inicia sesión para Crear un Nuevo Artíuclo" - new_thang_title_login: "Inicia sesión para Crear un Nuevo Tipo de Thang" - new_level_title_login: "Inicia sesión para Crear un Nuevo Nivel" - new_achievement_title: "Crea un nuevo Logro" - new_achievement_title_login: "Inicia sesión para Crear un Nuevo Logro" - article_search_title: "Buscar artículos aquí" - thang_search_title: "Busca tipos de objetos aquí" - level_search_title: "Buscar niveles aquí" + new_article_title: "Crear un novo artigo" + new_thang_title: "Crear un novo tipo de obxecto" + new_level_title: "Crear un novo nivel" + new_article_title_login: "Inicia sesión para Crear un Novo Artigo" + new_thang_title_login: "Inicia sesión para Crear un Novo Tipo de Thang" + new_level_title_login: "Inicia sesión para Crear un Novo Nivel" + new_achievement_title: "Crear un novo Logro" + new_achievement_title_login: "Inicia sesión para Crear un Novo Logro" + article_search_title: "Buscar artigos aquí" + thang_search_title: "Busca tipos de obxectos aquí" + level_search_title: "Buscar niveis aquí" achievement_search_title: "Buscar Logros" - read_only_warning2: "Nota: no puedes guardar nada de lo que edites aqui porque no has iniciado sesión." - no_achievements: "No se han añadido logros a este nivel." + read_only_warning2: "Nota: non podes gardar nada do que edites aquí porque non iniciaches sesión." + no_achievements: "No se engadiron logros a este nivel." # achievement_query_misc: "Key achievement off of miscellanea" # achievement_query_goals: "Key achievement off of level goals" - level_completion: "Porcentaje de Nivel Completado" + level_completion: "Porcentaxe de Nivel Completada" # pop_i18n: "Populate I18N" article: edit_btn_preview: "Vista preliminar" - edit_article_title: "Editar artículo" + edit_article_title: "Editar artigo" contribute: page_title: "Colaborar" - character_classes_title: "Clases de Personajes" - introduction_desc_intro: "Tenemos muchas esperanzas en CodeCombat." - introduction_desc_pref: "Queremos estar donde programadores de todo tipo vengan a aprender y jugar juntos, introducir a otros en el maravilloso mundo de la programación y reflejar la mejor parte de la comunidad. No podemos, ni queremos, hacerlo solos; lo que hace grandes a proyectos como GitHub, Stack Overflow y Linux es la gente que los usa y crea con ellos. A tal fin, " - introduction_desc_github_url: "CodeCombat es totalmente de código abierto" - introduction_desc_suf: ", y nuestro objetivo es ofrecer tantas maneras como sea posible para que tomes parte y hagas de este proyecto algo tan tuyo como nuestro." - introduction_desc_ending: "¡Esperamos que te unas a nuestro equipo!" + character_classes_title: "Clases de Personaxes" + introduction_desc_intro: "Temos moitas esperanzas en CodeCombat." + introduction_desc_pref: "Queremos estar donde programadores de todo tipo veñan a aprender a xogar xuntos, introducir a outros no maravilloso mundo da programación e reflexar a mellor parte da comunidade. Non podemos, nin queremos, facelo sos; o que fai grandes a proxectos como GitHub, Stack Overflow e Linux é a xente que os usa e crea con eles. A tal fin, " + introduction_desc_github_url: "CodeCombat é totalmente de código aberto" + introduction_desc_suf: ", e o noso obxectivo é ofrecer tantas maneiras como sexa posible para que tomes parte e fagas de este proxecto algo tan teu como noso." + introduction_desc_ending: "Agardamos que te unas ao noso equipo!" introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy y Matt" - alert_account_message_intro: "¡Hola!" - alert_account_message: "Para suscribirse a los mails de clase, necesitas estar logeado." - archmage_summary: "¿Interesado en trabajar en gráficos para juegos, el diseño de la interfaz de usuario, bases de datos y la organización de servidores, redes multijugador, físicas, sonido o el funcionamiento del motor del juego? ¿Quieres ayudar a construir un juego para ayudar a otras personas a aprender aquello en lo que eres bueno? Tenemos mucho que hacer y si eres un programador experimentado y quieres desarrollar para CodeCombat, esta clase es para tí. Nos encantaría recibir tu ayuda para construir el mejor juego de programación que se haya hecho." - archmage_introduction: "Una de las mejores partes de desarrollar juegos es que combinan cosas muy diferentes. Gráficos, sonido, uso de redes en tiempo real, redes sociales y por supuesto mucho de los aspectos comunes de la programación, desde gestión de bases de datos a bajo nivel y administración de servidores hasta diseño de experiencia del usuario y creación de interfaces. Hay un montón de cosas por hacer y si eres un programador experimentado con interés en conocer lo que se cuece en la trastienda de CodeCombat, esta Clase puede ser la ideal para ti. Nos encantaría recibir tu ayuda para crear el mejor juego de programación de la historia." - class_attributes: "Atributos de las Clases" - archmage_attribute_1_pref: "Conocimiento en " - archmage_attribute_1_suf: ", o deseo por aprender. La mayor parte de nuestro código está escrito en este lenguaje. Si eres un fan de Ruby o Python te sentirás como en casa. Es JavaScript pero con una sintaxis más agradable." - archmage_attribute_2: "Alguna experiencia en programación e iniciativa personal. Te orientaremos, pero no podemos pasar mucho tiempo enseñándote." + alert_account_message_intro: "Ola!" + alert_account_message: "Para suscribirse aos correos electrónicos de clase, precisar estar na túa conta." + archmage_summary: "Interesado en traballar en gráficos para xogos, o deseño da interface de usuario, bases de datos e a organización de servidores, redes multixogador, físicas, son ou o funcionamiento do motor de xogo? Queres axudar a construir un xogo para axudar a outras persoas a aprender aquelo no que eres bo? Temos moito que facer e si eres un programador experimentado e queres desenvolver para CodeCombat, esta clase é para ti. Encantaríanos recibir a túa axuda para construir o mellor xogo de programación que se teña feito." + archmage_introduction: "Unha das mellores partes de desenvolver xogos é que combinan cousas moi diferentes. Gráficos, son, uso de redes en tempo real, redes sociais e por supuesto moitos dos aspectos comúns da programación, dende xestión de bases de datos a baixo nivel e administración de servidores ata deseño de experiencia do usuario e creación de interfaces. Hai unha morea de cousas por facere si eres un programador experimentado con interés en coñecer o que se coce na trastenda de CodeCombat, esta Clase pode ser la ideal para ti. Encantaríanos recibir a túa axuda para crear o mellor xogo de programación da historia." + class_attributes: "Atributos das Clases" + archmage_attribute_1_pref: "Coñecemento en " + archmage_attribute_1_suf: ", ou desexo por aprender. A maior parte do noso código está escrito nesta linguaxe. Si eres un fan de Ruby ou Python sentiraste como na casa. É JavaScript pero cunha sintaxe máis agradable." + archmage_attribute_2: "Algunha experiencia en programación e iniciativa personal. Orientaremoste, pero non podemos pasar moito tempo ensinándote." how_to_join: "Cómo unirse" - join_desc_1: "¡Cualquiera puede ayudar! Solo echa un vistazo a nuestro " - join_desc_2: "para comenzar y marca la casilla de abajo para etiquetarte como un bravo Archimago y obtener las últimas noticias por correo electrónico. ¿Quieres charlar sobre qué hacer o como involucrarte más? " - join_desc_3: ", o encuéntranos en nuestro " - join_desc_4: "¡y partiremos desde ese punto!" + join_desc_1: "Calquera pode axudar! So bótalle un ollo ao noso " + join_desc_2: "para comenzar e marca a casilla de abaixo para etiquetarte como un bravo Archimago e obter as últimas novas por correo electrónico. Queres falar sobre que facer ou como involucrarte máis? " + join_desc_3: ", ou atópanos no noso " + join_desc_4: "e partiremos dende ese punto!" join_url_email: "Escríbenos un correo electrónico" join_url_hipchat: "sala pública en HipChat" - more_about_archmage: "Aprende más sobre convertirte en un poderoso Archimago" - archmage_subscribe_desc: "Recibe correos sobre nuevos anuncios y oportunidades de codificar." - artisan_summary_pref: "¿Quieres diseñar niveles y ampliar el arsenal de CodeCombat? ¡La gente está jugando con nuestro contenido a un ritmo más rápido de lo que podemos construir! En este momento, nuestro editor de niveles está en una fase temprana, así que ten cuidado. Hacer niveles será un poco complicado y habrá errores. Si tienes en mente campañas fantásticas que lo abarquen todo" - artisan_summary_suf: ", entonces esta Clase es la tuya." - artisan_introduction_pref: "¡Debemos construir niveles adicionales! La gente clama por más contenido y solo podemos crear unos cuantos. Ahora mismo tu estación de trabajo es el nivel uno; nuestro editor de niveles es apenas usable por sus creadores, así que ten cuidado. Si tienes visiones de campañas que alcanzan el infinito" - artisan_introduction_suf: ", entonces esta Clase es ideal para ti." - artisan_attribute_1: "Cualquier experiencia creando contenido similar estaría bien, como por ejemplo el editor de niveles de Blizzard. ¡Aunque no es necesaria!" - artisan_attribute_2: "Un anhelo de hacer un montón de testeo e iteraciones. Para hacer buenos niveles necesitas mostrárselos a otros y mirar como juegan, además de estar preparado para encontrar los fallos a reparar." - artisan_attribute_3: "Por el momento, la resistencia va a la par con el Aventurero. Nuestro editor de niveles está a un nivel de desarrollo temprano y puede ser muy frustrante usarlo. ¡Estás advertido!" - artisan_join_desc: "Sigue las siguientes indicaciones para usar el editor de niveles. Tómalo o déjalo:" - artisan_join_step1: "Lee la documentación." - artisan_join_step2: "Crea un nuevo nivel y explora los niveles existentes." - artisan_join_step3: "Busca nuestra sala pública de HipChat en busca de ayuda." - artisan_join_step4: "Publica tus niveles en el foro para recibir comentarios críticos." - more_about_artisan: "Aprende más sobre convertirte en un Artesano creativo" - artisan_subscribe_desc: "Recibe correos sobre actualizaciones del editor de niveles y anuncios." - adventurer_summary: "Let us be clear about your role: you are the tank. You are going to take heavy damage. We need people to try out brand-new levels and help identify how to make things better. The pain will be enormous; making good games is a long process and no one gets it right the first time. If you can endure and have a high constitution score, then this class is for you." - adventurer_introduction: "Hablemos claro sobre tu papel: eres el tanque. Vas a recibir fuertes daños. Necesitamos gente para probar nuestros flamantes niveles y ayudar a mejorarlos. El dolor será enorme; hacer buenos juegos es un proceso largo y nadie lo consigue a la primera. Si puedes resistir y tener una puntuación alta en Resistencia, entonces esta Clase es para ti." - adventurer_attribute_1: "Estar sediento de conocimientos. Quieres aprender a programar y nosotros queremos enseñarte cómo hacerlo. Aunque en este caso es más probable que seas tú el que esté haciendo la mayor parte de la enseñanza." - adventurer_attribute_2: "Carismático. Se amable pero claro a la hora de desglosar qué necesita ser mejorado y sugiere de qué formas podría hacerse." - adventurer_join_pref: "Reúnete con (¡o recluta!) un Artesano y trabaja con ellos, o marca la casilla de abajo para recibir un correo cuando haya nuevos niveles para testar. También publicaremos en nuestras redes nuevos niveles para revisar" - adventurer_forum_url: "nuestro foro" - adventurer_join_suf: "así que si prefieres estar informado en esa forma, ¡crea una cuenta allí!" - more_about_adventurer: "Aprende más sobre cómo convertirte en un bravo Aventurero" - adventurer_subscribe_desc: "Recibe correos cuando haya nuevos niveles para testar." - scribe_summary_pref: "CodeCombat no va a ser solo un conjunto de niveles. También será una fuente de conocimiento sobre programación a la que los jugadores podrán recurrir. De esa manera, cada Artesano puede enlazar a un artículo detallado que ayude al jugador: documentación afín a lo que el " - scribe_summary_suf: " ha escrito. Si disfrutas explicando conceptos de programación, entonces esta clase es para tí." - scribe_introduction_pref: "CodeCombat no será solo un montón de niveles. También será una fuente de conocimientos, una wiki de conceptos de programación a la que los niveles se engancharan. De esa forma, en lugar de que cada Artesano tenga que describir en detalle qué es un operador de comparación, podrá simplemente enlazar el nivel al Artículo que los describe y que ya ha sido escrito para edificación del jugador. Algo en la línea de lo que la " + more_about_archmage: "Aprende máis sobre convertirte nun poderoso Archimago" + archmage_subscribe_desc: "Recibe correos sobre novos anuncios e oportunidades de codificar." + artisan_summary_pref: "Queres deseñar niveis e aumentar o arsenal de CodeCombat? A xente está xogando co noso contido a un ritmo máis rápido do que podemos construir! Neste momento, o nostro editor de niveis está nunha fase temperá, así que ten coidado. Facer niveis será un pouco complicado e haberá erros. Si tes en mente campañas fantásticas que o abrangan todo" + artisan_summary_suf: ", entón esta Clase é a túa." + artisan_introduction_pref: "Debemos construir niveis adicionais! A xente pide máis contidos e so podemos crear uns cantos. Agora mesmo a túa estación de traballo é o nivel un; o noso editor de niveis apenas é utilizable polos seus creadores, así que ten coidado. Si tes visións de campañas que acadan o infinito" + artisan_introduction_suf: ", entón esta Clase é ideal para ti." + artisan_attribute_1: "Calquera experiencia creando contido semellante estaría ben, como por exemplo o editor de niveis de Blizzard. Ainda que non se precisa!" + artisan_attribute_2: "Un desexo de facer unha morea de testeo e iteracións. Para facer bos niveis necesitas ensinarllos a outros e ver como xogan, ademáis de estar preparado para atopar os fallos a arranxar." + artisan_attribute_3: "Polo momento, a resistencia vai á par co Aventureiro. O noso editor de niveis está a un nivel de desenvolvemento temperá e pode ser moi frustrante usalo. Estás advertido!" + artisan_join_desc: "Segue as seguintes indicacións para usar o editor de niveis. Tómao ou déixao:" + artisan_join_step1: "Le a documentación." + artisan_join_step2: "Crea un novo nivel e explora os niveis existentes." + artisan_join_step3: "Busca a nosa sala pública de HipChat en busca de axuda." + artisan_join_step4: "Publica os teus niveis no foro para recibir comentarios críticos." + more_about_artisan: "Aprende máis sobre convertirte nun Artesán creativo" + artisan_subscribe_desc: "Recibe correos sobre actualizacións do editor de niveis e anuncios." + adventurer_summary: "Permite que sexamos claros sobre o teu papel: ti eres o tanque. Vas a recibir fortes danos. Precisamos xente que probe os niveis máis novos e axude a identificar como mellorar. A dor vai a ser enorme; facer bos xogos é un proceso longo e ninguén o fai ben a primeira vez. Si podes sobrevivir e obter unha puntuación alta en resistencia, entón esta clase é para ti." + adventurer_introduction: "Falemos claro sobre o teu papel: ti eres o tanque. Vas a recibir fortes danos. Precisamos xente que probe os niveis máis novos e axude a identificar como mellorar. A dor vai a ser enorme; facer bos xogos é un proceso longo e ninguén o fai ben a primeira vez. Si podes sobrevivir e obter unha puntuación alta en resistencia, entón esta clase é para ti." + adventurer_attribute_1: "Estar sedento de coñeceentos. Queres aprender a programar e nos queremos ensinarche como facelo. Ainda qe neste caso é máis probable que sexas ti o que esté facendo a maior parte do ensino." + adventurer_attribute_2: "Carismático. Se amable pero claro á hora de desglosar qué precisa ser mellorado e suxire de que formas podería facerse." + adventurer_join_pref: "Reúnete cun (ou recluta!) Artesán e traballa con eles, ou marca a casilla de abaixo para recibir un correo cando haxa novos niveis para probar. También publicaremos nas nosas redes novos niveis para revisar" + adventurer_forum_url: "o noso foro" + adventurer_join_suf: "así que si prefieres estar informado nesa forma, crea unha conta alí!" + more_about_adventurer: "Aprende máis sobre cómo convertirte nun bravo Aventureiro" + adventurer_subscribe_desc: "Recibe correos cando haxa novos niveis para probar." + scribe_summary_pref: "CodeCombat non vai a ser so un conxunto de niveis. Tamén será una fonte de coñecemento sobre programación á que os xogadores poderán recurrir. De esa maneira, cada Artesán pode ligar a un artigo detallado que axude ao xogador: documentación afín ao que el " + scribe_summary_suf: " escribiu. Si che gusta explicar conceptos de programación, entón esta clase é para tí." + scribe_introduction_pref: "CodeCombat non será so unha morea de niveis. Tamén será una fonte de coñecementos, unha wiki de conceptos de programación á que os niveis se engancharán. Desa forma, en lugar de que cada Artesán teña que describir en detalle que é un operador de comparación, poderá sinxelamente ligar o nivel ao Artigo que os describe e que xa foi escrito para preparación do jugador. Algo na liña do que a " scribe_introduction_url_mozilla: "Mozilla Developer Network" - scribe_introduction_suf: " ha construido. Si tu idea de diversión es articular los conceptos de la programación de una forma sencilla, entonces esta clase es para ti." - scribe_attribute_1: "Habilidad a la hora de escribir es casi todo lo que necesitas. No solo dominar la gramática y la ortografía sino también expresar ideas complicadas a los demás de forma sencilla." + scribe_introduction_suf: " construiu. Si o que che gusta é articular os conceptos da programación dunha forma sinxela, entón esta clase é para ti." + scribe_attribute_1: "Habilidade á hora de escribir é casi todo o que precisas. Non so dominar a gramática e a ortografía sinon tamén expresar ideas complicadas aos demais de forma sinxela." contact_us_url: "Escribenos un correo electrónico" - scribe_join_description: "cuéntanos más sobre ti, tu experiencia en el mundo de la programación y sobre qué cosas te gustaría escribir. ¡Y continuaremos a partir de ahí!" + scribe_join_description: "contanos máis sobre ti, a túa experiencia no mundo da programación e sobre que cousas che gustaría escribir. E continuaremos a partir de ahí!" more_about_scribe: "Aprende más sobre convertirte en un Escriba diligente" - scribe_subscribe_desc: "Recibe correos sobre anuncios de redacción de Artículos." - diplomat_summary: "¡Hay un gran interés por CodeCombat en otros países que no hablan Inglés! Estamos buscando traductores que estén dispuestos a pasar su valioso tiempo traduciendo el corpus de palabras del sitio web para que CodeCombat sea accesible a todo el mundo tan pronto como sea posible. Si deseas ayudar para har de CodeCombat algo internacional, entonces esta clase es para tí." + scribe_subscribe_desc: "Recibe correos sobre anuncios de redacción de Artigos." + diplomat_summary: "Hai un gran interese por CodeCombat noutros países que non falan inglés! Estamos buscando traductores que estén dispostos a pasar o seu valioso tempo traduciendo o corpus de palabras do sitio web para que CodeCombat sexa accesible a todo o mundo tan pronto como sexa posible. Si desexas axudar para facer de CodeCombat algo internacional, entón esta clase é para tí." diplomat_introduction_pref: "Así, si hemos aprendido algo desde el " diplomat_launch_url: "lanzamiento en octubre" - diplomat_introduction_suf: "hay un interés considerable en CodeCombat en otros paises, ¡especialmente Brasil! Estamos formando un cuerpo de traductores con ganas de traducir un grupo de palabras tras otro para hacer CodeCombat tan accesible para todo el mundo como sea posible. Si quieres recibir avances de próximos contenidos y quieres poner esos niveles a disposición de los que comparten tu idioma tan pronto como sea posible, entonces esta Clase es para ti." - diplomat_attribute_1: "Fluidez con el ingles y el lenguaje al que quieras traducir. Cuando de transmitir ideas complejas se trata, ¡es importante tener grandes conocimientos de ambas!" - diplomat_join_pref_github: "Encuentra el fichero local de tu idioma " + diplomat_introduction_suf: "hai un interés considerable en CodeCombat en otros paises, ¡especialmente Brasil! Estamos formando un cuerpo de traductores con ganas de traducir un grupo de palabras tras otro para hacer CodeCombat tan accesible para todo el mundo como sea posible. Si quieres recibir avances de próximos contenidos y quieres poner esos niveles a disposición de los que comparten tu idioma tan pronto como sea posible, entonces esta Clase es para ti." + diplomat_attribute_1: "Fluidez co inglés e a linguaxe á que queiras traducir. Cando se trata de transmitir ideas complexas, és importante ter grandes coñecementos das dúas!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." + diplomat_join_pref_github: "Atopa o ficheiro local do teu idioma " diplomat_github_url: "en GitHub" - diplomat_join_suf_github: ", edítalo online, y solicita que sea revisado. Además, marca la casilla de abajo para mantenerte informado en nuevos progresos en Internacionalización." - more_about_diplomat: "Aprende más sobre cómo convertirte en un gran Diplomático" - diplomat_subscribe_desc: "Recibe correos sobre nuevos niveles y desarrollos para traducir." - ambassador_summary: "Estamos tratando de construir una comunidad, y cada comunidad necesita un equipo de apoyo para cuando hay problemas. Tenemos chats, correos electrónicos y redes sociales para que nuestros usuarios puedan familiarizarse con el juego. Si quieres ayudar a que la gente participe, se divierta y aprenda algo de programación, entonces esta clase es para tí." - ambassador_introduction: "Esta es una comunidad en construcción y tú eres parte de las conexiones. Tenemos chat Olark, correos electrónicos y las redes sociales con una gran cantidad de personas con quienes hablar, ayudar a familiarizarse con el juego y aprender. Si quieres ayudar a la gente a que se involucre, se divierta, y tenga buenas sensaciones sobre CodeCombat y hacia dónde vamos, entonces esta clase es para ti." - ambassador_attribute_1: "Habilidades de comunicación. Ser capaz de identificar los problemas que los jugadores están teniendo y ayudarles a resolverlos. Además, mantener al resto de nosotros informados sobre lo que los jugadores están diciendo, lo que les gusta, lo que no ¡y de lo que quieren más!" - ambassador_join_desc: "cuéntanos más sobre ti, que has hecho y qué estarías interesado en hacer. ¡Y continuaremos a partir de ahí!" + diplomat_join_suf_github: ", edítao en liña, e solicita que sexa revisado. Ademais, marca a casilla de abaixo para mantenerte informado en novos progresos en Internacionalización." + more_about_diplomat: "Aprende máis sobre como convertirte nun gran Diplomático" + diplomat_subscribe_desc: "Recibe correos sobre novos niveis e desenvolvementos para traducir." + ambassador_summary: "Estamos tratando de construir unha comunidade, e cada comunidade precisa un equipo de apoio para cando hai problemas. Temos chats, correos electrónicos e redes sociais para que os nosos usuarios poidan familiarizarse co xogo. Si queres axudar a que a xente participe, se divierta e aprenda algo de programación, entón esta clase é para tí." + ambassador_introduction: "Esta é unha comunidade en construcción e ti eres parte das conexións. Temos chat Olark, correos electrónicos e as redes sociais con unha gran cantidade de persoas con quen falar, axudar a familiarizarse co xogo e aprender. Si queres axudar á xente a que se involucre, se divirta e teña boas sensacións sobre CodeCombat e cara onde vamos, entón esta clase é para ti." + ambassador_attribute_1: "Habilidades de comunicación. Ser capaz de identificar os problemas que os xogadores están tendo e axudarlles a resolvelos. Ademais, manter ao resto de nos informados sobre o que están dicindo os xogadores, o que lles gusta, o que non, e do que queren máis!" + ambassador_join_desc: "contanos máis sobre ti, que fixeches e que estarías interesado en facer. E continuaremos a partir de ahí!" ambassador_join_note_strong: "Nota" - ambassador_join_note_desc: "Una de nuestras principales prioridades es construir un modo multijugador donde los jugadores con mayores dificultades a la hora de resolver un nivel, puedan invocar a los magos más avanzados para que les ayuden. Será una buena manera de que los Embajadores puedan hacer su trabajo. ¡Te mantendremos informado!" - more_about_ambassador: "Aprende más sobre cómo convertirte en un amable Embajador" - ambassador_subscribe_desc: "Recibe correos sobre actualizaciones de soporte y desarrollo del multijugador." - changes_auto_save: "Los cambios son guardados automáticamente cuando marcas las casillas de verificación." - diligent_scribes: "Nuestros diligentes Escribas:" - powerful_archmages: "Nuestros poderosos Archimagos:" - creative_artisans: "Nuestros creativos Artesanos:" - brave_adventurers: "Nuestros bravos Aventureros:" - translating_diplomats: "Nuestros políglotas Diplomáticos:" - helpful_ambassadors: "Nuestros amables Embajadores:" + ambassador_join_note_desc: "Una das nosas principais prioridades é construir un modo multixogador onde os xogadores con maiores dificultades á hora de resolver un nivel, poidan invocar aos magos máis avanzados para que lles ayuden. Será unha boa maneira de que os Embaixadores poidan facer o seu traballo. Mantenremoste informado!" + more_about_ambassador: "Aprende máis sobre como convertirte nun amable Embaixador" + ambassador_subscribe_desc: "Recibe correos sobre actualizacións de soporte e desenvolvemento do multixogador." + changes_auto_save: "Os cambios son gardados automáticamente cando marcas as casillas de verificación." + diligent_scribes: "Os nosos dilixentes Escribas:" + powerful_archmages: "Os nosos poderosos Archimagos:" + creative_artisans: "Os nosos creativos Artesáns:" + brave_adventurers: "Os nosos bravus Aventureiros:" + translating_diplomats: "Os nosos políglotas Diplomáticos:" + helpful_ambassadors: "Os nosos amables Embaixadores:" ladder: - please_login: "Por favor inicia sesión antes de jugar una partida para el escalafón." - my_matches: "Mis partidas" + please_login: "Por favor inicia sesión antes de xogar unha partida para o escalafón." + my_matches: "As miñas partidas" simulate: "Simular" - simulation_explanation: "¡Simulando partidas puedes hacer que tu partida sea calificada más rápido!" - simulate_games: "¡Simula juegos!" - simulate_all: "REINICIAR Y SIMULAR JUEGOS" - games_simulated_by: "Juegos simulados por ti:" - games_simulated_for: "Juegos simulados para ti:" - games_simulated: "Juegos simulados" - games_played: "Partidas jugadas" + simulation_explanation: "Simulando partidas podes facer que a túa partida sexa calificada máis rápido!" + simulate_games: "Simula xogos!" + simulate_all: "REINICIAR E SIMULAR XOGOS" + games_simulated_by: "Xogos simulados por ti:" + games_simulated_for: "Xogos simulados para ti:" + games_simulated: "Xogos simulados" + games_played: "Partidas xogadas" ratio: "Ratio" leaderboard: "Clasificación" - battle_as: "Pelea como " - summary_your: "Tus " + battle_as: "Pelexa como " + summary_your: "As Túas " summary_matches: "Partidas - " - summary_wins: " Victorias, " + summary_wins: " Vitorias, " summary_losses: " Derrotas" - rank_no_code: "No hay código nuevo para calificar" - rank_my_game: "¡Califica mi juego!" + rank_no_code: "Non hai código novo para calificar" + rank_my_game: "Califica o meu xogo!" rank_submitting: "Enviando..." rank_submitted: "Enviado para calificación" - rank_failed: "Fallo al calificar" - rank_being_ranked: "El juego está siendo calificado" + rank_failed: "Fallo ao calificar" + rank_being_ranked: "O xogo está sendo calificado" rank_last_submitted: "enviado " - help_simulate: "Ayudar a simular Juegos?" - code_being_simulated: "Tu nuevo código está siendo simulado por otros jugados para ser calificado. Se irá actualizando a medida que las partidas se vayan sucediendo." - no_ranked_matches_pre: "No hay partidas calificadas para " - no_ranked_matches_post: " equipo! Juega contra otros competidores y luego vuelve aquí para que tu partida aparezca en la clasificación." - choose_opponent: "Elige un contrincante" - select_your_language: "Elige tu Idioma!" - tutorial_play: "Jugar el Tutorial" - tutorial_recommended: "Recomendado si no has jugado antes." - tutorial_skip: "Saltar el Tutorial" - tutorial_not_sure: "¿No estás seguro de cómo funciona esto?" - tutorial_play_first: "Prueba el Tutorial primero." - simple_ai: "IA sencilla" - warmup: "calentamiento" - friends_playing: "Amigos jugando" - log_in_for_friends: "¡Inicia sesión para jugar con tus amigos!" - social_connect_blurb: "¡Conectate y juega contra tus amigos!" - invite_friends_to_battle: "¡Invita a tus amigos a unirse a la batalla!" - fight: "¡Pelea!" - watch_victory: "Ver tu victoria" - defeat_the: "Vence a" - tournament_ends: "El torneo termina" - tournament_ended: "El torneo ha terminado" - tournament_rules: "Reglas del Torneo" - tournament_blurb: "Escribe codigo, recolecta oro, construye ejercitos, aplasta a los malos, gana premios, y sube en tu carrera en nuestro Torneo de la Avaricia con $40,000! Ver los detalles" - tournament_blurb_criss_cross: "Gana pujas, construye caminos, aniquila a tus oponentes, recoge gemas, y mejora tu carrera en nuestro torneo Criss-Cross! Mira los detalles" - tournament_blurb_blog: "en nuestro blog" - rules: "Reglas" - winners: "Ganadores" + help_simulate: "Axudar a simular Xogos?" + code_being_simulated: "O teu novo código está sendo simulado por outros xogadores para ser calificado. Irase actualizando a medida que as partidas se vaian sucedendo." + no_ranked_matches_pre: "Non hai partidas calificadas para " + no_ranked_matches_post: " equipo! Xoga contra outros competidores e logo volta aquí para que a túa partida apareza na clasificación." + choose_opponent: "Elixe un contrincante" + select_your_language: "Elixe o teu Idioma!" + tutorial_play: "Xogar o Tutorial" + tutorial_recommended: "Recomendado si non xogaches antes." + tutorial_skip: "Saltar o Tutorial" + tutorial_not_sure: "Non estás seguro de como funciona esto?" + tutorial_play_first: "Proba o Tutorial primeiro." + simple_ai: "IA sinxela" + warmup: "calentamento" + friends_playing: "Amigos xogando" + log_in_for_friends: "Inicia sesión para xogar cos teus amigos!" + social_connect_blurb: "Conéctate e xoga contra os teus amigos!" + invite_friends_to_battle: "Invita aos teus amigos a unirse á batalla!" + fight: "Pelexa!" + watch_victory: "Ver a túa vitoria" + defeat_the: "Gaña a" + tournament_ends: "O torneo remata" + tournament_ended: "O torneo rematou" + tournament_rules: "Regras do Torneo" + tournament_blurb: "Escribe código, colleira ouro, constrúe exércitos, aplasta aos malos, gaña premios e sube na túa carreira no noso Torneo da Avaricia con $40,000! Mira os detalles" + tournament_blurb_criss_cross: "Gaña puxas, constrúe camiños, aniquila aos teus opoñentes, recolle xemas, e mellora a túa carreira no noso torneo Criss-Cross! Mira os detalles" + tournament_blurb_blog: "no noso blogue" + rules: "Regras" + winners: "Gañadores" user: - stats: "Estadisticas" - singleplayer_title: "Niveles Individuales" - multiplayer_title: "Niveles Multijugador" + stats: "Estatísticas" + singleplayer_title: "Niveis Individuais" + multiplayer_title: "Niveis Multixogador" achievements_title: "Logros" - last_played: "Ultimo Jugado" + last_played: "Último Xogado" status: "Estatus" status_completed: "Completado" - status_unfinished: "Sin Terminar" - no_singleplayer: "No has jugado ningun nivel individual todavia." - no_multiplayer: "No has jugado ningun nivel multijugador todavia." - no_achievements: "No has alcanzado ningun logro todavia." - favorite_prefix: "Favorite language is " + status_unfinished: "Sin Rematar" + no_singleplayer: "Ainda non xogaches ningún nivel individual." + no_multiplayer: "Ainda non xogaches ningún nivel multixogador." + no_achievements: "Ainda non alcanzaches ningún logro." + favorite_prefix: "O teu idioma favorito " favorite_postfix: "." achievements: - last_earned: "Ganado la ultima vez" - amount_achieved: "Cantidad" + last_earned: "Gañado a última vez" + amount_achieved: "Cantidade" achievement: "Logro" category_contributor: "Contribuidor" - category_miscellaneous: "Miscelanea" - category_levels: "Niveles" - category_undefined: "Sin categorizar" + category_miscellaneous: "Miscelánea" + category_levels: "Niveis" + category_undefined: "Sen categorizar" current_xp_prefix: "" current_xp_postfix: " en total" new_xp_prefix: "" - new_xp_postfix: " ganado" + new_xp_postfix: " gañado" left_xp_prefix: "" - left_xp_infix: " hasta el nivel" + left_xp_infix: " ata o nivel" left_xp_postfix: "" account: - recently_played: "Jugado Recientemente" - no_recent_games: "No he jugado juegos en las ultimas dos semanas." + recently_played: "Xogado Recientemente" + no_recent_games: "Non xogeis xogos nas últimas dúas semáns." loading_error: - could_not_load: "Error al cargar desde el servidor." - connection_failure: "Fallo en la conexión." - unauthorized: "Tienes que haber iniciado sesión. ¿No permites la instalación de cookies?" - forbidden: "No tienes autorización." - not_found: "No encontrado." - not_allowed: "Método no permitido." - timeout: "Tiempo de espera del servidor superado." + could_not_load: "Erro ao cargar dende o servidor." + connection_failure: "Fallo na conexión." + unauthorized: "Tes que iniciar sesión. Non permites a instalación de cookies?" + forbidden: "Non tes autorización." + not_found: "Non atopado." + not_allowed: "Método non permitido." + timeout: "Tempo de espera do servidor superado." conflict: "Conflicto de recursos." bad_input: "Entrada incorrecta." - server_error: "Error del servidor." - unknown: "Error desconocido." + server_error: "Erro do servidor." + unknown: "Erro descoñecido." resources: - sessions: "Sesiones" - your_sessions: "Tus sesiones" + sessions: "Sesións" + your_sessions: "As túas sesións" level: "Nivel" - social_network_apis: "APIs de redes sociales" + social_network_apis: "APIs de redes sociais" facebook_status: "Estado de Facebook" facebook_friends: "Amigos de Facebook" - facebook_friend_sessions: "Sesiones de amigos de Facebook Friend" + facebook_friend_sessions: "Sesións de amigos de Facebook Friend" gplus_friends: "Amigos de G+" - gplus_friend_sessions: "Sesiones de amigo de G+ Friend" + gplus_friend_sessions: "Sesións de amigo de G+ Friend" leaderboard: "Clasificación" user_schema: "Esquema de usuario" user_profile: "Perfil de usuario" patches: "Parches" - patched_model: "Documento Fuente" + patched_model: "Documento Fonte" model: "Modelo" system: "Sistema" systems: "Sistemas" - component: "Componente" + component: "Compoñente" components: "Componentes" # thang: "Thang" # thangs: "Thangs" - level_session: "Tu sesión" - opponent_session: "Sesión del oponente" - article: "Artículo" - user_names: "Nombres de usuarios" + level_session: "A túa sesión" + opponent_session: "Sesión do opoñente" + article: "Artigo" + user_names: "Nomes de usuarios" # thang_names: "Thang Names" - files: "Archivos" + files: "Ficheiros" top_simulators: "Top simuladores" - source_document: "Documento fuente" + source_document: "Documento fonte" document: "Documento" - sprite_sheet: "Hoja de Duende" - employers: "Empleados" + sprite_sheet: "Folla de trasno" + employers: "Empregados" candidates: "Candidatos" - candidate_sessions: "Sesiones de Candidato" + candidate_sessions: "Sesións de Candidato" # user_remark: "User Remark" # user_remarks: "User Remarks" - versions: "Versiones" - items: "Objetos" + versions: "Versións" + items: "Obxectos" heroes: "Heroes" wizard: "Mago" achievement: "Logro" - clas: "Clasess" - play_counts: "Contador de Juegos" - feedback: "Apoyo" + clas: "Clases" + play_counts: "Contador de Xogos" + feedback: "Apoio" delta: - added: "Añadido" + added: "Engadido" modified: "Modificado" deleted: "Eliminado" - moved_index: "Indice Movido" + moved_index: "Índice Movido" # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" - no_changes: "Sin Cambios" + no_changes: "Sen Cambios" guide: temp: "Temporal" multiplayer: - multiplayer_title: "Ajustes de Multijugador" # We'll be changing this around significantly soon. Until then, it's not important to translate. - multiplayer_toggle: "Activar multijugador" - multiplayer_toggle_description: "Permitir que otros se unan a tu juego." - multiplayer_link_description: "Pasa este enlace a alguien para que se una a ti." + multiplayer_title: "Axustes de Multixogador" # We'll be changing this around significantly soon. Until then, it's not important to translate. + multiplayer_toggle: "Activar multixogador" + multiplayer_toggle_description: "Permitir que outros se unan ao teu xogo." + multiplayer_link_description: "Pasa este enlace a alguén para que se una a ti." multiplayer_hint_label: "Pista:" - multiplayer_hint: " Haz un click en el link para que se seleccione, después utiliza Ctrl-C o ⌘-C para copiar el link." - multiplayer_coming_soon: "¡Más opciones de Multijugador están por venir!" - multiplayer_sign_in_leaderboard: "Logueate o crea una cuentra para guardar tus resultados en la tabla de clasificación." + multiplayer_hint: " Preme na ligazón para que se seleccione, despois utiliza Ctrl-C ou ⌘-C para copiar a ligazón." + multiplayer_coming_soon: "Máis opcións de Multixogador están por vir!" + multiplayer_sign_in_leaderboard: "Accede á túa conta ou crea unha conta para gardar os teus resultados na táboa de clasificación." legal: page_title: "Legal" - opensource_intro: "CodeCombat es gratis y totalmente open source." - opensource_description_prefix: "Echa un vistazo a " - github_url: "nuestro GitHub" - opensource_description_center: "y ayúdanos si quieres. CodeCombat está desarrollado sobre docenas de proyectos open source, y nos encantana. Mira " - archmage_wiki_url: "nuestra wiki del Archimago" - opensource_description_suffix: "para encontrar una lista del software que hace este juego posible." + opensource_intro: "CodeCombat é de balde e totalmente código aberto." + opensource_description_prefix: "Bota un ollo a " + github_url: "o noso GitHub" + opensource_description_center: "e axúdanos si queres. CodeCombat está desenvolvido sobre ducias de proxectos de código aberto, e estamos encantados. Mira " + archmage_wiki_url: "a nosa wiki do Archimago" + opensource_description_suffix: "para atopar unha lista do software que fai posible este xogo." practices_title: "Prácticas respetuosas" - practices_description: "Esto es lo que te prometemos a ti, el jugador, sin usar mucha jerga legal." - privacy_title: "Privacidad" - privacy_description: "No venderemos tu información personal. Tenemos la intención de hacer dinero a través de la contratación con el tiempo, pero puedes estar seguro que no vamos a distribuir tu información personal a las empresas interesadas sin tu consentimiento expreso." - security_title: "Seguridad" - security_description: "Nos esforzamos por mantener segura tu información personal. Como proyecto de código abierto, nuestro sitio está abierto a cualquiera que quiera revisarlo y mejorar nuestros sistemas de seguridad." + practices_description: "Esto é o que che propoñemos a ti, o xogador, sin usar moita terminoloxía legal." + privacy_title: "Privacidade" + privacy_description: "Non venderemos a túa información persoal. Temos a intención de facer diñeiro a través da contratación co tempo, pero podes estar seguro que non vamos a distribuir a túa información persoal ás empresas interesadas sin o teu consentimento expreso." + security_title: "Seguridade" + security_description: "Esforzamonos por manter segura a túa información persoal. Como proxecto de código aberto, o noso sitio está aberto a calqueira que queira revisalo e mellorar nosos sistemas de seguridade." email_title: "Correo electrónico" - email_description_prefix: "No te inundaremos con spam. Mediante" - email_settings_url: "tus ajustes de correo electrónico" - email_description_suffix: "o a través de los enlaces en los correos que te enviemos, puedes cambiar tus preferencias y darte de baja fácilmente en cualquier momento." - cost_title: "Precio" - cost_description: "Actualmente, ¡CodeCombat es 100% gratis! Uno de nuestros principales objetivos es mantenerlo así, de forma que el mayor número posible de gente pueda jugar, independientemente de sus posibilidades económicas. Si las cosas se tuercen, quizás tengamos que cobrar suscripciones o por algún contenido, pero preferimos no hacerlo. Con un poco de suerte, podremos mantener la empresa con: " + email_description_prefix: "Non te inundaremos con spam. Mediante" + email_settings_url: "os teus axustes de correo electrónico" + email_description_suffix: "ou a través das ligazóns nos correos que che enviemos, podes cambiar as túas preferencias e darte de baixa de xeito doado en calquera momento." + cost_title: "Prezo" + cost_description: "Actualmente, CodeCombat é 100% de balde! Un dos nosos principais obxectivos é mantenlo así, de forma que o maior número posible de xente poida xogar, independientemente das súass posibilidades económicas. Si as cousas se torcen, quizais teñamos que cobrar suscripcións por algún contido, pero preferimos non facelo. Cun pouco de sorte, poderemos manter a empresa con: " recruitment_title: "Contratación" - recruitment_description_prefix: "En CodeCombat, te vas a convertir en un poderoso mago no solo en el juego, también en el mundo real." - url_hire_programmers: "Nadie puede contratar programadores con la suficiente rapidez" - recruitment_description_suffix: "así que una vez que hayas afilado tus habilidades y si estás de acuerdo, mostraremos tus mejores logros en programación a los miles de empresas que están deseando tener la oportunidad de contratarte. Ellos nos pagan un poco y ellos te pagan a ti" - recruitment_description_italic: "un montón." - recruitment_description_ending: "La web permanece gratuita y todo el mundo es feliz. Ese es el plan." - copyrights_title: "Copyrights y Licencias" - contributor_title: "Acuerdo de Licencia del Colaborador" - contributor_description_prefix: "Todas las colaboraciones, tanto en la web como en nuestro repositorio de GitHub, están sujetas a nuestro" + recruitment_description_prefix: "En CodeCombat, vaste convertir nun poderoso mago non solo no xogo, tamén no mundo real." + url_hire_programmers: "Ninguén pode contratar programadores coa suficiente rapidez" + recruitment_description_suffix: "así que unha vez que teñas afiado as túas habilidades e si estás de acordo, mostraremos os teus mellores logros en programación ás miles de empresas que estén desexando ter a oportunidade de contratarte. Eles pagannos un pouco e paganche a ti" + recruitment_description_italic: "moito." + recruitment_description_ending: "A web permanece de balde e todo o mundo é feliz. Ese é o plan." + copyrights_title: "Copyrights e Licenzas" + contributor_title: "Acordo de Licenza do Colaborador" + contributor_description_prefix: "Todas as colaboracións, tanto na web como no noso repositorio de GitHub, están suxeitas ao noso" cla_url: "CLA" - contributor_description_suffix: "con el que deberás estar de acuerdo antes de colaborar." + contributor_description_suffix: "con que deberás estar de acordo antes de colaborar." code_title: "Código - MIT" - code_description_prefix: "Todo el código propiedad de CodeCombat o alojado en codecombat.com, ambos en el repositorio GitHub repository o en la base de datos de codecombat.com, está licenciado bajo la " - mit_license_url: "Licencia MIT" - code_description_suffix: "Esto incluye todo el código en Sistemas y Componentes puesto a disposición por CodeCombat para la creación de niveles." + code_description_prefix: "Todo o código propiedade de CodeCombat ou aloxado en codecombat.com, ámbolos dous no repositorio GitHub ou na base de datos de codecombat.com, está licenciado baixo a " + mit_license_url: "Licenza MIT" + code_description_suffix: "Esto inclúe todo o código en Sistemas y Compoñentes posto a disposición por CodeCombat para a creación de niveis." art_title: "Arte/Música - Creative Commons " - art_description_prefix: "Todo el contenido común está disponible bajo la" - cc_license_url: "Creative Commons Attribution 4.0 International License" - art_description_suffix: "Contenido común es cualquier cosa puesta a disposición por CodeCombat con el propósito de la creación de niveles. Esto incluye:" + art_description_prefix: "Todo o contido común está dispoñible baixo a" + cc_license_url: "licenza Creative Commons Attribution 4.0 International" + art_description_suffix: "Contido común é calqueira cousa posta a disposición por CodeCombat co propósito da creación de niveis. Esto inclúe:" art_music: "Música" - art_sound: "Sonido" + art_sound: "Son" art_artwork: "Arte" - art_sprites: "Sprites" - art_other: "Otros trabajos creativos no relacionados con código puestos a disposición para la creación de Niveles." - art_access: "Actualmente no hay un sistema universal y fácil para ir en busca de esos recursos. En general, recógelos de las URLs como las usadas en el sitio, contáctanos para recibir asistencia, o ayúdanos a extender el sitio para hacer más facilmente accesibles estos recursos." - art_paragraph_1: "Para la atribución, por favor pon tu nombre y enlaza a codecombat.com cerca del lugar donde se utiliza la fuente o en su caso para el medio. Por ejemplo:" - use_list_1: "Si se usa en una película u otro juego, incluye codecombat.com en los créditos." - use_list_2: "Si se usa en una página web, incluye un enlace cerca de donde se use, por ejemplo bajo una imagen, o en una página general de atribuciones donde también menciones otros trabajos Creative Commons y software de código abierto que uses en tu web. Si ya se hace clara referencia a CodeCombat, como en el post de un blog mencionando a CodeCombat, no es necesaria una atribución del contenido por separado." - art_paragraph_2: "Si el contenido usado ha sido creado no por CodeCombat sino por un usuario de codecombat.com, deberá serle atribuido a dicho usuario y seguir las directrices de atribución proporcionadas en la descripción del recurso, si la hay." - rights_title: "Derechos Reservados" - rights_desc: "Todos los derechos reservados para los Niveles. Esto incluye" + art_sprites: "Persoaxes" + art_other: "Outros traballos creativos non relacionados con código postos a disposición para a creación de Niveis." + art_access: "Actualmente non hai un sistema universal e doado para ir en busca deses recursos. En xeral, recóllelos das URLs como as usadas no sitio, contáctanos para recibir asistencia, ou axúdanos a extender o sitio para facer accesibles estes recursos de maneira máis doada." + art_paragraph_1: "Para a atribución, por favor pon o teu nome e liga a codecombat.com perto do lugar onde se utiliza a fonte ou no seu caso para o medio. Por exemplo:" + use_list_1: "Si se usa nunha película ou outro xogo, inclúe codecombat.com nos créditos." + use_list_2: "Si se usa nunha páxina web, inclúe unha ligazón perto de onde se use, por exemplo baixo unha imaxe, ou nunha páxina xeral de atribucións onde tamén menciones outros traballos Creative Commons e software de código aberto que uses na túa web. Si xa se fai clara referencia a CodeCombat, como no post de un blogue mencionando a CodeCombat, non é precisa unha atribución do contido por separado." + art_paragraph_2: "Si o contido usado foi creado non por CodeCombat sinón por un usuario de codecombat.com, deberá serlle atribuido a dito usuario e seguir as directrices de atribución proporcionadas na descripción do recurso, si as hai." + rights_title: "Dereitos Reservados" + rights_desc: "Todos os dereitos reservados para os Niveis. Esto inclúe" rights_scripts: "Scripts" - rights_unit: "Configuración de la Unidad" + rights_unit: "Configuración da Unidade" rights_description: "Descripción" rights_writings: "Escritos" - rights_media: "Media (sonidos, música) y cualquier otro contenido creativo creado específicamente para ese Nivel y que no estuviera disponible para todos al crear el/los niveles." - rights_clarification: "Para aclarar, cualquier cosa que se pone a disposición en el editor de niveles con el fin de crear Niveles se encuentra bajo licencia CC, mientras que el contenido creado con el editor de niveles o subido en el curso de la creación de niveles no lo es." - nutshell_title: "En una palabra" - nutshell_description: "Todos los recursos que ofrecemos en el editor de niveles son libres de ser utilizados para crear niveles. Pero nos reservamos el derecho de restringir la distribución de los propios niveles (que se crean en codecombat.com) de modo que se pueda cobrar por ellos en el futuro, si eso es lo que termina sucediendo." - canonical: "La versión inglesa de este documento es la canónica, la definitiva. Si hay alguna diferencia con lo que pueda aparecer en las traducciones, la versión inglesa es la que prevalece sobre las demás." + rights_media: "Elementos media (sons, música) e calqueira outro contido creativo creado específicamente para ese Nivel e que non estivera dispoñible para todos ao crear o/os niveis." + rights_clarification: "Para aclarar, calquera cousa que se pon a disposición no editor de niveis co fin de crear Niveis atópase baixo licenza CC, mentras que o contido creado co editor de niveis ou subido no curso da creación de niveis non o é." + nutshell_title: "Nunha palabra" + nutshell_description: "Todos os recursos que ofrecemos no editor de niveis son libres de ser utilizados para crear niveis. Pero reservámosnos o dereito de restrinxir a distribución dos propios niveis (que se crean en codecombat.com) de modo que se poida cobrar por eles no futuro, si eso é o que termina sucedendo." + canonical: "A versión inglesa deste documento é a canónica, a definitiva. Si hai algunha diferenza coa que poida aparecer nas traduccións, a versión inglesa é a que prevalece sobre as demais." ladder_prizes: - title: "Premios del Torneo" # This section was for an old tournament and doesn't need new translations now. - blurb_1: "Estos premios se entregaran acorde a" - blurb_2: "las reglas del torneo" - blurb_3: "A los primeros jugadores humanos y ogros." - blurb_4: "Dos equipos significa doble-premio!" - blurb_5: "(Habra dos ganadores por puesto, dos en el primer puesto, dos en el segundo, etc.)" + title: "Premios do Torneo" # This section was for an old tournament and doesn't need new translations now. + blurb_1: "Estes premios entregaranse acorde a" + blurb_2: "as regras do torneo" + blurb_3: "Aos primeiros xogadores humanos e ogros." + blurb_4: "Dous equipos significa doble-premio!" + blurb_5: "(Haberá dous gañadores por posto, dous no primeiro posto, dous no segundo, etc.)" rank: "Rango" prizes: "Premios" total_value: "Valor Total" - in_cash: "en dinero" - custom_wizard: "Personaliza tu Mago de CodeCombat" - custom_avatar: "Personaliza tu avatar de CoceCombat" + in_cash: "en diñeiro" + custom_wizard: "Persoaliza o teu Mago de CodeCombat" + custom_avatar: "Persoaliza o teu avatar de CoceCombat" heap: "Por seis meses de acceso \"Startup\"" - credits: "creditos" - one_month_coupon: "cupon: elige entre Rails o HTML" - one_month_discount: "descuento del 30%: elige entre Rails o HTML" - license: "licencia" - oreilly: "ebook de tu eleccion" + credits: "créditos" + one_month_coupon: "cupón: elixe entre Rails ou HTML" + one_month_discount: "desconto do 30%: elixe entre Rails ou HTML" + license: "licenza" + oreilly: "ebook da túa escolla" wizard_settings: - title: "Ajustes del mago" - customize_avatar: "Personaliza tu Avatar" + title: "Axustes do mago" + customize_avatar: "Persoaliza o teu Avatar" active: "Activo" - color: "Color" + color: "Cor" group: "Grupo" - clothes: "Ropa" + clothes: "Roupa" trim: "Decoración" cloud: "Nube" team: "Equipo" - spell: "Hechizo" + spell: "Feitizo" boots: "Botas" hue: "Matiz" saturation: "Saturación" - lightness: "Brillo" + lightness: "Brilo" account_profile: settings: "Configuración" # We are not actively recruiting right now, so there's no need to add new translations for this section. @@ -904,166 +926,166 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr profile_for_prefix: "Perfil de " profile_for_suffix: "" featured: "Destacado" - not_featured: "Sin Destacar" + not_featured: "Sen Destacar" looking_for: "Buscando:" last_updated: "Última actualización:" contact: "Contacto" - active: "Buscando entrevistas de trabajo" - inactive: "No busco entrevistas de trabajo ahora mismo" + active: "Buscando entrevistas de traballo" + inactive: "Non busco entrevistas de traballo agora mesmo" complete: "completado" - next: "Siguiente" - next_city: "¿Ciudad?" - next_country: "elige tu país." - next_name: "¿Nombre?" - next_short_description: "escribe una descripción breve." - next_long_description: "describe tu puesto de trabajo deseado." - next_skills: "Pon al menos cinco habilidades." - next_work: "Resume tu historia laboral." + next: "Seguinte" + next_city: "Cidade?" + next_country: "elixe o teu país." + next_name: "Nome?" + next_short_description: "escribe unha descripción breve." + next_long_description: "describe o teu posto de traballo desexado." + next_skills: "Pon ao menos cinco habilidades." + next_work: "Resume a túa historia laboral." # next_education: "recount your educational ordeals." - next_projects: "Muestranos tres proyectos en los que hayas trabajado." - next_links: "añade links personales o de redes sociales." - next_photo: "añadir una foto para el perfil profesional." - next_active: "mostrarte abierto a ofertas en las busquedas." - example_blog: "Blog" + next_projects: "Amósanos tres proxectos nos que teñas traballado." + next_links: "engade ligazóns personais ou de redes sociais." + next_photo: "engadir unha foto para o perfil profesional." + next_active: "amosarte aberto a ofertas nas búsquedas." + example_blog: "Blogue" example_personal_site: "Web personal" - links_header: "Enlaces Personales" - links_blurb: "Enlaza otros sitios o perfiles que quieras destacar como tu GitHub, LinkedIn, o tu blog." - links_name: "Nombre del enlace" - links_name_help: "¿Qué estás enlazando?" - links_link_blurb: "URL del enlace" + links_header: "Ligazóns Personais" + links_blurb: "Liga a outros sitios ou perfiles que queiras destacar como o teu GitHub, LinkedIn, ou o teu blogue." + links_name: "Nome da ligazón" + links_name_help: "Que estás ligando?" + links_link_blurb: "URL da ligazón" basics_header: "Actualizar información básica" - basics_active: "Abierto a ofertas" - basics_active_help: "Buscas entrevistas de trabajo ahora?" + basics_active: "Aberto a ofertas" + basics_active_help: "Buscas entrevistas de traballo agora?" # basics_job_title: "Desired Job Title" - basics_job_title_help: "Que tipo de rol estas buscando?" - basics_city: "Ciudad" - basics_city_help: "Ciudad en la que quieres trabajar (o en la que vives actualmente)." + basics_job_title_help: "Que tipo de rol estás buscando?" + basics_city: "Cidade" + basics_city_help: "Cidade na que queres traballar (ou na que vives actualmente)." basics_country: "País" - basics_country_help: "País en la que quieres trabajar (o en la que vives actualmente)." - basics_visa: "Estatus de Trabajo en EEUU" - basics_visa_help: "Estas autorizado a trabajar en EEUU, o necesitas una visa patrocinada? (Si vives en Canada o Australia, marca autorizado.)" - basics_looking_for: "Estoy Buscando" - basics_looking_for_full_time: "Full-time (tiempo completo)" - basics_looking_for_part_time: "Tiempo Partido" - basics_looking_for_remote: "Desde Casa" + basics_country_help: "País no que queeres traballar (ou no que vives actualmente)." + basics_visa: "Estatus de Traballo en EEUU" + basics_visa_help: "Estas autorizado a traballar en EEUU, ou precisas unha visa patrocinada? (Si vives en Canada ou Australia, marca autorizado.)" + basics_looking_for: "Estou Buscando" + basics_looking_for_full_time: "Full-time (tempo completo)" + basics_looking_for_part_time: "Tempo Parcial" + basics_looking_for_remote: "Dende a Casa" basics_looking_for_contracting: "Contractual" basics_looking_for_internship: "Interino" - basics_looking_for_help: "Que tipo de puesto de desarrollo te gustaria?" - name_header: "Escriba su nombre" - name_anonymous: "Desarrollador Anónimo" - name_help: "Esto es lo que quieres que vean las empresas, algo como 'Nick Winter'." - short_description_header: "Escriba una breve descripción sobre usted." - short_description_blurb: "Añade una frase que ayude a las empresas a hacerse una idea de ti." + basics_looking_for_help: "Que tipo de posto de desenvolemento che gustaría?" + name_header: "Escribe o teu nome" + name_anonymous: "Desenvolvedor Anónimo" + name_help: "Esto é o que queres que vexan as empresas, algo como 'Nick Winter'." + short_description_header: "Escribe unha breve descripción sobre ti." + short_description_blurb: "Engade unha frase que lles axude ás empresas a facerse unha idea de ti." # short_description: "Tagline" - short_description_help: "¿Quién eres, y qué estás buscando? 140 caracteres como máximo." + short_description_help: "Quen es, e que estás buscando? 140 caracteres como máximo." skills_header: "Habilidades" # skills_help: "Tag relevant developer skills in order of proficiency." - long_description_header: "Describenos tu trabajo soñado" - long_description_blurb: "Cuenta a tus empleadores lo impresionante que eres y que trabajo estas buscando." - long_description: "Descripción Personal" + long_description_header: "Describenos o teu traballo soñado" + long_description_blurb: "Conta aos teus empregadores o impresionante que es e que traballo estás buscando." + long_description: "Descripción Persoal" # long_description_help: "Describe yourself to potential employers. Keep it short and to the point. We recommend outlining the position that would most interest you. Tasteful markdown okay; 600 characters max." work_experience: "Experiencia laboral" - work_header: "Cuentanos un poco de tu historial laboral" - work_years: "Años de experiencia" - work_years_help: "Cuantos años de experiencia profesional(remunerada) como desarrollador de sofware tienes?" - work_blurb: "Haz un listado con la experiencia laboral relevante, los mas recientes primero." - work_employer: "Empresa/Empleador" - work_employer_help: "Nombre de la empresa /el empleador." + work_header: "Contanos un pouco da túa historial laboral" + work_years: "Anos de experiencia" + work_years_help: "Cantos anos de experiencia profesional(remunerada) como desenvolvedor de sofware tes?" + work_blurb: "Fai un listado coa experiencia laboral relevante, o máis recente primeiro." + work_employer: "Empresa/Empregador" + work_employer_help: "Nome da empresa / empregador." # work_role: "Job Title" # work_role_help: "What was your job title or role?" work_duration: "Duración" # work_duration_help: "When did you hold this gig?" work_description: "Descripción" - work_description_help: "Que has hecho alli? (140 caracteres maximo; opcional)" + work_description_help: "Que fixeches alí? (140 caracteres máximo; opcional)" education: "Educación" # education_header: "Recount your academic ordeals" # education_blurb: "List your academic ordeals." - education_school: "Universidad" - education_school_help: "Nombre de la Universidad." + education_school: "Universidade" + education_school_help: "Nome da Universidade." education_degree: "Titulo" - education_degree_help: "Cual era tu carrera y tu campo de estudio?" - education_duration: "Duracion" - education_duration_help: "¿Cuándo?" + education_degree_help: "Cal era a túa carreira e o teu campo de estudo?" + education_duration: "Duración" + education_duration_help: "Cando?" education_description: "Descripción" - education_description_help: "Resalta algo de tu experiencia educacional. (140 caracteres maximo; optional)" - our_notes: "Nuestras notas" + education_description_help: "Resalta algo de da túa experiencia educativa. (140 caracteres maximo; opcional)" + our_notes: "As nosas notas" # remarks: "Remarks" - projects: "Proyectos" - projects_header: "Añade 3 proyectos" + projects: "Proxectos" + projects_header: "Engade 3 proxectos" projects_header_2: "Proyectos (Top 3)" # projects_blurb: "Highlight your projects to amaze employers." - project_name: "Nombre del proyecto" - project_name_help: "Como se llamaba el proyecto?" + project_name: "Nome do proxecto" + project_name_help: "Como se chamaba o proxecto?" project_description: "Descripción" - project_description_help: "Describe el proyecto brevemente." + project_description_help: "Describe o proxecto brevemente." project_picture: "Foto" - project_picture_help: "Sube una imagen de 230x115px o mas grande enseñandonos el proyecto." - project_link: "Enlace" - project_link_help: "Enlace al proyecto." - player_code: "Codigo de Jugador" + project_picture_help: "Sube unha imaxe de 230x115px ou máis grande ensinándonos o proxecto." + project_link: "Ligazón" + project_link_help: "Ligazón ao proxecto." + player_code: "Código de Xogador" employers: # deprecation_warning_title: "Sorry, CodeCombat is not recruiting right now." # deprecation_warning: "We are focusing on beginner levels instead of finding expert developers for the time being." - hire_developers_not_credentials: "Contrata desarrolladores, no credenciales." # We are not actively recruiting right now, so there's no need to add new translations for the rest of this section. + hire_developers_not_credentials: "Contrata desenvolvedores, no credenciales." # We are not actively recruiting right now, so there's no need to add new translations for the rest of this section. get_started: "Empezar" # already_screened: "We've already technically screened all our candidates" - filter_further: ", Pero puedes filtrar mas alla:" + filter_further: ", Pero podes filtrar máis alá:" filter_visa: "Visa" filter_visa_yes: "Autorizado en EEUU" - filter_visa_no: "No Autorizado" + filter_visa_no: "Non Autorizado" # filter_education_top: "Top School" - filter_education_other: "Otros" - filter_role_web_developer: "Desarrollador Web" - filter_role_software_developer: "Desarrollador de Software" - filter_role_mobile_developer: "Desarrollador de Mobiles" + filter_education_other: "Outros" + filter_role_web_developer: "Desenvolvedor Web" + filter_role_software_developer: "Desenvolvedor de Software" + filter_role_mobile_developer: "Desenvolvedor de Mobiles" filter_experience: "Experiencia" filter_experience_senior: "Senior" filter_experience_junior: "Junior" - filter_experience_recent_grad: "Recien Graduado" - filter_experience_student: "Estudiante Universitario" + filter_experience_recent_grad: "Recén Graduado" + filter_experience_student: "Estudante Universitario" filter_results: "notas" start_hiring: "Comenzar a contratar." - reasons: "Tres razones por las que deberias contratar a traves de nosotros:" - everyone_looking: "Todo el mundo aqui esta buscando su proxima oportunidad." + reasons: "Tres razóns polas que deberías contratar a través de nos:" + everyone_looking: "Todo o mundo aquí está buscando a súa proxima oportunidade." # everyone_looking_blurb: "Forget about 20% LinkedIn InMail response rates. Everyone that we list on this site wants to find their next position and will respond to your request for an introduction." - weeding: "Sientate; nosotros hemos hecho el trabajo por ti." - weeding_blurb: "Todos los jugadores que ponemos en la lista ha sido seguido por sus habilidades tecnicas. Tambien hacemos llamadas de telefono para los candidatos seleccionados y haz notas en sus perfiles para ahorrar tiempo." + weeding: "Séntate; nos fixemos o traballo por ti." + weeding_blurb: "Todos os xogadores que poñemos na lista foron seguidos polas súas habilidades técnicas. Tamén facemos chamadas de teléfono para os candidatos seleccionados e anotamos nos seus perfiles para aforrar tempo." # pass_screen: "They will pass your technical screen." # pass_screen_blurb: "Review each candidate's code before reaching out. One employer found that 5x as many of our devs passed their technical screen than hiring from Hacker News." - make_hiring_easier: "Hacer mi contratacion mas facil, por favor." - what: "¿Qué es CodeCombat?" + make_hiring_easier: "Facer a miña contratación máis doada, por favor." + what: "Que é CodeCombat?" # what_blurb: "CodeCombat is a multiplayer browser programming game. Players write code to control their forces in battle against other developers. Our players have experience with all major tech stacks." - cost: "Cuanto cobramos?" - cost_blurb: "Cobramos el 15% del salario del primer año y ofrecemos reembolso del 100% del dinero durante 90 dias. No cobramos a los candidatos que ya estan siendo entrevistados en tu compañia." - candidate_name: "Nombre" + cost: "Canto cobramos?" + cost_blurb: "Cobramos o 15% do salario do primeiro ano e ofrecemos reembolso do 100% do diñeiro durante 90 días. Non cobramos aos candidatos que xa están sendo entrevistados na túa compañia." + candidate_name: "Nome" candidate_location: "Ubicación" candidate_looking_for: "Buscando" candidate_role: "Rol" - candidate_top_skills: "Mejores Habilidades" - candidate_years_experience: "Años Exp" + candidate_top_skills: "Mellores Habilidades" + candidate_years_experience: "Anos Exp" candidate_last_updated: "Última actualización" - candidate_who: "Quien" - featured_developers: "Desarrolladores Destacados" - other_developers: "Otros Desarrolladores" - inactive_developers: "Desarrolladores Inactivos" + candidate_who: "Quen" + featured_developers: "Desenvolvedores Destacados" + other_developers: "Otros Desenvolvedores" + inactive_developers: "Desenvolvedores Inactivos" admin: - av_espionage: "Espionage" # Really not important to translate /admin controls. - av_espionage_placeholder: "Email o Nombre de usuario" + av_espionage: "Espionaxe" # Really not important to translate /admin controls. + av_espionage_placeholder: "Correo electrónico ou Nome de usuario" av_usersearch: "Buscar Usuarios" - av_usersearch_placeholder: "Email, nombre de usuario, nombre, lo que sea" + av_usersearch_placeholder: "Correo electrónico, nome de usuario, nome, o que sexa" av_usersearch_search: "Buscar" av_title: "Vista de administrador" av_entities_sub_title: "Entidades" av_entities_users_url: "Usuarios" av_entities_active_instances_url: "Instancias Activas" - av_entities_employer_list_url: "Lista de empleados" + av_entities_employer_list_url: "Lista de empregados" av_entities_candidates_list_url: "Lista de Candidatos" - av_entities_user_code_problems_list_url: "Lista de Problemas de Codigo del Usuario" - av_other_sub_title: "Otros" + av_entities_user_code_problems_list_url: "Lista de Problemas de Código do Usuario" + av_other_sub_title: "Outros" av_other_debug_base_url: "Base (para debugging base.jade)" u_title: "Lista de Usuarios" - ucp_title: "Problemas de Codigo del Usuario" - lg_title: "Últimos Juegos" + ucp_title: "Problemas de Código do Usuario" + lg_title: "Últimos Xogos" clas: "CLAs" diff --git a/app/locale/he.coffee b/app/locale/he.coffee index 4a4ad3fb4..bb5334e44 100644 --- a/app/locale/he.coffee +++ b/app/locale/he.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/hi.coffee b/app/locale/hi.coffee index ec55e8299..3dee7b900 100644 --- a/app/locale/hi.coffee +++ b/app/locale/hi.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/hu.coffee b/app/locale/hu.coffee index faeb85bdf..6d04e18b4 100644 --- a/app/locale/hu.coffee +++ b/app/locale/hu.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t restart: "Előlről" goals: "Célok" # goal: "Goal" +# running: "Running..." success: "Sikerült!" incomplete: "Hiányos" timed_out: "Kifutottál az időből" # failing: "Failing" action_timeline: "Akció - Idővonal" click_to_select: "Kattints egy egységre, hogy kijelöld!" +# reload: "Reload" reload_title: "Újra kezded mindet?" reload_really: "Biztos vagy benne, hogy előlről szeretnéd kezdeni az egész pályát?" reload_confirm: "Előlről az egészet" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t tome_minion_spells: "Egységeid varázslatai" # Only in old-style levels. tome_read_only_spells: "Csak olvasható varázslatok" # Only in old-style levels. tome_other_units: "Egyéb egységek" # Only in old-style levels. - tome_cast_button_castable: "Bocsáss rá varázslatot!" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Varázslat folyamatban" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Varázslat végrehajtva." # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t tome_select_a_thang: "Válassz ki valakit " tome_available_spells: "Elérhető varázslatok" # tome_your_skills: "Your Skills" - hud_continue: "Folytatás (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" time_current: "Most:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/id.coffee b/app/locale/id.coffee index bf061121a..f621c3506 100644 --- a/app/locale/id.coffee +++ b/app/locale/id.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/it.coffee b/app/locale/it.coffee index a309d0f9b..b06ae7188 100644 --- a/app/locale/it.coffee +++ b/app/locale/it.coffee @@ -13,14 +13,14 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t nav: play: "Livelli" # The top nav bar entry where players choose which levels to play -# community: "Community" + community: "Comunità" editor: "Editor" blog: "Blog" forum: "Forum" account: "Account" profile: "Profilo" stats: "Statistiche" -# code: "Code" +# code: "Codice" admin: "Amministratore" # Only shows up when you are an admin home: "Pagina iniziale" contribute: "Contribuisci" @@ -28,7 +28,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t about: "Informazioni" contact: "Contatti" twitter_follow: "Segui" -# teachers: "Teachers" + teachers: "Docenti" modal: close: "Chiudi" @@ -50,21 +50,22 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t spectate: "Spettatore" # Ladder page players: "giocatori" # Hover over a level on /play hours_played: "ore di gioco" # Hover over a level on /play -# items: "Items" # Tooltip on item shop button from /play -# unlock: "Unlock" # For purchasing items and heroes -# confirm: "Confirm" -# owned: "Owned" # For items you own -# locked: "Locked" + items: "Oggetti" # Tooltip on item shop button from /play + unlock: "Sblocca" # For purchasing items and heroes + confirm: "Conferma" + owned: "In tuo possesso" # For items you own + locked: "Bloccato" + available: "Disponibile" # skills_granted: "Skills Granted" # Property documentation details -# heroes: "Heroes" # Tooltip on hero shop button from /play + heroes: "Eroi" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play -# account: "Account" # Tooltip on account button from /play -# settings: "Settings" # Tooltip on settings button from /play -# next: "Next" # Go from choose hero to choose inventory before playing a level -# change_hero: "Change Hero" # Go back from choose inventory to choose hero + account: "Account" # Tooltip on account button from /play + settings: "Impostazioni" # Tooltip on settings button from /play + next: "Procedi" # Go from choose hero to choose inventory before playing a level + change_hero: "Cambia Eroe" # Go back from choose inventory to choose hero # choose_inventory: "Equip Items" -# older_campaigns: "Older Campaigns" -# anonymous: "Anonymous Player" + older_campaigns: "Campagne precedenti" + anonymous: "Giocatore Anonimo" level_difficulty: "Difficoltà: " campaign_beginner: "Campagne per principianti" choose_your_level: "Scegli il tuo livello" # The rest of this section is the old play view at /play-old and isn't very important. @@ -81,8 +82,8 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t campaign_player_created_description: "... nei quali affronterai la creatività dei tuoi compagni Stregoni Artigiani." campaign_classic_algorithms: "Algoritmi classici" # campaign_classic_algorithms_description: "... in which you learn the most popular algorithms in Computer Science." -# campaign_forest: "Forest Campaign" -# campaign_dungeon: "Dungeon Campaign" + campaign_forest: "Campagna nella Foresta" + campaign_dungeon: "Campagna nelle Segrete" login: sign_up: "Crea account" @@ -108,13 +109,13 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t send_password: "Invia password di recupero" # recovery_sent: "Recovery email sent." -# items: -# primary: "Primary" -# secondary: "Secondary" -# armor: "Armor" -# accessories: "Accessories" -# misc: "Misc" -# books: "Books" + items: + primary: "Primario" + secondary: "Secondario" + armor: "Armatura" + accessories: "Accessori" + misc: "Varie" + books: "Libri" common: loading: "Caricamento in corso..." @@ -136,17 +137,17 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t general: and: "e" name: "Nome" -# date: "Date" + date: "Data" body: "Testo" version: "Versione" -# commit_msg: "Commit Message" + commit_msg: "Messaggio del Commit" # version_history: "Version History" # version_history_for: "Version History for: " -# result: "Result" + result: "Risultato" results: "Risultati" description: "Descrizione" or: "o" -# subject: "Subject" + subject: "Oggetto" email: "Email" password: "Password" message: "Messaggio" @@ -158,11 +159,11 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t score: "Punteggio" win: "Vittoria" loss: "Sconfitta" -# tie: "Tie" + tie: "Pareggio" easy: "Facile" medium: "Medio" hard: "Difficile" -# player: "Player" + player: "Giocatore" units: second: "secondo" @@ -183,19 +184,21 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t play_level: done: "Fatto" home: "Pagina iniziale" # Not used any more, will be removed soon. -# level: "Level" # Like "Level: Dungeons of Kithgard" + level: "Livello" # Like "Level: Dungeons of Kithgard" # skip: "Skip" game_menu: "Menu" guide: "Guida" restart: "Ricomincia" goals: "Obiettivi" -# goal: "Goal" -# success: "Success!" + goal: "Obiettivo" + running: "Eseguo..." + success: "Successo!" incomplete: "Incompleto" timed_out: "Tempo Scaduto" # failing: "Failing" action_timeline: "Barra temporale delle azioni" click_to_select: "Clicca un'unità per selezionarla." + reload: "Ricarica" reload_title: "Ricarica tutto il codice?" reload_really: "Sei sicuro di voler ricominciare il livello?" reload_confirm: "Ricarica tutto" @@ -205,7 +208,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t victory_sign_up_poke: "Vuoi ricevere le ultime novità per email? Crea un account gratuito e ti terremo aggiornato!" victory_rate_the_level: "Vota il livello: " # Only in old-style levels. # victory_return_to_ladder: "Return to Ladder" -# victory_play_continue: "Continue" + victory_play_continue: "Continua" # victory_play_skip: "Skip Ahead" victory_play_next_level: "Gioca il prossimo livello" # victory_play_more_practice: "More Practice" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t tome_minion_spells: "Incantesimi dei tuoi seguaci" # Only in old-style levels. tome_read_only_spells: "Incantesimi in sola lettura" # Only in old-style levels. tome_other_units: "Altre unità" # Only in old-style levels. - tome_cast_button_castable: "Lancia" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Lanciando" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Incantesimi" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t tome_select_a_thang: "Seleziona qualcuno per " tome_available_spells: "Incantesimi disponibili" # tome_your_skills: "Your Skills" - hud_continue: "Continua (premi Maiusc-Spazio)" -# hud_continue_short: "Continue" +# tome_current_method: "Current Method" + hud_continue_short: "Continua" # code_saved: "Code Saved" skip_tutorial: "Salta (esc)" # keyboard_shortcuts: "Key Shortcuts" loading_ready: "Pronto!" # loading_start: "Start Level" + problem_alert_title: "Sistema il codice" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -276,11 +277,10 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # tip_hofstadters_law: "Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law." # tip_premature_optimization: "Premature optimization is the root of all evil. - Donald Knuth" # tip_brute_force: "When in doubt, use brute force. - Ken Thompson" - customize_wizard: "Personalizza stregone" + customize_wizard: "Personalizza il mago" game_menu: inventory_tab: "Inventario" - choose_hero_tab: "Ricomincia Livello" save_load_tab: "Salva/Carico" options_tab: "Opzioni" guide_tab: "Guida" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t enter: "Invio" escape: "Esc" shift: "Maiusc" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t diplomat_launch_url: "lancio di ottobre" diplomat_introduction_suf: "è che c'è un notevole interesse per CodeCombat negli altri paesi, in particolare in Brasile! Stiamo costruendo un corpo di traduttori per trasformare liste di parole in altre parole, per rendere CodeCombat accessibile il più possibile in tutto il mondo. Se ti piace l'idea di sbirciare nei contenuti futuri e di portare questi livelli ai tuoi connazionali il più presto possibile, questa categoria potrebbe essere la tua." diplomat_attribute_1: "Competenza in inglese e nella lingua in cui vorresti tradurre. Per trasferire idee complesse è importante avere una solida capacità in entrambe!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " diplomat_github_url: "su GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/ja.coffee b/app/locale/ja.coffee index 31621f110..1ee79cf4d 100644 --- a/app/locale/ja.coffee +++ b/app/locale/ja.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", restart: "再始動" goals: "目標" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "アクション・タイムライン" click_to_select: "ユニットを左クリックで選択してください" +# reload: "Reload" reload_title: "コードを再読み込ますか?" reload_really: "レベルをリセットします。よろしいですか?" reload_confirm: "リセットする" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", tome_minion_spells: "操作できるキャラクターの呪文" # Only in old-style levels. tome_read_only_spells: "読込専用の呪文" # Only in old-style levels. tome_other_units: "その他のユニット" # Only in old-style levels. - tome_cast_button_castable: "キャスト" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "キャスト中" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "呪文をキャスト" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", tome_select_a_thang: "誰かを選択: " tome_available_spells: "利用できる呪文" # tome_your_skills: "Your Skills" - hud_continue: "続く (Shift+Spaceキー)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "スキップ (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/ko.coffee b/app/locale/ko.coffee index e45b4aa41..72a6be982 100644 --- a/app/locale/ko.coffee +++ b/app/locale/ko.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t restart: "재시작" goals: "목표" # goal: "Goal" +# running: "Running..." success: "성공!" incomplete: "목표 미완료" timed_out: "제한 시간 초과" failing: "다시 한번 더 도전해보세요." action_timeline: "액션 타임라인" click_to_select: "유닛을 선택하기 위해서 유닛을 마우스로 클릭하세요." +# reload: "Reload" reload_title: "모든 코드가 다시 로딩 되었나요?" reload_really: "모든 레벨 초기화합니다. 확실한가요?" reload_confirm: "모두 초기화" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t tome_minion_spells: "미니언의 마법" # Only in old-style levels. tome_read_only_spells: "읽기 전용 마법" # Only in old-style levels. tome_other_units: "다른 유닛들" # Only in old-style levels. - tome_cast_button_castable: "마법 캐스팅" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "캐스팅 중" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "마법 캐스팅" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t tome_select_a_thang: "누군가를 선택하세요. " tome_available_spells: "사용 가능한 마법" # tome_your_skills: "Your Skills" - hud_continue: "계속진행 (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "넘기기 (esc)" keyboard_shortcuts: "단축키" loading_ready: "준비!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t io_blurb: "간단하지만 아직 잘 알려지지 않은 언어." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t enter: "엔터" escape: "Esc" # shift: "Shift" - cast_spell: "현재 상태의 주문을 겁니다." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/lt.coffee b/app/locale/lt.coffee index ba0a9a82c..18de006bd 100644 --- a/app/locale/lt.coffee +++ b/app/locale/lt.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/ms.coffee b/app/locale/ms.coffee index 2c509c052..8b4381775 100644 --- a/app/locale/ms.coffee +++ b/app/locale/ms.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/nb.coffee b/app/locale/nb.coffee index 3e7935278..cf5cda7dd 100644 --- a/app/locale/nb.coffee +++ b/app/locale/nb.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details heroes: "Helter" # Tooltip on hero shop button from /play achievements: "Oppnåelser" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg restart: "Start på nytt" goals: "Mål" goal: "Mål" +# running: "Running..." success: "Vellyket!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "Hendelsestidslinje" click_to_select: "Klikk på en enhet for å velge den." +# reload: "Reload" reload_title: "Laste All Koden på Nytt?" reload_really: "Er du sikker på at du vil laste dette nivået på nytt, tilbake til begynnelsen?" reload_confirm: "Last Alle på Nytt" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg tome_minion_spells: "Din Minions' Trylleformularer" # Only in old-style levels. tome_read_only_spells: "Kun-Lesbare Trylleformularer" # Only in old-style levels. tome_other_units: "Andre Enheter" # Only in old-style levels. - tome_cast_button_castable: "Kast" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Kaster" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Kast Trylleformular" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg tome_select_a_thang: "Velg Noe for å " tome_available_spells: "Tilgjenglige Trylleformularer" # tome_your_skills: "Your Skills" - hud_continue: "Fortsett (trykk shift-mellomrom)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" code_saved: "Kode lagret" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/nl-BE.coffee b/app/locale/nl-BE.coffee index aade1dc22..691396d77 100644 --- a/app/locale/nl-BE.coffee +++ b/app/locale/nl-BE.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: restart: "Herstarten" goals: "Doelen" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "Actie tijdlijn" click_to_select: "Klik op een eenheid om deze te selecteren." +# reload: "Reload" reload_title: "Alle Code Herladen?" reload_really: "Weet je zeker dat je dit level tot het begin wilt herladen?" reload_confirm: "Herlaad Alles" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: tome_minion_spells: "Jouw Minions' Spreuken" # Only in old-style levels. tome_read_only_spells: "Read-Only Spreuken" # Only in old-style levels. tome_other_units: "Andere Eenheden" # Only in old-style levels. - tome_cast_button_castable: "Uitvoeren" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Aan het uitvoeren" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Spreuk uitvoeren" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: tome_select_a_thang: "Selecteer Iemand voor " tome_available_spells: "Beschikbare spreuken" # tome_your_skills: "Your Skills" - hud_continue: "Ga verder (druk shift-space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Overslaan (esc)" # keyboard_shortcuts: "Key Shortcuts" loading_ready: "Klaar!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" time_current: "Nu:" time_total: "Maximum:" time_goto: "Ga naar:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: diplomat_launch_url: "release in oktober" diplomat_introduction_suf: "dan is het wel dat er een enorme belangstelling is voor CodeCombat in andere landen, vooral Brazilië! We zijn een groep van vertalers aan het creëren dat ijverig de ene set woorden in de andere omzet om CodeCombat zo toegankelijk mogelijk te maken in de hele wereld. Als jij het leuk vindt glimpsen op te vangen van aankomende content en deze levels zo snel mogelijk naar je landgenoten te krijgen, dan is dit de klasse voor jou." diplomat_attribute_1: "Vloeiend Engels en de taal waar naar je wilt vertalen kunnen spreken. Wanneer je moeilijke ideeën wilt overbrengen, is het belangrijk beide talen goed te begrijpen!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "Vind van jouw taal het locale bestand " diplomat_github_url: "op GitHub" diplomat_join_suf_github: ", edit het online, en submit een pull request. Daarnaast kun je hieronder aanvinken als je up-to-date wilt worden gehouden met nieuwe internationalisatie-ontwikkelingen." diff --git a/app/locale/nl-NL.coffee b/app/locale/nl-NL.coffee index 77089f75d..16b26b2bb 100644 --- a/app/locale/nl-NL.coffee +++ b/app/locale/nl-NL.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription restart: "Herstarten" goals: "Doelen" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "Actie tijdlijn" click_to_select: "Klik op een eenheid om deze te selecteren." +# reload: "Reload" reload_title: "Alle Code Herladen?" reload_really: "Weet je zeker dat je dit level tot het begin wilt herladen?" reload_confirm: "Herlaad Alles" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription tome_minion_spells: "Jouw Minions' Spreuken" # Only in old-style levels. tome_read_only_spells: "Read-Only Spreuken" # Only in old-style levels. tome_other_units: "Andere Eenheden" # Only in old-style levels. - tome_cast_button_castable: "Uitvoeren" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Aan het uitvoeren" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Spreuk uitvoeren" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription tome_select_a_thang: "Selecteer Iemand voor " tome_available_spells: "Beschikbare spreuken" # tome_your_skills: "Your Skills" - hud_continue: "Ga verder (druk shift-spatie)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Overslaan (esc)" # keyboard_shortcuts: "Key Shortcuts" loading_ready: "Klaar!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" time_current: "Nu:" time_total: "Maximum:" time_goto: "Ga naar:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription diplomat_launch_url: "release in oktober" diplomat_introduction_suf: "dan is het wel dat er een enorme belangstelling is voor CodeCombat in andere landen, vooral Brazilië! We zijn een groep van vertalers aan het creëren dat ijverig de ene set woorden in de andere omzet om CodeCombat zo toegankelijk mogelijk te maken in de hele wereld. Als jij het leuk vindt glimpsen op te vangen van aankomende content en deze levels zo snel mogelijk naar je landgenoten te krijgen, dan is dit de klasse voor jou." diplomat_attribute_1: "Vloeiend Engels en de taal waar naar je wilt vertalen kunnen spreken. Wanneer je moeilijke ideeën wilt overbrengen, is het belangrijk beide talen goed te begrijpen!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "Vind van jouw taal het locale bestand " diplomat_github_url: "op GitHub" diplomat_join_suf_github: ", edit het online, en submit een pull request. Daarnaast kun je hieronder aanvinken als je up-to-date wilt worden gehouden met nieuwe internationalisatie-ontwikkelingen." diff --git a/app/locale/nn.coffee b/app/locale/nn.coffee index c1a763d8f..16f81e91f 100644 --- a/app/locale/nn.coffee +++ b/app/locale/nn.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/no.coffee b/app/locale/no.coffee index a4a29e595..7d2a4d68c 100644 --- a/app/locale/no.coffee +++ b/app/locale/no.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr restart: "Start på nytt" goals: "Mål" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "Hendelsestidslinje" click_to_select: "Klikk på en enhet for å velge den." +# reload: "Reload" reload_title: "Laste all koden på nytt?" reload_really: "Er du sikker på at du vil laste dette nivået på nytt, tilbake til begynnelsen?" reload_confirm: "Last alle på nytt" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr tome_minion_spells: "Din Minions' Trylleformularer" # Only in old-style levels. tome_read_only_spells: "Kun-lesbare trylleformularer" # Only in old-style levels. tome_other_units: "Andre enheter" # Only in old-style levels. - tome_cast_button_castable: "Kast" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Kaster" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Kast trylleformular" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr tome_select_a_thang: "Velg noe for å " tome_available_spells: "Tilgjenglige trylleformularer" # tome_your_skills: "Your Skills" - hud_continue: "Fortsett (trykk shift+mellomrom)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/pl.coffee b/app/locale/pl.coffee index 976047465..7234766cd 100644 --- a/app/locale/pl.coffee +++ b/app/locale/pl.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish restart: "Zacznij od nowa" goals: "Cele" # goal: "Goal" +# running: "Running..." success: "Sukces!" incomplete: "Niekompletne" timed_out: "Czas minął" failing: "Niepowodzenie" action_timeline: "Oś czasu" click_to_select: "Kliknij jednostkę, by ją zaznaczyć." +# reload: "Reload" reload_title: "Przywrócić cały kod?" reload_really: "Czy jesteś pewien, że chcesz przywrócić kod startowy tego poziomu?" reload_confirm: "Przywróć cały kod" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish tome_minion_spells: "Czary twojego podopiecznego" # Only in old-style levels. tome_read_only_spells: "Czary tylko do odczytu" # Only in old-style levels. tome_other_units: "Inne jednostki" # Only in old-style levels. - tome_cast_button_castable: "Rzuć czar" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Rzucam czar" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Rzucenie czaru" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish tome_select_a_thang: "Wybierz kogoś do " tome_available_spells: "Dostępne czary" # tome_your_skills: "Your Skills" - hud_continue: "Kontynuuj (Shift + spacja)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Pomiń (esc)" keyboard_shortcuts: "Skróty klawiszowe" loading_ready: "Gotowy!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" time_current: "Teraz:" # time_total: "Max:" time_goto: "Idź do:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish game_menu: inventory_tab: "Ekwipunek" - choose_hero_tab: "Uruchom ponownie poziom" save_load_tab: "Zapisz/Wczytaj" options_tab: "Opcje" guide_tab: "Przewodnik" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish io_blurb: "Prosty lecz nieznany." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish # enter: "Enter" # escape: "Escape" # shift: "Shift" - cast_spell: "Rzuć aktualny czar." +# run_code: "Run current code." run_real_time: "Uruchom \"na żywo\"." continue_script: "Kontynuuj ostatni skrypt." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish diplomat_launch_url: "otwarcia w październiku" diplomat_introduction_suf: ", to jest nią informacja o znacznym zainteresowaniu CodeCombat w innych krajach. Tworzymy zespół tłumaczy chętnych do przemieniania zestawów słów w inne zestawy słów, aby CodeCombat było tak dostępne dla całego świata, jak to tylko możliwe. Jeśli chciabyś mieć wgląd w nadchodzącą zawartość i umożliwić swoim krajanom granie w najnowsze poziomy, ta klasa może być dla ciebie." diplomat_attribute_1: "Biegła znajomość angielskiego oraz języka, na który chciałbyś tłumaczyć. Kiedy przekazujesz skomplikowane idee, dobrze mieć płynność w obu z nich!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "Znajdź plik lokalizacyjny dla wybranego języka " diplomat_github_url: "na GitHubie" diplomat_join_suf_github: ", edytuj go online i wyślij pull request. Do tego, zaznacz kratkę poniżej, aby być na bieżąco z naszym międzynarodowym rozwojem!" diff --git a/app/locale/pt-BR.coffee b/app/locale/pt-BR.coffee index 02e97eb28..915f3ef28 100644 --- a/app/locale/pt-BR.coffee +++ b/app/locale/pt-BR.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details heroes: "Heróis" # Tooltip on hero shop button from /play achievements: "Conquistas" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: restart: "Reiniciar" goals: "Objetivos" goal: "Objetivo" +# running: "Running..." success: "Sucesso!" incomplete: "Incompleto" timed_out: "Tempo esgotado" failing: "Falta" action_timeline: "Linha do Tempo das Ações" click_to_select: "Clique em um personagem para selecioná-lo." +# reload: "Reload" reload_title: "Recarregar Todo o Código?" reload_really: "Você tem certeza que quer reiniciar o estágio?" reload_confirm: "Recarregar Tudo" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: tome_minion_spells: "Magias dos seus subordinados" # Only in old-style levels. tome_read_only_spells: "Magias não editáveis" # Only in old-style levels. tome_other_units: "Outras Unidades" # Only in old-style levels. - tome_cast_button_castable: "Lançar" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Conjurando" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Feitiço" # Temporary, if tome_cast_button_ran isn't translated. tome_cast_button_run: "Rodar" tome_cast_button_running: "Rodando" tome_cast_button_ran: "Encerrado" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: tome_select_a_thang: "Selecione alguém para " tome_available_spells: "Feitiços Disponíveis" tome_your_skills: "Suas habilidades" - hud_continue: "Continue (tecle Shift+Space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Pular (esc)" keyboard_shortcuts: "Teclas de atalho" loading_ready: "Pronto!" loading_start: "Iniciar fase" +# problem_alert_title: "Fix Your Code" time_current: "Agora:" time_total: "Máximo:" time_goto: "Ir para:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: game_menu: inventory_tab: "Inventário" - choose_hero_tab: "Reiniciar Nível" save_load_tab: "Salvar/Carregar" options_tab: "Opções" guide_tab: "Guia" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: choose_hero: "Escolha seu Herói" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: io_blurb: "Simples mas obscura." status: "Status" weapons: "Armas" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" health: "Vida" speed: "Velocidade" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: enter: "Enter" escape: "Esc" shift: "Shift" - cast_spell: "Lançar feitiço atual." +# run_code: "Run current code." run_real_time: "Rodar em tempo real." continue_script: "Pular script atual." skip_scripts: "Pular todos os scripts puláveis." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: diplomat_launch_url: "lançamento em Outubro" diplomat_introduction_suf: "é que há um interesse considerável no CodeCombat em outros países, especialmente no Brasil! Estamos construindo um corpo de tradutores ansiosos para transformar um conjunto de palavras em outro conjunto de palavras para tornar o CodeCombat tão acessível em todo o mundo quanto for possível. Se você gosta de obter cenas inéditas do próximo conteúdo e obter esses níveis para os seus compatriotas o mais rápido possível, então esta classe pode ser para você." diplomat_attribute_1: "Fluência no inglês e na língua para a qual você gostaria de traduzir. Ao transmitir idéias complicadas, é importante ter um forte domínio em ambos!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "Encontre o arquivo de sua linguagem " diplomat_github_url: "no GitHub" diplomat_join_suf_github: ", edite-o online, e envie um pull request. Marque também, esta caixa abaixo para se manter atualizado sobre os novos desenvolvimento de internacionalização!" diff --git a/app/locale/pt-PT.coffee b/app/locale/pt-PT.coffee index 353e7053a..5a295507c 100644 --- a/app/locale/pt-PT.coffee +++ b/app/locale/pt-PT.coffee @@ -47,7 +47,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: play: play_as: "Jogar Como" # Ladder page - spectate: "Espectar" # Ladder page + spectate: "Assistir" # Ladder page players: "jogadores" # Hover over a level on /play hours_played: "horas jogadas" # Hover over a level on /play items: "Itens" # Tooltip on item shop button from /play @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: confirm: "Confirmar" owned: "Obtido" # For items you own locked: "Bloqueado" + available: "Disponível" skills_granted: "Habilidades Garantidas" # Property documentation details heroes: "Heróis" # Tooltip on hero shop button from /play achievements: "Conquistas" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: restart: "Reiniciar" goals: "Objetivos" goal: "Objetivo" + running: "A executar..." success: "Sucesso!" incomplete: "Incompletos" timed_out: "Ficaste sem tempo" failing: "A falhar" action_timeline: "Linha do Tempo de Ações" click_to_select: "Clica numa unidade para selecioná-la." + reload: "Recarregar" reload_title: "Recarregar o Código Todo?" reload_really: "Tens a certeza que queres recarregar este nível de volta ao início?" reload_confirm: "Recarregar Tudo" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: tome_minion_spells: "Feitiços dos Seus Minions" # Only in old-style levels. tome_read_only_spells: "Feitiços Apenas de Leitura" # Only in old-style levels. tome_other_units: "Outras Unidades" # Only in old-style levels. - tome_cast_button_castable: "Lançar Feitiço" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "A Lançar" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Feitiço Lançado" # Temporary, if tome_cast_button_ran isn't translated. tome_cast_button_run: "Executar" tome_cast_button_running: "A Executar" tome_cast_button_ran: "Executado" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: tome_select_a_thang: "Seleciona Alguém para " tome_available_spells: "Feitiços Disponíveis" tome_your_skills: "As Tuas Habilidades" - hud_continue: "Continuar (shift-espaço)" + tome_current_method: "Método Atual" hud_continue_short: "Continuar" code_saved: "Código Guardado" skip_tutorial: "Saltar (esc)" keyboard_shortcuts: "Atalhos do Teclado" loading_ready: "Pronto!" loading_start: "Iniciar Nível" + problem_alert_title: "Corrige o Teu Código" time_current: "Agora:" time_total: "Máximo:" time_goto: "Ir para:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: game_menu: inventory_tab: "Inventário" - choose_hero_tab: "Reiniciar Nível" save_load_tab: "Guardar/Carregar" options_tab: "Opções" guide_tab: "Guia" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: should_equip: "(clica duas vezes para equipares)" equipped: "(equipado)" locked: "(bloqueado)" + restricted: "(restrito neste nível)" choose_hero: choose_hero: "Escolhe o Teu Herói" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: io_blurb: "Simples mas obscuro." status: "Estado" weapons: "Armas" + weapons_warrior: "Espadas - Curto Alcance, Sem Magia" + weapons_ranger: "Arcos, Armas - Longo Alcance, Sem Magia" + weapons_wizard: "Varinhas, Bastões - Longo Alcance, Magia" attack: "Ataque" # Can also translate as "Attack" health: "Vida" speed: "Velocidade" @@ -443,8 +447,8 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: enter: "Enter" escape: "Esc" shift: "Shift" - cast_spell: "Lançar feitiço atual." - run_real_time: "Correr em tempo real." + run_code: "Executar código atual." + run_real_time: "Executar em tempo real." continue_script: "Saltar o script atual." skip_scripts: "Saltar todos os scripts saltáveis." toggle_playback: "Alternar entre Jogar e Pausar." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: diplomat_launch_url: "lançamento em Outubro" diplomat_introduction_suf: "é que há um interesse considerável no CodeCombat noutros países! Estamos a construir um exército de tradutores dispostos a transformar um conjunto de palavras noutro conjuto de palavras, para conseguir que o CodeCombat fique o mais acessível quanto posível em todo o mundo. Se gostas de dar espreitadelas a conteúdos futuros e disponibilizar estes níveis para os teus colegas nacionais o mais depressa possível, então esta classe talvez seja para ti." diplomat_attribute_1: "Fluência em Inglês e no idioma para o qual gostarias de traduzir. Quando são tentadas passar ideias complicadas, é importante uma excelente compreensão das duas!" + diplomat_i18n_page_prefix: "Podes começar a traduzir os nossos níveis se fores à nossa" + diplomat_i18n_page: "página de traduções" + diplomat_i18n_page_suffix: ", ou a nossa interface e website no GitHub." diplomat_join_pref_github: "Encontra o ficheiro 'locale' do teu idioma " diplomat_github_url: "no GitHub" diplomat_join_suf_github: ", edita-o online e submete um 'pull request'. Assinala ainda esta caixa abaixo para ficares atualizado em relação a novos desenvolvimentos da internacionalização!" diff --git a/app/locale/ro.coffee b/app/locale/ro.coffee index 32c18c5ee..6c0bed87e 100644 --- a/app/locale/ro.coffee +++ b/app/locale/ro.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman restart: "Restart" goals: "Obiective" # goal: "Goal" +# running: "Running..." success: "Success!" incomplete: "Incomplet" timed_out: "Ai ramas fara timp" failing: "Eşec" action_timeline: "Timeline-ul acțiunii" click_to_select: "Apasă pe o unitate pentru a o selecta." +# reload: "Reload" reload_title: "Reîncarcă tot codul?" reload_really: "Ești sigur că vrei să reîncarci nivelul de la început?" reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman tome_minion_spells: "Vrăjile Minion-ilor tăi" # Only in old-style levels. tome_read_only_spells: "Vrăji Read-Only" # Only in old-style levels. tome_other_units: "Alte unități" # Only in old-style levels. - tome_cast_button_castable: "Aplică Vraja" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Se încarcă" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Aplică Vraja" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman tome_select_a_thang: "Alege pe cineva pentru " tome_available_spells: "Vrăjile disponibile" # tome_your_skills: "Your Skills" - hud_continue: "Continuă (apasă shift-space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Sari peste (esc)" keyboard_shortcuts: "Scurtături Keyboard" loading_ready: "Gata!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman io_blurb: "Simplu dar obscur." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/ru.coffee b/app/locale/ru.coffee index 7d44ac529..554306543 100644 --- a/app/locale/ru.coffee +++ b/app/locale/ru.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi confirm: "Подтвердить" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" skills_granted: "Умение получено" # Property documentation details heroes: "Герои" # Tooltip on hero shop button from /play achievements: "Достижения" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi restart: "Перезапустить" goals: "Цели" goal: "Цель" +# running: "Running..." success: "Успешно!" incomplete: "Не завершено" timed_out: "Время истекло" failing: "Неудача" action_timeline: "График действий" click_to_select: "Выберите персонажа, щёлкнув на нём" +# reload: "Reload" reload_title: "Перезагрузить код полностью?" reload_really: "Вы уверены, что хотите начать уровень сначала?" reload_confirm: "Перезагрузить всё" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi tome_minion_spells: "Заклинания ваших миньонов" # Only in old-style levels. tome_read_only_spells: "Заклинания только для чтения" # Only in old-style levels. tome_other_units: "Другие юниты" # Only in old-style levels. - tome_cast_button_castable: "Читать заклинание" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Заклинание читается" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Заклинание прочитано" # Temporary, if tome_cast_button_ran isn't translated. tome_cast_button_run: "Запустить" tome_cast_button_running: "В процессе" tome_cast_button_ran: "Запущен" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi tome_select_a_thang: "Выбрать кого-нибудь для " tome_available_spells: "Доступные заклинания" tome_your_skills: "Ваши навыки" - hud_continue: "Продолжить (Shift+Пробел)" +# tome_current_method: "Current Method" hud_continue_short: "Продолжить" code_saved: "Код сохранен" skip_tutorial: "Пропуск (Esc)" keyboard_shortcuts: "Горячие клавиши" loading_ready: "Готово!" loading_start: "Начать уровень" +# problem_alert_title: "Fix Your Code" time_current: "Текущее:" time_total: "Максимальное:" time_goto: "Перейти на:" @@ -275,12 +276,11 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi tip_hardware_problem: "В: Сколько программистов нужно, чтобы вкрутить лампочку? О: Нисколько, это проблемы с железом." # tip_hofstadters_law: "Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law." tip_premature_optimization: "Поспешная оптимизация - корень всех зол. - Donald Knuth" -# tip_brute_force: "When in doubt, use brute force. - Ken Thompson" + tip_brute_force: "Когда сомневаешься используй грубую силу. - Кен Томпсон" customize_wizard: "Настройки волшебника" game_menu: inventory_tab: "Инвентарь" - choose_hero_tab: "Перезапустить уровень" save_load_tab: "Сохранить/Загрузить" options_tab: "Настройки" guide_tab: "Руководство" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi should_equip: "(двойной клик чтобы одеть)" equipped: "(выбранный)" locked: "(заблокированный)" + restricted: "(запрещен в этом уровне)" choose_hero: choose_hero: "Выберите героя" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi io_blurb: "Простой, но непонятный." status: "Статус" weapons: "Оружие" + weapons_warrior: "Меч - ближний бой, не магический" + weapons_ranger: "Арбалеты, ружья - дальнобойные, не магические" + weapons_wizard: "Палочки, посохи - дальнобойные, магические" attack: "Урон" # Can also translate as "Attack" health: "Жизнь" speed: "Скорость" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi enter: "Enter" escape: "Escape" # shift: "Shift" - cast_spell: "Произнести текущее заклинание." +# run_code: "Run current code." run_real_time: "Запустить в реальном времени." continue_script: "Продолжить текущий скрипт." skip_scripts: "Пропустить все возможные скрипты." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi diplomat_launch_url: "запуска в октябре" diplomat_introduction_suf: "было то, что есть значительная заинтересованность в CodeCombat в других странах! Мы создаём корпус переводчиков, стремящихся превратить один набор слов в другой набор слов для максимальной доступности CodeCombat по всему миру. Если вы любите видеть контент до официального выхода и получать эти уровни для ваших соотечественников как можно скорее, этот класс для вас." diplomat_attribute_1: "Свободное владение английским языком и языком, на который вы хотели бы переводить. При передаче сложных идей важно иметь сильную хватку в обоих!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "Найдите файл локализации вашего языка " diplomat_github_url: "на GitHub" diplomat_join_suf_github: ", отредактируйте его онлайн и отправьте запрос на подтверждение изменений. Кроме того, установите флажок ниже, чтобы быть в курсе новых разработок интернационализации!" diff --git a/app/locale/sk.coffee b/app/locale/sk.coffee index 8f49f0fab..c4432cb33 100644 --- a/app/locale/sk.coffee +++ b/app/locale/sk.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/sl.coffee b/app/locale/sl.coffee index 97bba0bf1..06b9d25b2 100644 --- a/app/locale/sl.coffee +++ b/app/locale/sl.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/sr.coffee b/app/locale/sr.coffee index d83ece496..b8caf44e1 100644 --- a/app/locale/sr.coffee +++ b/app/locale/sr.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian restart: "Поновно учитавање" goals: "Циљеви" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "Временска линија акције" click_to_select: "Кликни на јединицу да је селектујеш" +# reload: "Reload" reload_title: "Поновно учитавање целог кода?" reload_really: "Да ли сте сигурни да желите да кренете ниво испочетка?" reload_confirm: "Поновно учитавање свега" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian tome_minion_spells: "Чини твојих поданика" # Only in old-style levels. tome_read_only_spells: "Чини које се могу само гледати" # Only in old-style levels. tome_other_units: "Остале јединице" # Only in old-style levels. - tome_cast_button_castable: "Баци" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Бацање" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Баци чини" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian tome_select_a_thang: "Изабери неког за " tome_available_spells: "Доступне чини" # tome_your_skills: "Your Skills" - hud_continue: "Настави (притисни ентер)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/sv.coffee b/app/locale/sv.coffee index eb88e8a66..11e2be2e8 100644 --- a/app/locale/sv.coffee +++ b/app/locale/sv.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr restart: "Börja om" goals: "Mål" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "Händelse-tidslinje" click_to_select: "Klicka på en enhet för att välja den." +# reload: "Reload" reload_title: "Ladda om all kod?" reload_really: "Är du säker på att du vill ladda om nivån från början?" reload_confirm: "Ladda om allt" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr tome_minion_spells: "Dina soldaters förmågor" # Only in old-style levels. tome_read_only_spells: "Skrivskyddade förmågor" # Only in old-style levels. tome_other_units: "Andra enheter" # Only in old-style levels. - tome_cast_button_castable: "Använd besvärjelse" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Besvärjer" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Besvärjelse använd" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr tome_select_a_thang: "Välj någon för " tome_available_spells: "Tillgängliga förmågor" # tome_your_skills: "Your Skills" - hud_continue: "Fortsätt (skift+mellanslag)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Hoppa över (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr diplomat_launch_url: "lanseringen i oktober" diplomat_introduction_suf: "är det att det finns ett stort intresse för CodeCombat i andra länder! Vi bygger en kår av översättare ivriga att förvandla en samling ord till en annan samling ord för att få CodeCombat så tillgänglig i världen som möjligt. Om du gillar att få tjuvkikar på kommande innehåll och att få dessa nivåer till de andra i ditt land så snart som möjligt är det här kanske klassen för dig." diplomat_attribute_1: "Flytande engelska och språket du vill översätta till. När man förmedlar komplicerade idéer är det viktigt att ha ett starkt grepp om båda!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "Hitta ditt språks locale-fil " diplomat_github_url: "på GitHub" diplomat_join_suf_github: ", redigera den online, och skicka en ryckförfrågan. Kryssa också i rutan här nedanför för att hålla dig uppdaterad om nya internationaliseringsutvecklingar." diff --git a/app/locale/th.coffee b/app/locale/th.coffee index 3e0eea623..a8d344b69 100644 --- a/app/locale/th.coffee +++ b/app/locale/th.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra restart: "เริ่มเล่นใหม่" goals: "เป้าหมาย" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/tr.coffee b/app/locale/tr.coffee index 86ebe46d0..8bfc88df7 100644 --- a/app/locale/tr.coffee +++ b/app/locale/tr.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details heroes: "Kahramanlar" # Tooltip on hero shop button from /play achievements: "Başarımlar" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t restart: "Yeniden başlat" goals: "Hedefler" goal: "Amaç" +# running: "Running..." success: "Başarılı!" incomplete: "Tamamlanmamış" timed_out: "Süre bitti" failing: "Başarısız" action_timeline: "Eylem Çizelgesi" click_to_select: "Birimi seçmek için üzerine tıklayın." +# reload: "Reload" reload_title: "Tüm kod yeniden yüklensin mi?" reload_really: "Bu seviyeyi en baştan yüklemek istediğinizden emin misiniz?" reload_confirm: "Tümünü Yeniden Yükle" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t tome_minion_spells: "Minyonlarınızın Büyüleri" # Only in old-style levels. tome_read_only_spells: "Salt Okunur Büyüler" # Only in old-style levels. tome_other_units: "Diğer Birimler" # Only in old-style levels. - tome_cast_button_castable: "Başlatılabilir" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Başlatılıyor" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Başlat" # Temporary, if tome_cast_button_ran isn't translated. tome_cast_button_run: "Çalıştır" tome_cast_button_running: "Çalıştırılıyor" tome_cast_button_ran: "Çalıştırıldı" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t tome_select_a_thang: "Birini seç..." tome_available_spells: "Kullanılabilir Büyüler" tome_your_skills: "Yetenekleriniz" - hud_continue: "Devam (ÜstKarakter+Boşluk)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" code_saved: "Kod Kaydedildi" skip_tutorial: "Atla (ESC)" keyboard_shortcuts: "Klavye Kısayolları" loading_ready: "Hazır!" loading_start: "Seviyeyi Başlat" +# problem_alert_title: "Fix Your Code" time_current: "Şimdi:" time_total: "Max:" time_goto: "Git:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t game_menu: inventory_tab: "Envanter" - choose_hero_tab: "Seviyeyi Yeniden Başlat" save_load_tab: "Kaydet/Yükle" options_tab: "Seçenekler" guide_tab: "Rehber" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: choose_hero: "Kahramanınızı Seçin" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t io_blurb: "Basit fakat anlaşılması güç." status: "Durum" weapons: "Silahlar" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" attack: "Saldırı" # Can also translate as "Attack" health: "Sağlık" speed: "Hız" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t enter: "Enter" escape: "Escape" shift: "ÜstKarakter" - cast_spell: "Geçerli büyüyü çalıştır." +# run_code: "Run current code." run_real_time: "Eşzamanlı çalış." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/uk.coffee b/app/locale/uk.coffee index 1ea6f2116..5ecfb946c 100644 --- a/app/locale/uk.coffee +++ b/app/locale/uk.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "українська мова", englishDesc # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "українська мова", englishDesc restart: "Перезавантажити" goals: "Цілі" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "Лінія часу" click_to_select: "Клікніть на юніті, щоб обрати його." +# reload: "Reload" reload_title: "Перезавантажити весь код?" reload_really: "Ви впевнені, що хочете перезавантажити цей рівень і почати спочатку?" reload_confirm: "Перезавантажити все" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "українська мова", englishDesc tome_minion_spells: "Закляття ваших міньонів" # Only in old-style levels. tome_read_only_spells: "Закляття тільки для читання" # Only in old-style levels. tome_other_units: "Інші юніти" # Only in old-style levels. - tome_cast_button_castable: "Читати закляття" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "Закляття читається" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "Закляття прочитано" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "українська мова", englishDesc tome_select_a_thang: "Оберіть когось для " tome_available_spells: "Доступні закляття" # tome_your_skills: "Your Skills" - hud_continue: "Продовжити (натисніть shift-space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "Пропустити (esc)" # keyboard_shortcuts: "Key Shortcuts" loading_ready: "Готово!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" time_current: "Зараз:" time_total: "Найбільше:" time_goto: "Перейти до:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "українська мова", englishDesc game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "українська мова", englishDesc # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "українська мова", englishDesc # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "українська мова", englishDesc # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "українська мова", englishDesc # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " diplomat_github_url: "на GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/ur.coffee b/app/locale/ur.coffee index 8151df94d..93b665c96 100644 --- a/app/locale/ur.coffee +++ b/app/locale/ur.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/vi.coffee b/app/locale/vi.coffee index d618a8d38..05639daea 100644 --- a/app/locale/vi.coffee +++ b/app/locale/vi.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn restart: "Khởi động lại" goals: "Mục đích" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" click_to_select: "Kích vào đơn vị để chọn nó." +# reload: "Reload" reload_title: "Tải lại tất cả mã?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/zh-HANS.coffee b/app/locale/zh-HANS.coffee index 662d7be75..1a5c29ff3 100644 --- a/app/locale/zh-HANS.coffee +++ b/app/locale/zh-HANS.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details heroes: "英雄" # Tooltip on hero shop button from /play achievements: "成就" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese restart: "重新开始" goals: "目标" goal: "目标" +# running: "Running..." success: "成功!" incomplete: "未完成" timed_out: "运行超时" failing: "失败" action_timeline: "行动时间轴" click_to_select: "点击选择一个单元。" +# reload: "Reload" reload_title: "重载所有代码?" reload_really: "确定重载这一关,返回开始处吗?" reload_confirm: "重载所有" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese tome_minion_spells: "助手的咒语" # Only in old-style levels. tome_read_only_spells: "只读的咒语" # Only in old-style levels. tome_other_units: "其他单元" # Only in old-style levels. - tome_cast_button_castable: "发动" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "发动中" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "发动咒语" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese tome_select_a_thang: "选择人物来 " tome_available_spells: "可用的法术" tome_your_skills: "你的技能" - hud_continue: "继续(按 Shift-空格)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "跳过(esc)" keyboard_shortcuts: "快捷键" loading_ready: "载入完成!" loading_start: "关卡开始" +# problem_alert_title: "Fix Your Code" time_current: "现在:" time_total: "最大:" time_goto: "跳到:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese game_menu: # inventory_tab: "Inventory" - choose_hero_tab: "重新开始关卡" save_load_tab: "保存/打开" options_tab: "设置" guide_tab: "使用向导" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" choose_hero: choose_hero: "请选择您的英雄" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese io_blurb: "简单而晦涩。" status: "状态" weapons: "武器" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" health: "健康值" speed: "速度" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese enter: "回车" # escape: "Escape" # shift: "Shift" - cast_spell: "演示当前咒语" +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese diplomat_launch_url: "十月的发布" diplomat_introduction_suf: "中得到了什么启发:那就是全世界的人都对 CodeCombat 很感兴趣。我们召集了一群翻译者,尽快地把网站上的信息翻译成各国文字。如果你对即将发布的新内容很感兴趣,想让你的国家的人们玩上,就快来成为外交官吧。" diplomat_attribute_1: "既会说流利的英语,也熟悉自己的语言。编程是一件很复杂的事情,而要翻译复杂的概念,你必须对两种语言都在行!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "在" diplomat_github_url: " GitHub " diplomat_join_suf_github: "找到你的语言文件 (中文的是: codecombat/app/locale/zh-HNAS.coffee),在线编辑它,然后提交一个合并请求。同时,选中下面这个复选框来关注最新的国际化开发!" diff --git a/app/locale/zh-HANT.coffee b/app/locale/zh-HANT.coffee index f6c3e4343..fdd2690f2 100644 --- a/app/locale/zh-HANT.coffee +++ b/app/locale/zh-HANT.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese restart: "重新開始" goals: "目標" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "行動時間軸" click_to_select: "點擊選擇一個單元。" +# reload: "Reload" reload_title: "重新載入程式碼?" reload_really: "確定重設所有的程式碼?" reload_confirm: "重設所有程式碼" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese tome_minion_spells: "助手的咒語" # Only in old-style levels. tome_read_only_spells: "唯讀的咒語" # Only in old-style levels. tome_other_units: "其他單位" # Only in old-style levels. - tome_cast_button_castable: "發動" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "發動中" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "咒語" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese tome_select_a_thang: "選擇一個人物來施放" tome_available_spells: "可用的法術" # tome_your_skills: "Your Skills" - hud_continue: "繼續 (按 shift-空格)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/zh-WUU-HANS.coffee b/app/locale/zh-WUU-HANS.coffee index ba06dd188..e11a01355 100644 --- a/app/locale/zh-WUU-HANS.coffee +++ b/app/locale/zh-WUU-HANS.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # restart: "Restart" # goals: "Goals" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" # action_timeline: "Action Timeline" # click_to_select: "Click on a unit to select it." +# reload: "Reload" # reload_title: "Reload All Code?" # reload_really: "Are you sure you want to reload this level back to the beginning?" # reload_confirm: "Reload All" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # tome_minion_spells: "Your Minions' Spells" # Only in old-style levels. # tome_read_only_spells: "Read-Only Spells" # Only in old-style levels. # tome_other_units: "Other Units" # Only in old-style levels. -# tome_cast_button_castable: "Cast Spell" # Temporary, if tome_cast_button_run isn't translated. -# tome_cast_button_casting: "Casting" # Temporary, if tome_cast_button_running isn't translated. -# tome_cast_button_cast: "Spell Cast" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # tome_select_a_thang: "Select Someone for " # tome_available_spells: "Available Spells" # tome_your_skills: "Your Skills" -# hud_continue: "Continue (shift+space)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" # skip_tutorial: "Skip (esc)" # keyboard_shortcuts: "Key Shortcuts" # loading_ready: "Ready!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # diplomat_launch_url: "launch in October" # diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." # diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." # diplomat_join_pref_github: "Find your language locale file " # diplomat_github_url: "on GitHub" # diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" diff --git a/app/locale/zh-WUU-HANT.coffee b/app/locale/zh-WUU-HANT.coffee index 7d3ecbaee..50435f3b4 100644 --- a/app/locale/zh-WUU-HANT.coffee +++ b/app/locale/zh-WUU-HANT.coffee @@ -55,6 +55,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio # confirm: "Confirm" # owned: "Owned" # For items you own # locked: "Locked" +# available: "Available" # skills_granted: "Skills Granted" # Property documentation details # heroes: "Heroes" # Tooltip on hero shop button from /play # achievements: "Achievements" # Tooltip on achievement list button from /play @@ -190,12 +191,14 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio restart: "轉來" goals: "目標" # goal: "Goal" +# running: "Running..." # success: "Success!" # incomplete: "Incomplete" # timed_out: "Ran out of time" # failing: "Failing" action_timeline: "行動時間橛" click_to_select: "點選一個單位。" +# reload: "Reload" reload_title: "轉讀取全部個代碼?" reload_really: "準定轉讀取箇關,回轉到扣起頭?" reload_confirm: "轉讀取全部" @@ -221,9 +224,6 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio tome_minion_spells: "下手個咒語" # Only in old-style levels. tome_read_only_spells: "只讀個咒語" # Only in old-style levels. tome_other_units: "各許單元" # Only in old-style levels. - tome_cast_button_castable: "發動" # Temporary, if tome_cast_button_run isn't translated. - tome_cast_button_casting: "徠搭發動" # Temporary, if tome_cast_button_running isn't translated. - tome_cast_button_cast: "發動咒語" # Temporary, if tome_cast_button_ran isn't translated. # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" @@ -234,13 +234,14 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio tome_select_a_thang: "揀人來 " tome_available_spells: "好用個法術" # tome_your_skills: "Your Skills" - hud_continue: "接落去(捺 Shift-空格)" +# tome_current_method: "Current Method" # hud_continue_short: "Continue" # code_saved: "Code Saved" skip_tutorial: "跳過去(Esc)" # keyboard_shortcuts: "Key Shortcuts" loading_ready: "讀取下落!" # loading_start: "Start Level" +# problem_alert_title: "Fix Your Code" time_current: "瑲朞:" time_total: "頂大:" time_goto: "轉到:" @@ -280,7 +281,6 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio game_menu: # inventory_tab: "Inventory" -# choose_hero_tab: "Restart Level" # save_load_tab: "Save/Load" # options_tab: "Options" # guide_tab: "Guide" @@ -301,6 +301,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio # should_equip: "(double-click to equip)" # equipped: "(equipped)" # locked: "(locked)" +# restricted: "(restricted in this level)" # choose_hero: # choose_hero: "Choose Your Hero" @@ -314,6 +315,9 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio # io_blurb: "Simple but obscure." # status: "Status" # weapons: "Weapons" +# weapons_warrior: "Swords - Short Range, No Magic" +# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" +# weapons_wizard: "Wands, Staffs - Long Range, Magic" # attack: "Damage" # Can also translate as "Attack" # health: "Health" # speed: "Speed" @@ -443,7 +447,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio # enter: "Enter" # escape: "Escape" # shift: "Shift" -# cast_spell: "Cast current spell." +# run_code: "Run current code." # run_real_time: "Run in real time." # continue_script: "Continue past current script." # skip_scripts: "Skip past all skippable scripts." @@ -624,6 +628,9 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio diplomat_launch_url: "十月個發佈" diplomat_introduction_suf: "裏向得到解某啓發:佩是全世界個人都對 CodeCombat 興致頭高險。我裏籠來一陣翻譯人,儘話快速畀網站裏個訊息翻譯成各地文字。空是爾對發佈新個內容有興趣,想讓爾個國土裏個人也來攪,快點趒來當外交官。" diplomat_attribute_1: "英語順溜,自己個話也熟。編程是猴煩難個事幹,翻譯囉唆個概念,爾也喫得兩種話都內照!" +# diplomat_i18n_page_prefix: "You can start translating our levels by going to our" +# diplomat_i18n_page: "translations page" +# diplomat_i18n_page_suffix: ", or our interface and website on GitHub." diplomat_join_pref_github: "徠" diplomat_github_url: " GitHub " diplomat_join_suf_github: "尋着爾個語言文件 (吳語是: codecombat/app/locale/zh-WUU-HANT.coffee),徠線編寫渠,隨底提交一個合併請求。同時,選牢下底箇個多選框關注最新個國際化開發!" diff --git a/app/models/Level.coffee b/app/models/Level.coffee index 00e746693..e9e4676b4 100644 --- a/app/models/Level.coffee +++ b/app/models/Level.coffee @@ -97,18 +97,23 @@ module.exports = class Level extends CocoModel placeholdersUsed[placeholderComponent.original] = true placeholderConfig = placeholderComponent.config ? {} if placeholderConfig.pos # Pull in Physical pos x and y + levelThangComponent.config ?= {} levelThangComponent.config.pos ?= {} levelThangComponent.config.pos.x = placeholderConfig.pos.x levelThangComponent.config.pos.y = placeholderConfig.pos.y + levelThangComponent.config.rotation = placeholderConfig.rotation else if placeholderConfig.team # Pull in Allied team + levelThangComponent.config ?= {} levelThangComponent.config.team = placeholderConfig.team else if placeholderConfig.significantProperty # For levels where we cheat on what counts as an enemy + levelThangComponent.config ?= {} levelThangComponent.config.significantProperty = placeholderConfig.significantProperty else if placeholderConfig.programmableMethods # Take the ThangType default Programmable and merge level-specific Component config into it copy = $.extend true, {}, placeholderConfig levelThangComponent.config = _.merge copy, levelThangComponent.config else if placeholderConfig.extraHUDProperties + levelThangComponent.config ?= {} levelThangComponent.config.extraHUDProperties = _.union(levelThangComponent.config.extraHUDProperties ? [], placeholderConfig.extraHUDProperties) if isHero diff --git a/app/models/ThangType.coffee b/app/models/ThangType.coffee index 848c82f29..c59f5797b 100644 --- a/app/models/ThangType.coffee +++ b/app/models/ThangType.coffee @@ -19,6 +19,7 @@ module.exports = class ThangType extends CocoModel 'robot-walker': '5301696ad82649ec2c0c9b0d' 'michael-heasell': '53e126a4e06b897606d38bef' 'ian-elliott': '53e12be0d042f23505c3023b' + 'ninja': '52fc0ed77e01835453bd8f6c' @items: 'simple-boots': '53e237bf53457600003e3f05' urlRoot: '/db/thang.type' @@ -305,7 +306,7 @@ module.exports = class ThangType extends CocoModel ['Warrior', 'Ranger', 'Wizard'] getHeroStats: -> - # Translate from raw hero properties into appropriate display values for the ChooseHeroView. + # Translate from raw hero properties into appropriate display values for the PlayHeroesModal. # Adapted from https://docs.google.com/a/codecombat.com/spreadsheets/d/1BGI1bzT4xHvWA81aeyIaCKWWw9zxn7-MwDdydmB5vw4/edit#gid=809922675 return unless heroClass = @get('heroClass') components = @get('components') or [] @@ -369,6 +370,8 @@ module.exports = class ThangType extends CocoModel attackRange: 'range' shieldDefenseFactor: 'blocks' visualRange: 'range' + throwDamage: 'attack' + throwRange: 'range' }[name] if i18nKey @@ -396,8 +399,16 @@ module.exports = class ThangType extends CocoModel name: name, display: display isSilhouettedItem: -> - # TODO: have items have actual levels instead of just going by their gem count return console.error "Trying to determine whether #{@get('name')} should be a silhouetted item, but it has no gem cost." unless @get 'gems' + console.info "Add (or make sure you have fetched) a tier for #{@get('name')} to more accurately determine whether it is silhouetted." unless @get('tier')? + tier = @get 'tier' + if tier? + return @levelRequiredForItem() > me.level() points = me.get('points') expectedTotalGems = (points ? 0) * 1.5 # Not actually true, but roughly kinda close for tier 0, kinda tier 1 - @get('gems') > (100 + expectedTotalGems) * 2 + @get('gems') > (100 + expectedTotalGems) * 1.2 + + levelRequiredForItem: -> + return console.error "Trying to determine what level is required for #{@get('name')}, but it has no tier." unless @get('tier')? + tier = @get 'tier' + me.constructor.levelForTier(Math.pow(tier, 0.7)) diff --git a/app/models/User.coffee b/app/models/User.coffee index 9fa59cb0f..45cb92827 100644 --- a/app/models/User.coffee +++ b/app/models/User.coffee @@ -63,16 +63,32 @@ module.exports = class User extends CocoModel @expForLevel: (level) -> if level > 1 then Math.ceil Math.exp((level - 1)/ a) * b - c else 0 + @tierFromLevel: (level) -> + # TODO: math + # For now, just eyeball it. + tiersByLevel[Math.min(level, tiersByLevel.length - 1)] + + @levelForTier: (tier) -> + # TODO: math + for tierThreshold, level in tiersByLevel + return level if tierThreshold >= tier + level: -> User.levelFromExp(@get('points')) + tier: -> + User.tierFromLevel @level() + gems: -> gemsEarned = @get('earned')?.gems ? 0 gemsPurchased = @get('purchased')?.gems ? 0 gemsSpent = @get('spent') ? 0 gemsEarned + gemsPurchased - gemsSpent - heroes: -> (me.get('earned')?.heroes ? []).concat(me.get('purchased')?.heroes ? []) + heroes: -> + heroes = (me.get('earned')?.heroes ? []).concat(me.get('purchased')?.heroes ? []).concat([ThangType.heroes.captain, ThangType.heroes.knight]) + heroes = heroes.concat [ThangType.heroes.ninja, ThangType.heroes.librarian] if me.isAdmin() + heroes items: -> (me.get('earned')?.items ? []).concat(me.get('purchased')?.items ? []).concat([ThangType.items['simple-boots']]) levels: -> (me.get('earned')?.levels ? []).concat(me.get('purchased')?.levels ? []) ownsHero: (heroOriginal) -> heroOriginal in @heroes() @@ -91,6 +107,42 @@ module.exports = class User extends CocoModel application.tracker.identify branchingGroup: @branchingGroup unless me.isAdmin() @branchingGroup + getCastButtonTextGroup: -> + # Group 0 is original behavior + unless @castButtonTextGroup? + if me.isAdmin() + @castButtonTextGroup = 0 + else + @castButtonTextGroup = me.get('testGroupNumber') % 7 + application.tracker.identify castButtonTextGroup: @castButtonTextGroup + @castButtonTextGroup + + getDirectFirstGroup: -> + # Group -1 is not participating + # Group 0 is original behavior + # Group 1 goes directly to first level if new user + # Targetting users with testGroupNumber < 128 + unless @directFirstGroup? + if me.isAdmin() or me.get('testGroupNumber') >= 128 + @directFirstGroup = -1 + else + @directFirstGroup = me.get('testGroupNumber') % 2 + application.tracker.identify directFirstGroup: @directFirstGroup + @directFirstGroup + + getExperimentalLangGroup: -> + # Group -1 is not participating + # Group 0 is original behavior + # Group 1 isn't shown experimental languages in hero modal when launching beginner campaign level + # Targetting users with testGroupNumber >= 128 + unless @experimentalLangGroup? + if me.isAdmin() or me.get('testGroupNumber') < 128 + @experimentalLangGroup = -1 + else + @experimentalLangGroup = me.get('testGroupNumber') % 2 + application.tracker.identify experimentalLangGroup: @experimentalLangGroup + @experimentalLangGroup + getHighlightArrowSoundGroup: -> return @highlightArrowGroup if @highlightArrowGroup group = me.get('testGroupNumber') % 8 @@ -110,3 +162,5 @@ module.exports = class User extends CocoModel @kithmazeGroup = 'haunted-kithmaze' if me.isAdmin() application.tracker.identify kithmazeGroup: @kithmazeGroup unless me.isAdmin() @kithmazeGroup + +tiersByLevel = [-1, 0, 0.05, 0.14, 0.18, 0.32, 0.41, 0.5, 0.64, 0.82, 0.91, 1.04, 1.22, 1.35, 1.48, 1.65, 1.78, 1.96, 2.1, 2.24, 2.38, 2.55, 2.69, 2.86, 3.03, 3.16, 3.29, 3.42, 3.58, 3.74, 3.89, 4.04, 4.19, 4.32, 4.47, 4.64, 4.79, 4.96] diff --git a/app/schemas/models/payment.schema.coffee b/app/schemas/models/payment.schema.coffee new file mode 100644 index 000000000..74b6fd80c --- /dev/null +++ b/app/schemas/models/payment.schema.coffee @@ -0,0 +1,27 @@ +c = require './../schemas' + +PaymentSchema = c.object({title: 'Payment', required: []}, { + purchaser: c.objectId(links: [ {rel: 'extra', href: '/db/user/{($)}'} ]) # in case of gifts + recipient: c.objectId(links: [ {rel: 'extra', href: '/db/user/{($)}'} ]) + + service: { enum: ['stripe', 'ios' ]} + amount: { type: 'integer', description: 'Payment in cents.' } + created: c.date({title: 'Created', readOnly: true}) + gems: { type: 'integer', description: 'The number of gems acquired.' } + + ios: c.object({title: 'iOS IAP Data'}, { + transactionID: { type: 'string' } + rawReceipt: { type: 'string' } + localPrice: { type: 'string' } + }) + + stripe: c.object({title: 'Stripe Data'}, { + timestamp: { type: 'integer', description: 'Unique identifier provided by the client, to guard against duplicate payments.' } + transactionID: { type: 'string' } + customerID: { type: 'string' } + }) +}) + +c.extendBasicProperties(PaymentSchema, 'payment') + +module.exports = PaymentSchema diff --git a/app/schemas/models/thang_type.coffee b/app/schemas/models/thang_type.coffee index 08db1e67b..7d74b0ef9 100644 --- a/app/schemas/models/thang_type.coffee +++ b/app/schemas/models/thang_type.coffee @@ -109,6 +109,7 @@ _.extend ThangTypeSchema.properties, terrains: c.array {title: 'Terrains', description: 'If specified, limits this ThangType to levels with matching terrains.', uniqueItems: true}, c.terrainString gems: {type: 'integer', minimum: 0, title: 'Gem Cost', description: 'How many gems this item or hero costs.'} heroClass: {type: 'string', enum: ['Warrior', 'Ranger', 'Wizard'], title: 'Hero Class', description: 'What class this is (if a hero) or is restricted to (if an item). Leave undefined for most items.'} + tier: {type: 'number', minimum: 0, title: 'Tier', description: 'What tier (fractional) this item or hero is in.'} actions: c.object {title: 'Actions', additionalProperties: {$ref: '#/definitions/action'}} soundTriggers: c.object {title: 'Sound Triggers', additionalProperties: c.array({}, {$ref: '#/definitions/sound'})}, say: c.object {format: 'slug-props', additionalProperties: {$ref: '#/definitions/sound'}}, diff --git a/app/schemas/subscriptions/ipad.coffee b/app/schemas/subscriptions/ipad.coffee new file mode 100644 index 000000000..6edf898d2 --- /dev/null +++ b/app/schemas/subscriptions/ipad.coffee @@ -0,0 +1,12 @@ +c = require 'schemas/schemas' + +module.exports = + 'ipad:products': c.object {required: ['products']}, + products: c.array {}, + c.object {}, + gems: { type: 'integer' } + price: { type: 'string' } + id: { type: 'string' } + + 'ipad:iap-complete': c.object {}, + gems: { type: 'integer' } diff --git a/app/schemas/subscriptions/misc.coffee b/app/schemas/subscriptions/misc.coffee index 3800c4ab1..ef4cebc3c 100644 --- a/app/schemas/subscriptions/misc.coffee +++ b/app/schemas/subscriptions/misc.coffee @@ -47,3 +47,8 @@ module.exports = 'supermodel:load-progress-changed': c.object {required: ['progress']}, progress: {type: 'number', minimum: 0, maximum: 1} + + 'buy-gems-modal:update-products': { } + + 'buy-gems-modal:purchase-initiated': c.object {required: ['productID']}, + productID: { type: 'string' } \ No newline at end of file diff --git a/app/schemas/subscriptions/tome.coffee b/app/schemas/subscriptions/tome.coffee index 035961159..b4530a9a8 100644 --- a/app/schemas/subscriptions/tome.coffee +++ b/app/schemas/subscriptions/tome.coffee @@ -85,15 +85,13 @@ module.exports = problems: {type: 'array'} isCast: {type: 'boolean'} - 'tome:thang-list-entry-popover-shown': c.object {title: 'Thang List Entry Popover Shown', description: 'Published when we show the popover for a thang in the master list', required: ['entry']}, - entry: {type: 'object'} - 'tome:spell-shown': c.object {title: 'Spell Shown', description: 'Published when we show a spell', required: ['thang', 'spell']}, thang: {type: 'object'} spell: {type: 'object'} 'tome:change-language': c.object {title: 'Tome Change Language', description: 'Published when the Tome should update its programming language', required: ['language']}, language: {type: 'string'} + reload: {type: 'boolean', description: 'Whether player code should reload to the default when the language changes.'} 'tome:spell-changed-language': c.object {title: 'Spell Changed Language', description: 'Published when an individual spell has updated its code language', required: ['spell']}, spell: {type: 'object'} @@ -126,7 +124,10 @@ module.exports = 'tome:winnability-updated': c.object {title: 'Winnability Updated', description: 'When we think we can now win (or can no longer win), we may want to emphasize the submit button versus the run button (or vice versa), so this fires when we get new goal states (even preloaded goal states) suggesting success or failure change.', required: ['winnable']}, winnable: {type: 'boolean'} - + + # Problem Alert 'tome:show-problem-alert': c.object {title: 'Show Problem Alert', description: 'A problem alert needs to be shown.', required: ['problem']}, problem: {type: 'object'} lineOffsetPx: {type: ['number', 'undefined']} + 'tome:hide-problem-alert': c.object {title: 'Hide Problem Alert'} + 'tome:jiggle-problem-alert': c.object {title: 'Jiggle Problem Alert'} diff --git a/app/styles/account/profile.sass b/app/styles/account/profile.sass index 5b5d83fc9..a122188f3 100644 --- a/app/styles/account/profile.sass +++ b/app/styles/account/profile.sass @@ -44,9 +44,6 @@ i margin-right: 5px - .linked-in-button - cursor: default - .sample-profile position: absolute right: 5px diff --git a/app/styles/base.sass b/app/styles/base.sass index 4710b1eb7..7eaca0195 100644 --- a/app/styles/base.sass +++ b/app/styles/base.sass @@ -312,9 +312,56 @@ kbd .arrow display: none +.btn.btn-illustrated + background: 0 + border: 0 + border-radius: 0 + @include box-shadow(none) + border-image: url(/images/common/button-background-active-border.png) 14 20 20 20 fill round + border-width: 7px 10px 10px 10px + padding: 0 + font-family: Open Sans Condensed + text-transform: uppercase + font-weight: bold + color: rgb(248, 197, 146) + + &:active + border-image: url(/images/common/button-background-pressed-border.png) 14 16 16 20 fill round + padding: 2px 0 0 2px + border-width: 7px 8px 8px 10px + + &.disabled, &:disabled + border-image: url(/images/common/button-background-disabled-border.png) 14 20 20 20 fill round + @include opacity(1) + + > * + @include opacity(0.5) + + > * + @include opacity(0.75) + + &:hover > * + @include opacity(1) + + html.no-borderimage .popover border: 0 background: transparent url(/images/level/popover_background.png) background-size: 100% 100% padding: 10px 20px + + .btn.btn-illustrated + border: 0 + background-image: url(/images/common/button-background-active.png) + background-size: 100% 100% + padding: 7px 10px 10px 10px + + &:active + background-image: url(/images/common/button-background-pressed.png) + padding: 9px 8px 8px 12px + border: 0 + + &.disabled, &:disabled + background-image: url(/images/common/button-background-disabled.png) + diff --git a/app/styles/game-menu/choose-hero-view.sass b/app/styles/game-menu/choose-hero-view.sass deleted file mode 100644 index 7692716bf..000000000 --- a/app/styles/game-menu/choose-hero-view.sass +++ /dev/null @@ -1,176 +0,0 @@ -@import "app/styles/mixins" -@import "app/styles/bootstrap/variables" - -$maxHeroPortraitSize: 100px -$minHeroPortraitSize: 50px - -$heroCanvasHeight: 265px - -#choose-hero-view - - #hero-carousel - margin: 0 auto 20px auto - - .carousel-indicator-container - height: $maxHeroPortraitSize - text-align: center - width: 100% - margin-bottom: 10px - margin-top: 10px - position: relative - z-index: 1 - - .carousel-indicators - position: static - height: $maxHeroPortraitSize - width: 100% - margin-left: 0 - background-repeat: no-repeat - - .hero-indicator - width: $maxHeroPortraitSize - height: $maxHeroPortraitSize - margin: 0px 3px - border: 2px solid black - border-radius: 2px - position: relative - - .hero-avatar - width: 100% - height: 100% - background-size: contain - - &.initialized - @include transition(0.5s ease) - - &.active - border-color: gold - - &.locked - .hero-avatar - @include filter(contrast(50%) brightness(65%)) - - .lock-indicator - position: absolute - width: 40% - left: 30% - top: 30% - @include filter(invert(90%)) - - .hero-item - - &.locked - @include opacity(0.6) - - canvas, .hero-feature-image, .hero-stats - width: 45% - height: $heroCanvasHeight - float: left - - canvas, .hero-feature-image - margin-left: 5% - - .hero-feature-image - display: none - text-align: center - - img - height: $heroCanvasHeight - - .hero-stats - text-shadow: 0 1px 1px rgba(255, 255, 255, 0.6) - - .hero-class, .hero-status, .hero-skills - font-size: 14px - - .hero-stat - margin: 10px 0 - - .progress - width: 90% - text-align: center - height: 26px - position: relative - margin: 0 - - .hero-stat-label - position: absolute - width: 100% - font-size: 18px - text-transform: uppercase - color: white - text-shadow: 0px 1px 0px black, 0px -1px 0px black, -1px 0px 0px black, 1px 0px 0px black - - .carousel-control.left - border-top-left-radius: 10px - border-bottom-left-radius: 10px - - .carousel-control.right - border-top-right-radius: 10px - border-bottom-right-radius: 10px - - .carousel-control - height: 75% - top: 30% - width: 10% - - .select-group - display: inline-block - min-height: 20px - margin-top: 10px - margin-bottom: 10px - padding-left: 20px - vertical-align: middle - - label - margin-right: 20px - margin-bottom: 0 - text-align: top - - &[for="option-code-language"] - vertical-align: top - margin-top: 10px - - select - font-size: 18px - - .fancy-select - display: inline-block - - .trigger, .options - text-transform: none - background-color: #def - - .options - padding-left: 5px - overflow: visible - - .selected - color: #111 - - .hover - color: #111 - background-color: #abc - - .options - li - padding-left: 40px - background: transparent url(/images/common/code_languages/javascript_small.png) no-repeat left center - background-size: 32px 32px - margin-bottom: -1px - - &[data-value="python"] - background-image: url(/images/common/code_languages/python_small.png) - &[data-value="coffeescript"] - background-image: url(/images/common/code_languages/coffeescript_small.png) - &[data-value="clojure"] - background-image: url(/images/common/code_languages/clojure_small.png) - &[data-value="lua"] - background-image: url(/images/common/code_languages/lua_small.png) - &[data-value="io"] - background-image: url(/images/common/code_languages/io_small.png) - -body.ipad #choose-hero-view - // iPad is Python-only for now, and has its own reset button. - .form - display: none diff --git a/app/styles/game-menu/game-menu-modal.sass b/app/styles/game-menu/game-menu-modal.sass index f6720f8e3..77dd95eed 100644 --- a/app/styles/game-menu/game-menu-modal.sass +++ b/app/styles/game-menu/game-menu-modal.sass @@ -61,6 +61,6 @@ left: 219px top: 21px width: 571px - height: 518px + height: 514px padding: 50px - overflow: scroll \ No newline at end of file + overflow-y: scroll diff --git a/app/styles/game-menu/inventory-modal.sass b/app/styles/game-menu/inventory-modal.sass index e3d022a80..be8bd00cd 100644 --- a/app/styles/game-menu/inventory-modal.sass +++ b/app/styles/game-menu/inventory-modal.sass @@ -1,18 +1,8 @@ @import "app/styles/mixins" -$totalWidth: 706px - 2 * 20px -$inventoryHeight: 445px -$equippedWidth: 450px -$itemSlotMargin: 5px -$itemSlotSize: ($equippedWidth - 6 * 2 * $itemSlotMargin) / 6 -$itemSlotSizeWithMargin: $itemSlotSize + 2 * $itemSlotMargin -$itemSlotBorderWidth: 2px -$itemSlotInnerWidth: $itemSlotSize - 2 * $itemSlotBorderWidth -$heroContainerWidth: 4 * $itemSlotSizeWithMargin -$heroContainerHeight: $inventoryHeight - $itemSlotSizeWithMargin -$selectedAreaHeight: 150px -$stashMargin: 20px -$stashWidth: $totalWidth - $equippedWidth - $stashMargin +$itemSlotSize: 55px +$itemSlotInnerWidth: $itemSlotSize - 4 +$itemSlotGridHeight: 70px .ui-effects-transfer outline: 2px solid #28f @@ -20,318 +10,434 @@ $stashWidth: $totalWidth - $equippedWidth - $stashMargin z-index: 9001 #inventory-modal + + //- Overall modal structure .modal-dialog margin: 30px auto 0 auto - width: 720px + width: 1017px + height: 660px + + .modal-content + height: 100% + width: 100% - .modal-body - height: 450px - margin: 0 - - +user-select(none) - - h3 + .modal-body + height: 450px margin: 0 - .draggable-item - width: $itemSlotSize - height: $itemSlotSize + +user-select(none) + + //- Background + + #play-items-modal-narrow-bg + position: absolute + top: -69px + left: -8px + + + //- Gems count + + #gems-count-container + position: absolute + left: 213px + top: 10px + width: 160px + height: 66px + @include rotate(5deg) + + #gems-count + position: absolute + left: 75px + top: 17px + font-size: 25px + color: rgb(1,64,91) + + + //- Close modal button + + #close-modal + position: absolute + left: 390px + top: 23px + width: 60px + height: 60px + color: white + text-align: center + font-size: 30px + padding-top: 7px + cursor: pointer + @include rotate(-3deg) + + &:hover + color: yellow + + + //- Equipped area + #equipped - width: $equippedWidth + width: 330px + background: white + border: 3px solid black position: absolute left: 20px - top: 0 - bottom: 0 - //bottom: $selectedAreaHeight + 10 - right: 0 + top: 112px + height: 450px overflow: hidden - .item-slot-row - //background-color: rgba(35, 112, 124, 0.5) - height: $itemSlotSizeWithMargin - clear: both - margin: 0px auto + #hero-image + @include filter(contrast(0%) brightness(0%)) + opacity: 0.4 + width: 225px + height: 410px + position: absolute + left: 10px + top: 20px - &.row-4 - width: 4 * $itemSlotSizeWithMargin - - .item-slot-column - //background-color: rgba(112, 124, 35, 0.5) - width: $itemSlotSizeWithMargin - height: 5 * $itemSlotSizeWithMargin - float: left - //margin-top: 30px - .item-slot width: $itemSlotSize height: $itemSlotSize - margin: $itemSlotMargin - background-color: white - float: left + margin: 5px + background-color: rgba(255,255,255,0.4) + border: 2px dashed rgb(100,100,150) position: relative cursor: pointer @include transition(0.5s ease) - - &.selected - .placeholder, .item-container .item-view img - border-color: #28f - @include box-shadow(0 0 10px #28f) + //&.disabled + // opacity: 0.5 + + &.selected + .placeholder, img.item + border-color: rgb(81,153,236) + background-color: rgb(81,153,236) + @include box-shadow(0 0 10px rgb(81,153,236)) + img.item + background: rgb(81,153,236) + &.should-equip background-color: #8fa outline: 2px solid #8af @include box-shadow(2px 2px 4px black) - + &.droppable outline: 2px solid blue @include box-shadow(4px 4px 6px black) - + &.droppable-hover outline: 4px solid blue @include box-shadow(6px 6px 8px black) - + .placeholder width: 100% height: 100% background-size: cover - border: $itemSlotBorderWidth solid #888 - @include opacity(0.4) + @include opacity(0.7) background-image: url(/images/pages/game-menu/slot-icons.png) + - &[data-slot="misc-1"] .placeholder - background-position: (-0 * $itemSlotInnerWidth) 0px + // A terrible awful bit of styling, but will be gone or messed around with soon anyway - &[data-slot="minion"] .placeholder - background-position: (-1 * $itemSlotInnerWidth) 0px + &[data-slot="misc-1"] + display: none // hiding for now + position: absolute + left: 250px + top: 20px + ($itemSlotGridHeight * 3) + .placeholder + background-position: (-0 * $itemSlotInnerWidth) 0px + + &[data-slot="misc-0"] + display: none // hiding for now + position: absolute + left: 250px + top: 20px + ($itemSlotGridHeight * 2) + .placeholder + background-position: (-4 * $itemSlotInnerWidth) 0px - &[data-slot="programming-book"] .placeholder - background-position: (-3 * $itemSlotInnerWidth) 0px + &[data-slot="minion"] + position: absolute + left: 250px + top: 20px + ($itemSlotGridHeight * 1) + .placeholder + background-position: (-1 * $itemSlotInnerWidth) 0px + + &[data-slot="programming-book"] + position: absolute + left: 250px + top: 20px + ($itemSlotGridHeight * 4) + .placeholder + background-position: (-3 * $itemSlotInnerWidth) 0px + // Only for wizards... //&[data-slot="spellbook"] .placeholder // background-position: (-2 * $itemSlotInnerWidth) 0px - - &[data-slot="misc-0"] .placeholder - background-position: (-4 * $itemSlotInnerWidth) 0px - - &[data-slot="wrists"] .placeholder - background-position: (-5 * $itemSlotInnerWidth) 0px - - &[data-slot="left-ring"] .placeholder - background-position: (-6 * $itemSlotInnerWidth) 0px - - &[data-slot="right-ring"] .placeholder - background-position: (-7 * $itemSlotInnerWidth) 0px - - &[data-slot="torso"] .placeholder - background-position: (-8 * $itemSlotInnerWidth) 0px - - &[data-slot="feet"] .placeholder - background-position: (-9 * $itemSlotInnerWidth) 0px - - &[data-slot="neck"] .placeholder - background-position: (-10 * $itemSlotInnerWidth) 0px - - &[data-slot="waist"] .placeholder - background-position: (-11 * $itemSlotInnerWidth) 0px - - &[data-slot="eyes"] .placeholder - background-position: (-12 * $itemSlotInnerWidth) 0px - - &[data-slot="head"] .placeholder - background-position: (-13 * $itemSlotInnerWidth) 0px - - &[data-slot="pet"] .placeholder - background-position: (-14 * $itemSlotInnerWidth) 0px - - &[data-slot="gloves"] .placeholder - background-position: (-15 * $itemSlotInnerWidth) 0px - - &[data-slot="left-hand"] .placeholder - background-position: (-16 * $itemSlotInnerWidth) 0px - - &[data-slot="right-hand"] .placeholder - background-position: (-17 * $itemSlotInnerWidth) 0px - - &[data-slot="flag"] .placeholder - //background-position: (-18 * $itemSlotInnerWidth) 0px - background-position: (-2 * $itemSlotInnerWidth) 0px - - .item-container + + &[data-slot="wrists"] position: absolute - left: 0 - top: 0 + left: 20px + top: 20px + ($itemSlotGridHeight * 2.5) + .placeholder + background-position: (-5 * $itemSlotInnerWidth) 0px + + &[data-slot="left-ring"] + position: absolute + left: 250px + top: 20px + ($itemSlotGridHeight * 2) + .placeholder + background-position: (-6 * $itemSlotInnerWidth) 0px + + &[data-slot="right-ring"] + position: absolute + left: 250px + top: 20px + ($itemSlotGridHeight * 3) + .placeholder + background-position: (-7 * $itemSlotInnerWidth) 0px + + &[data-slot="torso"] + position: absolute + left: 90px + top: 20px + ($itemSlotGridHeight * 3) + .placeholder + background-position: (-8 * $itemSlotInnerWidth) 0px + + &[data-slot="feet"] + position: absolute + left: 90px + top: 20px + ($itemSlotGridHeight * 5) + .placeholder + background-position: (-9 * $itemSlotInnerWidth) 0px + + &[data-slot="neck"] + position: absolute + left: 90px + top: 20px + ($itemSlotGridHeight * 2) + .placeholder + background-position: (-10 * $itemSlotInnerWidth) 0px + + &[data-slot="waist"] + position: absolute + left: 90px + top: 20px + ($itemSlotGridHeight * 4) + .placeholder + background-position: (-11 * $itemSlotInnerWidth) 0px + + &[data-slot="eyes"] + position: absolute + left: 90px + top: 20px + $itemSlotGridHeight + .placeholder + background-position: (-12 * $itemSlotInnerWidth) 0px + + &[data-slot="head"] + position: absolute + left: 90px + top: 20px + .placeholder + background-position: (-13 * $itemSlotInnerWidth) 0px + + &[data-slot="pet"] + position: absolute + left: 250px + top: 20px + .placeholder + background-position: (-14 * $itemSlotInnerWidth) 0px + + &[data-slot="gloves"] + position: absolute + left: 160px + top: 20px + ($itemSlotGridHeight * 2.5) + .placeholder + background-position: (-15 * $itemSlotInnerWidth) 0px + + &[data-slot="left-hand"] + position: absolute + left: 160px + top: 20px + ($itemSlotGridHeight * 3.5) + .placeholder + background-position: (-16 * $itemSlotInnerWidth) 0px + + &[data-slot="right-hand"] + position: absolute + left: 20px + top: 20px + ($itemSlotGridHeight * 3.5) + .placeholder + background-position: (-17 * $itemSlotInnerWidth) 0px + + &[data-slot="flag"] + position: absolute + left: 250px + top: 20px + ($itemSlotGridHeight * 5) + .placeholder + background-position: (-2 * $itemSlotInnerWidth) 0px + + img.item + position: absolute + left: -2px + top: -2px - .item-view - img - width: $itemSlotSize - height: $itemSlotSize - border: 2px solid black - background-color: white + width: $itemSlotSize + height: $itemSlotSize + border: 2px solid black + background-color: white - .item-info - display: none + + //- dragging styling + + #equipped - .item-slot.disabled - opacity: 0.5 + &.droppable + outline: 2px solid blue + @include box-shadow(4px 4px 6px black) - .hero-container - //background-color: rgba(31, 0, 200, 0.25) - float: left - position: relative - @include transition(0.5s ease) + &.droppable-hover + outline: 4px solid blue + @include box-shadow(6px 6px 8px black) + + .draggable-item + width: $itemSlotSize * 1.2 + height: $itemSlotSize * 1.2 - &.droppable - outline: 2px solid blue - @include box-shadow(4px 4px 6px black) - - &.droppable-hover - outline: 4px solid blue - @include box-shadow(6px 6px 8px black) - - .equipped-hero-canvas, .hero-feature-image - width: $heroContainerWidth - height: $heroContainerHeight - - .hero-feature-image - text-align: center - - img - height: $heroContainerHeight - - #available-equipment - width: $stashWidth - position: absolute - right: 20px - top: 0 - bottom: 0 - overflow-y: scroll - border: 2px solid #ccc - padding: 4px - background-color: white - - &.Warrior .list-group-item:not(.Warrior), &.Ranger .list-group-item:not(.Ranger), &.Wizard .list-group-item:not(.Wizard) + + //- Available equipment + + &.Warrior #unequipped img.item:not(.Warrior), &.Ranger #unequipped img.item:not(.Ranger), &.Wizard #unequipped img.item:not(.Wizard) // Our code hides and shows (modifies display), but we can be invisible this other way. visibility: hidden position: absolute - .list-group-item - padding: 4px 0 - @include transition(0.5s ease) - - &.active - background-color: #e0f0f5 - - .status-message .should-equip-message - display: inline - - &.should-equip - background-color: #8fa - outline: 2px solid #8af - @include box-shadow(4px 4px 6px black) - z-index: 1 - - .status-message .should-equip-message - display: inline - font-weight: bold - - &.equipped - background-color: #ff5 - - .item-view - cursor: default - - .status-message .equipped-message - display: inline - - &.restricted - background-color: rgba(255, 80, 67, 0.25) - - .item-view - cursor: default - - .status-message .restricted-message - display: inline - - &.locked - background-image: url(/images/pages/game-menu/lock.png) - background-size: 25px 25px - background-repeat: no-repeat - background-position: 98% 90% - - .item-view - cursor: default - - h4, img - //@include filter(contrast(50%) brightness(65%)) - @include opacity(0.6) - - .status-message .locked-message - display: inline - - &.silhouette - h4 - visibility: hidden - position: absolute - h4:before - content: '???' - visibility: visible - .item-view .status-message .locked-message - display: none - img - @include filter(contrast(25%) brightness(25%)) - - .item-view - cursor: pointer - - #selected-items - $selectedItemsContainerMargin: 20px - $selectedItemMargin: 10px - $selectedItemImageSize: 75px - + #unequipped + width: 222px position: absolute - top: $selectedItemsContainerMargin - right: $selectedItemsContainerMargin - bottom: $selectedItemsContainerMargin - left: $selectedItemsContainerMargin - text-align: center + left: 370px + top: 112px + height: 450px + border: 3px solid black + padding: 9px 0 9px 9px + background-color: white - #selected-equipped-item, #selected-available-item - text-align: left - overflow-y: scroll - margin: 0 - height: 48.4% - height: -webkit-calc(50% - $selectedItemMargin / 2) - height: calc(50% - $selectedItemMargin / 2) - width: 100% - padding: 10px 5px 10px 10px - position: relative - display: none + #double-click-hint + margin: 20px 0 70px + + h4 + clear: both + margin-bottom: 10px + margin-top: 20px + font-size: 24px + text-transform: uppercase + font-weight: bold + + img.item + float: left + border: 1px solid black + margin: 3px + padding: 1px + width: 60px + height: 60px + cursor: pointer + + &.active + background-color: rgb(81,153,236) + + //.status-message .should-equip-message + // display: inline - img - margin-top: 21px - width: $selectedItemImageSize - height: $selectedItemImageSize - margin-right: 10px + &.should-equip + background-color: #8fa + outline: 2px solid #8af + @include box-shadow(4px 4px 6px black) + z-index: 1 + + //.status-message .should-equip-message + // display: inline + // font-weight: bold - .item-info - width: 110px - width: -webkit-calc(100% - 75px - 10px) - width: calc(100% - 75px - 10px) + &.equipped + background-color: #ff5 + display: none + cursor: default + + //.item-view + // cursor: default + // + //.status-message .equipped-message + // display: inline + + &.restricted + background-color: rgba(255, 80, 67, 0.25) + cursor: default + + //.item-view + // cursor: default + // + //.status-message .restricted-message + // display: inline + + &.locked + cursor: default + //background-color: gray + + &.silhouette + cursor: default + pointer-events: none + @include filter(contrast(25%) brightness(25%)) + opacity: 0.5 + + + //- Hero/Play buttons - > h3 - position: absolute - left: 0px - top: 0px - padding: 5px + #choose-hero-button, #play-level-button + top: 572px + position: absolute + background: url(/images/pages/play/modal/confirm-button.png) + width: 209px + height: 65px + background-size: 209px 65px + border: 0 - #selected-equipped-item - margin-bottom: $selectedItemMargin - padding-bottom: 20px - background-color: #ff5 + &:disabled + opacity: 1 + @include filter(grayscale(100%)) + + + #choose-hero-button + left: 20px + + #play-level-button + right: 414px - #selected-available-item - padding-top: 15px - background-color: #e0f0f5 - bottom: 0 + + //- Item details. Non-specific item-details-view styling is in item-details-view.sass. + + #item-details-view + + #item-title + left: 698px + top: 56px + + #item-details-body + left: 650px + + #selected-item-unlock-button + left: 646px + + + //- Equip/unequip/extra + + #item-details-extra + position: absolute + left: 644px + top: 589px + + & > * + width: 338px + height: 50px + + .alert + text-align: center + font-weight: bold + + button + border: 3px solid rgb(46,46,46) + background: white + font-size: 16px diff --git a/app/styles/game-menu/options-view.sass b/app/styles/game-menu/options-view.sass index 9309d3673..46a949985 100644 --- a/app/styles/game-menu/options-view.sass +++ b/app/styles/game-menu/options-view.sass @@ -41,7 +41,7 @@ .glyphicon-volume-up position: absolute - right: 0 + right: -10px //- header, horizontal rule diff --git a/app/styles/play/level.sass b/app/styles/play/level.sass index 3ba3274b6..cad311dad 100644 --- a/app/styles/play/level.sass +++ b/app/styles/play/level.sass @@ -50,12 +50,15 @@ $level-resize-transition-time: 0.5s #stop-real-time-playback-button display: block z-index: 20 + #level-dialogue-view + display: none .level-content margin: 0px auto .level-content position: relative + overflow: hidden #canvas-wrapper top: 50px @@ -88,7 +91,7 @@ $level-resize-transition-time: 0.5s #code-area @include box-sizing(border-box) - padding: 10px 1% + padding: 0px 0.9% 10px 1.4% width: 45% background: transparent url(/images/level/wood_texture.png) background-size: 100% 100% @@ -97,6 +100,7 @@ $level-resize-transition-time: 0.5s top: 0px bottom: 0 @include transition(width $level-resize-transition-time ease-in-out, right $level-resize-transition-time ease-in-out) + overflow: hidden // Level Docs .ui-effects-transfer @@ -231,9 +235,6 @@ body.ipad #level-view #code-area, .footer, #thang-hud display: none - #goals-view - left: 40px - #level-chat-view bottom: 40px diff --git a/app/styles/play/level/control_bar.sass b/app/styles/play/level/control_bar.sass index 8af3a1a9c..2a3745a37 100644 --- a/app/styles/play/level/control_bar.sass +++ b/app/styles/play/level/control_bar.sass @@ -15,6 +15,9 @@ font-family: Open Sans Condensed font-weight: bold + &.controls-disabled + @include filter(brightness(50%)) + .levels-link-area position: absolute left: 40px @@ -149,7 +152,7 @@ .hamburger span.icon-bar background-color: $control-yellow-highlight - #level-done-button, #next-game-button + #level-done-button, #next-game-button, #control-bar-sign-up-button top: 7px font-size: 13px height: 24px diff --git a/app/styles/play/level/hud.sass b/app/styles/play/level/hud.sass index ffd07d75b..be3502933 100644 --- a/app/styles/play/level/hud.sass +++ b/app/styles/play/level/hud.sass @@ -1,315 +1,205 @@ @import "app/styles/mixins" @import "app/styles/bootstrap/variables" -#thang-hud.no-selection - .center - > * - display: none - - .no-selection-message - //display: block // we fade this in - margin: auto - width: 100% - height: 100% - text-align: center - background: transparent url(/images/level/no_selection_pointer.png) no-repeat 50% 40% - background-size: 40px 37px - @include opacity(75) - - &:hover - @include opacity(100) - - div - padding-top: 70px - font-size: 14px - #thang-hud width: 55% - height: 120px + height: 80px position: relative + overflow: visible - .left-wing + &.controls-disabled + pointer-events: none + + .wood-background, .hinge, .avatar-wrapper-container, .center + @include filter(brightness(50%)) + + .wood-background position: absolute - width: 50% - height: 100% left: 0 - top: 0 - z-index: 0 - background-image: url(/images/level/hud_left_wing.png) - background-position: right + top: -2px + background: transparent url(/images/level/hud_wood_background.png) + background-size: auto 100% + width: 100% + height: 100px + z-index: 4 - .right-wing + .hinge position: absolute - width: 50% - height: 100% - right: 0 + top: -16px + background: transparent url(/images/level/hud_hinge.png) + width: 27px + height: 44px + background-size: contain + z-index: 4 + pointer-events: none + + .hinge-0 + left: 3% + .hinge-1 + left: 12% + .hinge-2 + left: 86% + @include scaleX(-1) + .hinge-3 + left: 95% + @include scaleX(-1) + + .avatar-wrapper-container + position: absolute + width: 100px + height: 100px top: 0 - z-index: 0 - background-image: url(/images/level/hud_right_wing.png) - background-position: left + left: 18% + left: -webkit-calc(50% - (560px - 100px) / 2 - 10px) + left: calc(50% - (560px - 100px) / 2 - 10px) + z-index: 5 - &.hide-hud-properties .center - .thang-props, .thang-actions - visibility: hidden - position: absolute - - .center - width: 560px - height: 120px - padding: 4px 20px 0 20px - margin: auto - background-image: url(/images/level/hud_center.png) - color: #BEBEBE - font-size: 12px - overflow: hidden - z-index: 1 - position: relative - - .no-selection-message - display: none - - .thang-canvas-wrapper, .speaker-image-wrapper - width: 100px - height: 100px - margin: 7px 7px 7px 22px - float: left - overflow: hidden - border: 1px solid #888 + .thang-canvas-wrapper + width: 80px + height: 80px + position: relative border-radius: 4px @include gradient-radial-custom-stops(hsla(205,0%,74%,1), 20%, hsla(205,0%,31%,1), 70%) - + &.team-humans border-color: darkred @include gradient-radial-custom-stops(hsla(4,80%,74%,1), 20%, hsla(4,80%,51%,1), 70%) - + &.team-ogres border-color: darkblue @include gradient-radial-custom-stops(hsla(205,100%,74%,1), 20%, hsla(205,100%,31%,1), 70%) - + &.team-allies, &.team-minions border-color: darkgreen @include gradient-radial-custom-stops(hsla(116,80%,74%,1), 20%, hsla(116,80%,31%,1), 70%) + + .thang-canvas + width: 100% + + .avatar-frame + position: absolute + left: -18% + top: -19% + width: 145% + + &.hide-hud-properties .center:hover + // Don't allow them to hover over confusing HUD stuff until later levels + top: 24px + + .center + width: 560px + height: 166px + position: absolute + top: 24px + left: 13% + left: -webkit-calc(50% - 560px / 2) + left: calc(50% - 560px / 2) + padding: 10px 20px 0 145px + background-image: url(/images/level/hud_background.png) + color: white + text-transform: uppercase + font-family: Open Sans Condensed + font-weight: bold + font-size: 16px + z-index: 4 + @include transition(0.5s ease) + + &:hover + top: -36px + + .thang-name + font-size: 18px + margin: 10px 0 0 0 .thang-props - margin: 8px 8px 0 0 + margin: 24px 0 0 0 float: left + @include user-select(text) - .thang-props-column + .prop:not([name="health"]) + min-width: 120px + display: inline-block + line-height: 16px + + &.nonexistent + visibility: hidden + + .text-prop + width: 50% + + .prop-label-icon + $iconSize: 16px + display: inline-block + width: $iconSize + height: $iconSize + margin-right: 5px + background: transparent url(/images/level/hud_info_icons.png) no-repeat + background-size: auto $iconSize float: left - width: 144px - height: 100px - @include user-select(text) - - &.nonexistent - visibility: hidden - .text-prop - width: 50% + &.prop-label-icon-pos + background-position: (-1 * $iconSize) 0px + &.prop-label-icon-target + background-position: (-2 * $iconSize) 0px + &.prop-label-icon-collectedThangIDs + background-position: (-3 * $iconSize) 0px + &.prop-label-icon-visualRange + background-position: (-4 * $iconSize) 0px + &.prop-label-icon-attackDamage + background-position: (-5 * $iconSize) 0px + &.prop-label-icon-attackRange, &.prop-label-icon-attackNearbyEnemyRange + background-position: (-6 * $iconSize) 0px + &.prop-label-icon-maxSpeed + background-position: (-7 * $iconSize) 0px + &.prop-label-icon-gold, &.prop-label-icon-bountyGold + background-position: (-8 * $iconSize) 0px - .prop-label-icon - $iconSize: 16px - display: inline-block - width: $iconSize - height: $iconSize - margin-right: 5px - background: transparent url(/images/level/hud_info_icons.png) no-repeat - background-size: auto $iconSize - float: left - - &.prop-label-icon-pos - background-position: (-1 * $iconSize) 0px - &.prop-label-icon-target - background-position: (-2 * $iconSize) 0px - &.prop-label-icon-collectedThangIDs - background-position: (-3 * $iconSize) 0px - &.prop-label-icon-visualRange - background-position: (-4 * $iconSize) 0px - &.prop-label-icon-attackDamage - background-position: (-5 * $iconSize) 0px - &.prop-label-icon-attackRange, &.prop-label-icon-attackNearbyEnemyRange - background-position: (-6 * $iconSize) 0px - &.prop-label-icon-maxSpeed - background-position: (-7 * $iconSize) 0px - &.prop-label-icon-gold, &.prop-label-icon-bountyGold - background-position: (-8 * $iconSize) 0px - - .prop-value.bar-prop - width: 100px - display: inline-block - height: 6px - background: #ddd - border: 1px solid black - border-radius: 6px - overflow: hidden - - .bar - background: black - width: 100% - height: 100% - - .prop[name="health"] .bar - background: #C5362B - - .message - text-align: center - display: table - height: 100% - width: 100% - - p - display: table-cell - vertical-align: middle - font-size: 20px - - .thang-actions - width: 212px - height: 100px - margin: 8px 24px 8px 0 - float: left - overflow-y: auto - overflow-x: hidden - - .table-container - position: relative - - .progress-indicator - position: absolute - right: 45px - background-color: #fce - z-index: 1 - - .progress-arrow - width: 14px - height: 6px - top: -6px - // Could put top: 0 to make the arrow go inside, but it doesn't have enough contrast over the bar - right: 39px - background: transparent url(/images/level/action_timeline_indicator.png) no-repeat center - - .progress-line - width: 1px - height: 100% - top: 0 - background-color: #A4A198 - - table - border: 1px solid #5B5855 - border-radius: 2px - line-height: 17px - width: 100% - - tr - border: 1px solid #5b5855 - - .action-indicator - width: 10px - - .action-label - width: 75px - - .action-timeline - padding: 0 - - .timeline-wrapper - position: relative - width: 100% - height: 19px - - div - border-radius: 1px - background-color: #6BA1C8 - height: 100% - border-bottom: 2px groove darken(#6BA1C8, 30%) - border-right: 1px solid darken(#6BA1C8, 10%) - position: absolute - top: 0 - - .current-action - font-weight: bold - - .action-indicator - background: #4B4133 url(/images/level/current_action_indicator.png) no-repeat center - - td - background-color: #4B4133 - - .dialogue-area - opacity: 0.0 - position: relative - height: 100% - width: 100% - z-index: 1 - - .bubble + .prop[name="health"] position: absolute - left: 140px - right: 8px - top: 8px - bottom: 0px - padding: 10px - color: black - font-weight: bold - background: #FFFFFF - border: black solid 1px - border-radius: 10px - font-size: 14px + right: 35px + top: 23px + height: 18px line-height: 18px + font-size: 18px - strong - color: #09B057 + .prop-value.bar-prop + width: 150px + margin: 1px 10px 0 0 + height: 16px + background: rgb(32, 27, 21) + padding: 4px + border-radius: 8px + border: 0 - .hud-hint - font-weight: normal - color: #999 - - .enter - position: absolute - right: 7px - bottom: 7px - div.dot - background: #337 - width: 8px + .bar + background: rgb(234, 35, 45) height: 8px - position: absolute - right: 8px - top: 9px - border-radius: 5px + border-radius: 4px - button, .alert - padding: 2px 5px + .bar-prop-value + vertical-align: top - .enter button.with-dot - padding-right: 20px + .prop-value.bar-prop + width: 100px + display: inline-block + height: 6px + background: #ddd + border: 1px solid black + border-radius: 6px + overflow: hidden - h3 - margin: 0 - font-size: 16px - line-height: 16px - color: #338 + .bar + background: black + width: 100% + height: 100% - button - margin-left: 10px + .message + text-align: center + display: table + height: 100% + width: 100% - .bubble:after - content: "" - position: absolute - top: 55px - left: -27px - border-style: solid - border-width: 11px 27px 11px 0 - border-color: transparent #FFFFFF - display: block - width: 0 - z-index: 1 - - .bubble:before - content: "" - position: absolute - top: 55px - left: -28px - border-style: solid - border-width: 11px 27px 11px 0 - border-color: transparent black - display: block - width: 0 - z-index: 0 + p + display: table-cell + vertical-align: middle + font-size: 20px diff --git a/app/styles/play/level/level-dialogue-view.sass b/app/styles/play/level/level-dialogue-view.sass new file mode 100644 index 000000000..e7b0f58b4 --- /dev/null +++ b/app/styles/play/level/level-dialogue-view.sass @@ -0,0 +1,102 @@ +@import "app/styles/mixins" +@import "app/styles/bootstrap/variables" + +#level-dialogue-view + +keyframes(speakingPulse) + from + @include box-shadow(0px 0px 8px #333) + color: white + 50% + @include box-shadow(0px 0px 35px skyblue) + color: skyblue + to + @include box-shadow(0px 0px 8px #333) + color: white + + width: 417px + height: 296px + background: transparent url(/images/level/code_palette_wood_background.png) + background-size: 100% auto + position: absolute + bottom: -296px + 40px + left: 300px + left: -webkit-calc(55% - 417px) + left: calc(55% - 417px) + // Bounce in + @include transition(1s cubic-bezier(.17,.89,.42,1.36)) + z-index: 2 + + &.active + display: block + bottom: -20px + + &.speaking + .dialogue-area + .bubble + @include animation(speakingPulse 1.5s infinite) + + .dialogue-area + position: relative + height: 100% + width: 100% + z-index: 1 + + .bubble + position: relative + margin: 20px + padding: 10px 10px 30px 10px + color: white + font-weight: bold + background: rgb(45, 35, 234) + border: black solid 1px + border-radius: 10px + font-size: 18px + line-height: 20px + + strong + color: #09B057 + + .hud-hint + font-weight: normal + color: #ddd + font-size: 14px + line-height: 16px + vertical-align: middle + + .enter + position: absolute + right: 10px + bottom: 10px + div.dot + background: #337 + width: 8px + height: 8px + position: absolute + right: 8px + top: 9px + border-radius: 5px + + button, .alert + padding: 2px 5px + + .enter button.with-dot + padding-right: 20px + + h3 + margin: 0 + font-size: 16px + line-height: 16px + color: #338 + + button + margin-left: 10px + +body.ipad #level-dialogue-view + left: auto + right: 0 + + &.active + bottom: -60px + + .hud-hint + visibility: hidden diff --git a/app/styles/play/level/loading.sass b/app/styles/play/level/loading.sass index a6b03af32..6f0fe1137 100644 --- a/app/styles/play/level/loading.sass +++ b/app/styles/play/level/loading.sass @@ -35,11 +35,7 @@ padding: 10px text-align: center // http://matthewlein.com/ceaser/ Bounce down a bit, then snap up. - -webkit-transition: top $UNVEIL_TIME cubic-bezier(0.285, 0, 0.670, 0) - -webkit-transition: top $UNVEIL_TIME cubic-bezier(0.285, -0.595, 0.670, -0.600) - -moz-transition: top $UNVEIL_TIME cubic-bezier(0.285, -0.595, 0.670, -0.600) - -o-transition: top $UNVEIL_TIME cubic-bezier(0.285, -0.595, 0.670, -0.600) - transition: top $UNVEIL_TIME cubic-bezier(0.285, -0.595, 0.670, -0.600) + @include transition(top $UNVEIL_TIME cubic-bezier(0.285, -0.595, 0.670, -0.600)) .load-progress position: absolute @@ -88,9 +84,9 @@ .left-wing @include wing-background('/images/level/loading_left_wing.png', right) left: -50% - transition: all $UNVEIL_TIME ease + @include transition(all $UNVEIL_TIME ease) .right-wing @include wing-background('/images/level/loading_right_wing.png', left) right: -50% - transition: all $UNVEIL_TIME ease + @include transition(all $UNVEIL_TIME ease) diff --git a/app/styles/play/level/modal/editor_config.sass b/app/styles/play/level/modal/editor_config.sass deleted file mode 100644 index 1d97d3965..000000000 --- a/app/styles/play/level/modal/editor_config.sass +++ /dev/null @@ -1,12 +0,0 @@ -#level-editor-config-modal - .select-group - display: block - min-height: 20px - margin-top: 10px - margin-bottom: 10px - padding-left: 20px - vertical-align: middle - - label - font-weight: normal - margin-right: 20px \ No newline at end of file diff --git a/app/styles/play/level/playback.sass b/app/styles/play/level/playback.sass index 93176ead3..87b9ebadd 100644 --- a/app/styles/play/level/playback.sass +++ b/app/styles/play/level/playback.sass @@ -12,7 +12,11 @@ background-size: 100% 100% // Counteract 50px height of absolutely positioned control bar, but overlap by 10px of jagged transparent top. margin-top: 50px - 10px - z-index: 2 + z-index: 3 + + &.controls-disabled + pointer-events: none + @include filter(brightness(50%)) button font-size: 26px diff --git a/app/styles/play/level/thang_avatar.sass b/app/styles/play/level/thang_avatar.sass index fcb144953..c81beb41f 100644 --- a/app/styles/play/level/thang_avatar.sass +++ b/app/styles/play/level/thang_avatar.sass @@ -7,10 +7,8 @@ @include box-shadow(0px 0px 10px rgba(79, 79, 213, 1.0)) .thang-avatar-wrapper + width: 100% position: relative - margin: 5px 5px 1px - border: 1px solid #888 - border-radius: 4px @include gradient-radial-custom-stops(hsla(205,0%,74%,1), 20%, hsla(205,0%,31%,1), 70%) &.team-humans @@ -25,6 +23,15 @@ border-color: darkgreen @include gradient-radial-custom-stops(hsla(116,80%,74%,1), 20%, hsla(116,80%,31%,1), 70%) + .avatar + width: 100% + + .avatar-frame + position: absolute + left: -18% + top: -19% + width: 145% + .badge $radius: 8px $diameter: 2 * $radius diff --git a/app/styles/play/level/tome/cast_button.sass b/app/styles/play/level/tome/cast_button.sass index edad12068..4ecd74768 100644 --- a/app/styles/play/level/tome/cast_button.sass +++ b/app/styles/play/level/tome/cast_button.sass @@ -17,8 +17,8 @@ @include box-shadow(0px 0px 8px #333) color: white 50% - @include box-shadow(0px 0px 35px #87FFCE) - color: #87FFFF + @include box-shadow(0px 0px 35px #87CEFF) + color: #87CEFF to @include box-shadow(0px 0px 8px #333) color: white @@ -31,40 +31,113 @@ width: 100% border-radius: 6px - .btn - padding: 3px 10px - height: 40px - font-size: 22px + background: transparent url(/images/level/code_toolbar_background.png) + background-size: 100% 100% + left: -15px + right: 15px + height: 94px + margin-top: -8px + padding: 20px 2.8% - .submit-button - margin-left: 20px - min-width: 150px + .btn.btn-illustrated + height: 46px + font-size: 24px + line-height: 24px + width: 45% + width: -webkit-calc(50% - 10px) + width: calc(50% - 10px) + border-image: url(/images/level/code_toolbar_run_button_active.png) 14 20 20 20 fill round + border-width: 7px 10px 10px 10px + + &:active + border-image: url(/images/level/code_toolbar_run_button_active_pressed.png) 14 20 20 20 fill round + padding: 2px 0 0 2px + + &.submit-button, &.done-button + margin-left: 10px + border-image: url(/images/level/code_toolbar_submit_button_active.png) 14 20 20 20 fill round + + &:active + border-image: url(/images/level/code_toolbar_submit_button_active_pressed.png) 14 20 20 20 fill round .cast-button - margin-left: 10px - min-width: 150px @include opacity(0.77) &:hover, &.castable @include opacity(1) + + .submit-button > *, .done-button > * + @include opacity(0.9) + &:hover + @include opacity(1) + &:not(.winnable) - .cast-button.castable - font-weight: bold - -webkit-animation-name: castablePulse - -webkit-animation-duration: 3s - -webkit-animation-iteration-count: infinite + .btn.btn-illustrated - .submit-button - font-size: 16px + &.cast-button.castable + font-weight: bold + @include animation(castablePulse 3s infinite) + border-image: url(/images/level/code_toolbar_run_button_zazz.png) 14 20 20 20 fill round + + &:active + border-image: url(/images/level/code_toolbar_run_button_zazz_pressed.png) 14 20 20 20 fill round + + &.submit-button + font-size: 16px &.winnable - .submit-button - font-weight: bold - -webkit-animation-name: winnablePulse - -webkit-animation-duration: 3s - -webkit-animation-iteration-count: infinite - .cast-button - font-size: 16px + .btn.btn-illustrated + &.submit-button, &.done-button + font-weight: bold + @include animation(winnablePulse 3s infinite) + + border-image: url(/images/level/code_toolbar_submit_button_zazz.png) 14 20 20 20 fill round + + &:active + border-image: url(/images/level/code_toolbar_submit_button_zazz_pressed.png) 14 20 20 20 fill round + + &.cast-button + font-size: 16px + +html.no-borderimage #cast-button-view + .btn.btn-illustrated + border: 0 + background-image: url(/images/level/code_toolbar_run_button_active.png) + background-size: 100% 100% + padding: 7px 10px 10px 10px + + &:active + background-image: url(/images/level/code_toolbar_run_button_active_pressed.png) + padding: 9px 8px 8px 12px + border: 0 + + &.submit-button, &.done-button + background-image: url(/images/level/code_toolbar_submit_button_active_pressed.png) + border: 0 + + &:active + background-image: url(/images/level/code_toolbar_submit_button_active_pressed.png) + border: 0 + + &:not(.winnable) + .btn.btn-illustrated + &.cast-button.castable + border: 0 + background-image: url(/images/level/code_toolbar_run_button_zazz.png) + + &:active + background-image: url(/images/level/code_toolbar_run_button_zazz_pressed.png) + + &.winnable + .btn.btn-illustrated + &.submit-button, &.done-button + border: 0 + background-image: url(/images/level/code_toolbar_submit_button_zazz.png) + + &:active + border: 0 + background-image: url(/images/level/code_toolbar_submit_button_zazz_pressed.png) + diff --git a/app/styles/play/level/tome/problem_alert.sass b/app/styles/play/level/tome/problem_alert.sass index 42c7be399..aaba3a19d 100644 --- a/app/styles/play/level/tome/problem_alert.sass +++ b/app/styles/play/level/tome/problem_alert.sass @@ -18,10 +18,30 @@ border-image: url(/images/level/code_editor_error_background.png) 16 20 fill round border-width: 16px 20px + // Jiggle animation + +keyframes(jiggle) + 0% + transform: rotate(0deg) + 25% + transform: rotate(1deg) + 50% + transform: rotate(0deg) + 75% + transform: rotate(-1deg) + 100% + transform: rotate(0deg) + + &.jiggling + @include animation(jiggle .3s infinite) + &.no-hint // Since it's probably only one line, let's make it not look weird by being tiny. padding: 7px + .problem-alert-title + color: white + border-bottom: 1px solid white + .close @include opacity(0.80) text-shadow: none diff --git a/app/styles/play/level/tome/spell.sass b/app/styles/play/level/tome/spell.sass index 9b00c5871..10783059e 100644 --- a/app/styles/play/level/tome/spell.sass +++ b/app/styles/play/level/tome/spell.sass @@ -2,37 +2,37 @@ @import "app/styles/bootstrap/variables" @mixin editor-height($extraHeight) - @include box-sizing(border-box) width: 98% height: 83% - height: unquote("-webkit-calc(100% - 60px -")$extraHeight unquote(")") - height: unquote("calc(100% - 60px -")$extraHeight unquote(")") + height: unquote("-webkit-calc(100% - 100px -")$extraHeight unquote(")") + height: unquote("calc(100% - 100px -")$extraHeight unquote(")") #spell-view - position: absolute - left: 10px - top: 48px - right: 10px - padding-bottom: 10px - z-index: 1 - // Set z-index above palette + margin-top: 10px + padding-top: 20px + padding-left: 30px + padding-bottom: 95px display: none + position: relative + z-index: 1 &.shown display: block .code-background position: absolute - top: 0 + top: -68px + left: 0px height: 100% - width: 100% + right: -10px span.code-background - border-width: 40px - border-image: url(/images/level/code_editor_background.png) 40 fill round + border-width: 124px 76px 64px 40px + border-image: url(/images/level/code_editor_background_border.png) 124 76 64 40 fill round img.code-background display: none + width: 100% .save-status display: none @@ -43,7 +43,7 @@ .firepad // When Firepad is active, it wraps .ace_editor in .firepad. @include editor-height(0px) - width: 98% + width: 94% .ace_editor width: 100% @@ -55,7 +55,7 @@ .ace_editor // When Firepad isn't active, .ace_editor needs the width/height set itself. @include editor-height(0px) - width: 98% + width: 94% position: relative background-color: transparent line-height: 20px @@ -64,15 +64,16 @@ font-family: Monaco, Menlo, Ubuntu Mono, Consolas, "source-code-pro", monospace !important &.disabled - @include opacity(80) - .ace_cursor - @include opacity(20) + @include opacity(0.8) + .ace_cursor, .executing, .ace_active-line, .ace_gutter-active-line + @include opacity(0.2) .ace_gutter - background-color: rgba(255, 255, 255, 0.25) + background-color: transparent + border-right: 1px solid rgb(195, 178, 156) + //background-color: rgba(255, 255, 255, 0.25) width: 47px margin-left: 4px - border-bottom: 1px dotted #2f261d // override ace visible to get the experimental large current line executing arrow visible .ace_gutter @@ -84,7 +85,10 @@ .ace_scroller background-color: transparent - border-bottom: 1px dotted #2f261d + //padding-left: 10px // Interrupts gutter and line highlighting + + .ace_active-line, .ace_gutter-active-line + background-color: rgba(255, 255, 255, 0.4) .ace_content .executing, .executed, .problem-marker-info, .problem-marker-warning, .problem-marker-error @@ -101,12 +105,24 @@ @include box-shadow(0 0 0px black) .executed background-color: rgba(110, 110, 110, 0.12) + + +keyframes(pulseRedBackground) + from + background-color: rgba(255, 45, 27, 0.25) + 50% + background-color: rgba(255, 45, 27, 0.125) + to + background-color: rgba(255, 45, 27, 0.25) + + // problem-marker-#{@aetherProblem.level} set in Problem.coffee .problem-marker-info background-color: rgba(196, 163, 184, 0.25) .problem-marker-warning background-color: rgba(100, 65, 20, 0.25) .problem-marker-error - background-color: rgba(110, 45, 27, 0.25) + // TODO: Pulses too quickly during playback + @include animation(pulseRedBackground 1s infinite) + &:not(.playback-ended) .executing:not(.ace_gutter-cell) @@ -173,10 +189,10 @@ .ace_searchbtn, .ace_replacebtn padding: 0px 4px + html.no-borderimage #spell-view span.code-background display: none img.code-background display: block - diff --git a/app/styles/play/level/tome/spell_list_entry.sass b/app/styles/play/level/tome/spell_list_entry.sass index bda937d27..60f700c31 100644 --- a/app/styles/play/level/tome/spell_list_entry.sass +++ b/app/styles/play/level/tome/spell_list_entry.sass @@ -2,7 +2,7 @@ @import "app/styles/bootstrap/variables" .spell-list-entry-view - code + .method-signature background-color: transparent border: 0 font-size: 1.1em @@ -10,32 +10,60 @@ padding: 4px .spell-list-entry-view.spell-tab - $height: 38px - $childMargin: 2px - $childSize: $height - 2 * $childMargin + $height: 87px + $paddingTop: 10px + $paddingBottom: 25px + $childSize: $height - $paddingTop - $paddingBottom + width: 100% height: $height - width: 90% - width: -webkit-calc(100% - 50px) - width: calc(100% - 50px) - padding: 0px 8px - border-width: 3px - border-image: url(/images/level/code_editor_tab_background.png) 4 fill repeat + padding: $paddingTop 25px $paddingBottom 25px white-space: nowrap position: relative + background: transparent url(/images/level/code_editor_top_bar_wood_background.png) + background-size: 100% 100% + z-index: 2 + + .hinge + position: absolute + top: 0 + background: transparent url(/images/level/code_editor_top_bar_hinge.png) + width: 24px + height: 20px + background-size: contain + + .hinge-0 + left: 20% + .hinge-1 + left: 40% + .hinge-2 + left: 60% + .hinge-3 + left: 80% &.read-only - background: linear-gradient(to bottom, rgba(0,0,0,0.2) 0%,rgba(0,0,0,0.2) 100%), url(/images/level/code_editor_tab_background.png) + background: linear-gradient(to bottom, rgba(0,0,0,0.25) 0%,rgba(0,0,0,0.25) 100%), url(/images/level/code_editor_top_bar_wood_background.png) background-size: 100% 100% + > *:not(.spell-tool-buttons) + @include opacity(0.5) - .spell-list-button, .thang-avatar-wrapper, .reload-code, .beautify-code, .fullscreen-code - width: $childSize - height: $childSize - margin: $childMargin - box-sizing: border-box - - .spell-list-button, .thang-avatar-wrapper + .thang-avatar-view + width: $childSize - 10px + margin: 5px 0.4vw + display: inline-block float: left + .btn.btn-small + margin-top: 15px + margin-right: 1.3vw + font-size: 18px + + .glyphicon + font-size: 16px + + .btn.btn-small.spell-list-button + float: left + margin-top: 5px + .spell-tool-buttons position: absolute right: 0px @@ -51,29 +79,32 @@ .fullscreen-code float: right &:not(.maximized) - .icon-resize-small + .glyphicon-resize-small display: none &.maximized - .icon-fullscreen + .glyphicon-fullscreen display: none - .btn.btn-small - background: transparent - padding: 0 - - &:not(:hover) - border-color: transparent - @include box-shadow(none) - - .icon-chevron-down, .icon-repeat, .icon-magnet, .icon-fullscreen, .icon-resize-small - margin-top: 7px - .thang-avatar-wrapper border-width: 0 - code - margin-top: 7px - font-size: 1vw + .method-name-area + margin-left: 10px + margin-top: 10px + text-transform: uppercase + display: inline-block + font-family: Open Sans Condensed + font-weight: bold + + .method-label + font-size: 12px + color: rgb(243, 211, 59) + margin-bottom: -5px + + .method-signature + color: white + font-size: 18px + padding: 0 .spell-list-entry-view:not(.spell-tab) cursor: pointer @@ -89,7 +120,7 @@ &.shows-top-divider:not(:first-child) border-top: 1px dashed #ccc - code + .method-signature margin-top: 5px .thang-names @@ -113,9 +144,9 @@ //margin: 2px 10px 2px 5px -html.no-borderimage - .spell-list-entry-view.spell-tab - border-width: 0 - border-image: none - background: transparent url(/images/level/code_editor_tab_background.png) no-repeat - background-size: 100% 100% +//html.no-borderimage +// .spell-list-entry-view.spell-tab +// border-width: 0 +// border-image: none +// background: transparent url(/images/level/code_editor_tab_background.png) no-repeat +// background-size: 100% 100% diff --git a/app/styles/play/level/tome/spell_palette.sass b/app/styles/play/level/tome/spell_palette.sass index c6f7ff406..5b644a3b3 100644 --- a/app/styles/play/level/tome/spell_palette.sass +++ b/app/styles/play/level/tome/spell_palette.sass @@ -3,55 +3,48 @@ #spell-palette-view position: absolute - padding-bottom: 10px left: 10px right: 10px - //height: 140px - // Height relates to .tab-content height - padding-top: 35px - padding-left: 12px - padding-right: 4px - color: #333 - // Get crazy with the backgrounds so that we can lower the opacity on the editor background above it, making a gradient of the disabled background color on the top around where it's usually covered + padding: 0 4px 10px 40px background-color: transparent background-size: 100% 100% - z-index: 0 + z-index: 2 //overflow-y: auto - + .code-palette-background - position: absolute - left: 0 - top: 0 width: 100% - height: 100% + position: absolute + left: 0px z-index: -1 - - span.code-palette-background - border-width: 25px - border-image: url(/images/level/code_palette_background.png) 25 fill round - img.code-palette-background - display: none + &.controls-disabled + .code-palette-background + @include filter(brightness(75%)) - &.disabled - @include opacity(0.80) + > :not(.code-palette-background) + @include opacity(0.50) h4 - color: #333 + color: white font-size: 16px line-height: 16px - margin: 0 4px + margin: 25px 0 5px 2px font-weight: normal + text-transform: uppercase .nav > li > a padding: 2px 20px 0px 20px margin-bottom: 3px ul.nav.nav-pills + margin-top: 15px + + h4 + margin-top: 2px li.active a background-color: transparent &.multiple-tabs li.active a - background-color: lighten(rgb(230, 212, 146), 10%) + background-color: darken(rgb(230, 212, 146), 30%) &.multiple-tabs li:not(.active) a cursor: pointer @@ -82,8 +75,9 @@ @include flexbox() @include flex-wrap() @include flex-center() - outline: 1px dashed #b86 position: relative + background-color: rgb(20, 13, 8) + margin: 1px img.item-image width: 38px @@ -91,49 +85,11 @@ position: absolute &:not(:hover) img.item-image - -webkit-filter: sepia(100%) - filter: sepia(100%) + -webkit-filter: contrast(50%) sepia(100%) saturate(500%) hue-rotate(7deg) + filter: contrast(50%) sepia(100%) saturate(1000%) hue-rotate(7deg) .spell-palette-entry-view margin-left: 38px width: 174px width: -webkit-calc(100% - 38px) width: calc(100% - 38px) - - .code-language-logo - position: absolute - width: 16px - height: 16px - left: 16px - top: 36px - z-index: 10 - background-color: transparent - background-repeat: no-repeat - background-size: contain - cursor: pointer - - &.javascript - background-image: url(/images/common/code_languages/javascript_icon.png) - &.python - background-image: url(/images/common/code_languages/python_icon.png) - &.coffeescript - background-image: url(/images/common/code_languages/coffeescript_icon.png) - &.clojure - background-image: url(/images/common/code_languages/clojure_icon.png) - &.lua - background-image: url(/images/common/code_languages/lua_icon.png) - &.io - background-image: url(/images/common/code_languages/io_icon.png) - - &:hover - outline: 1px outset #ccc - - &:active - outline: 1px inset #ccc - -html.no-borderimage - #spell-palette-view - span.code-palette-background - display: none - img.code-palette-background - display: block diff --git a/app/styles/play/level/tome/spell_palette_entry.sass b/app/styles/play/level/tome/spell_palette_entry.sass index 66d2ce088..cb37378b5 100644 --- a/app/styles/play/level/tome/spell_palette_entry.sass +++ b/app/styles/play/level/tome/spell_palette_entry.sass @@ -25,20 +25,21 @@ background-color: darken(#FFFFFF, 25%) // Originally pulled these colors from the most relevant textmate-theme classes, but then fudged them a lot. - &.function - color: black - &.object - color: rgb(6, 150, 14) - &.string - color: rgb(3, 106, 7) - &.number - color: rgb(0, 0, 205) - &.boolean - color: rgb(88, 92, 246) - &.snippet - color: blue - &.undefined - color: rgb(197, 6, 11) + //&.function + // color: black + //&.object + // color: rgb(6, 150, 14) + //&.string + // color: rgb(3, 106, 7) + //&.number + // color: rgb(0, 0, 205) + //&.boolean + // color: rgb(88, 92, 246) + //&.snippet + // color: blue + //&.undefined + // color: rgb(197, 6, 11) + color: rgb(243, 169, 49) .spell-palette-popover.popover // Only those popovers which are our direct children (spell documentation) diff --git a/app/styles/play/level/tome/spell_toolbar.sass b/app/styles/play/level/tome/spell_toolbar.sass index cb6894852..a29c2a137 100644 --- a/app/styles/play/level/tome/spell_toolbar.sass +++ b/app/styles/play/level/tome/spell_toolbar.sass @@ -18,7 +18,9 @@ position: absolute height: 100% top: -50px - width: 85% + width: 65% + width: -webkit-calc(85% - 60px) + width: calc(85% - 60px) left: 10% display: inline-block cursor: pointer @@ -63,6 +65,7 @@ position: absolute z-index: 2 width: 60px + top: -50px right: 2% box-sizing: border-box opacity: 0.25 diff --git a/app/styles/play/level/tome/thang_list.sass b/app/styles/play/level/tome/thang_list.sass deleted file mode 100644 index a06613bd8..000000000 --- a/app/styles/play/level/tome/thang_list.sass +++ /dev/null @@ -1,22 +0,0 @@ -@import "app/styles/mixins" -@import "app/styles/bootstrap/variables" - -#thang-list-view - margin: 50px 15px 15px 15px - overflow: auto - height: 80% - height: -webkit-calc(100% - 65px) - height: calc(100% - 65px) - - h3 - line-height: 25px - margin: 0 - text-align: center - letter-spacing: 0.1em - - .thang-list-section - margin: 5px - padding: 5px - background-color: rgba(200, 200, 200, 0.25) - border-radius: 5px - overflow: hidden diff --git a/app/styles/play/level/tome/thang_list_entry.sass b/app/styles/play/level/tome/thang_list_entry.sass deleted file mode 100644 index e478d6b13..000000000 --- a/app/styles/play/level/tome/thang_list_entry.sass +++ /dev/null @@ -1,38 +0,0 @@ -@import "app/styles/mixins" -@import "app/styles/bootstrap/variables" - -.thang-list-entry-view - @include opacity(0.90) - cursor: pointer - float: left - box-sizing: border-box - width: 20% - max-width: 100px - position: relative - - &.dead - @include opacity(0.75) - - &:after - content: "×" - font-size: 160px - color: red - @include opacity(0.75) - position: absolute - bottom: 0 - height: 100% - width: 100% - text-align: center - line-height: 100px - font-family: monospace - - .thang-name - text-decoration: line-through - - &.disabled - @include opacity(0.25) - cursor: default - - &:hover:not(.disabled) - @include opacity(1) - diff --git a/app/styles/play/level/tome/thang_list_entry_spells.sass b/app/styles/play/level/tome/thang_list_entry_spells.sass deleted file mode 100644 index 312905d1d..000000000 --- a/app/styles/play/level/tome/thang_list_entry_spells.sass +++ /dev/null @@ -1,16 +0,0 @@ -@import "app/styles/mixins" -@import "app/styles/bootstrap/variables" - -.thang-list-entry-spells - - .thang-list-entry-spell - padding: 4px - cursor: pointer - - &:hover - background-color: hsla(240, 40, 80, 0.25) - - code - background-color: transparent - border: 0 - font-size: 1.1em diff --git a/app/styles/play/modal/buy-gems-modal.sass b/app/styles/play/modal/buy-gems-modal.sass new file mode 100644 index 000000000..b7edc5092 --- /dev/null +++ b/app/styles/play/modal/buy-gems-modal.sass @@ -0,0 +1,8 @@ +#buy-gems-modal + button + width: 100% + margin-bottom: 10px + + .gem + width: 20px + height: 20px \ No newline at end of file diff --git a/app/styles/play/modal/item-details-view.sass b/app/styles/play/modal/item-details-view.sass new file mode 100644 index 000000000..0d523e518 --- /dev/null +++ b/app/styles/play/modal/item-details-view.sass @@ -0,0 +1,82 @@ +#item-details-view + + .nano-content + padding: 10px + + #item-title + position: absolute + width: 228px + height: 50px + left: 910px + top: 60px + z-index: 2 + + h2 + font-size: 20px + margin: 12px 20px + text-align: center + color: rgb(53,40,25) + + #item-details-body + position: absolute + left: 860px + top: 126px + width: 330px + height: 449px + //background: rgba(100,100,100,0.5) + + #item-container + height: 163px + width: 100% + + .item-img, .item-shadow + width: 130px + height: 130px + + .item-img + top: 15px + + .item-shadow + top: 25px + + img.hr + width: 80% + margin: 0 10% -3px + + &.faded + opacity: 0.4 + + .stat-row + height: 24px + position: relative + font-size: 20px + font-weight: bold + + .stat-label + position: absolute + left: 54px + color: rgb(93,73,52) + + .stat + position: absolute + left: 150px + color: rgb(42,38,28) + + #skills + margin: 25px + + h3 + color: rgb(41,35,25) + + strong + color: rgb(50,50,30) + + #selected-item-unlock-button + left: 856px + top: 594px + width: 337px + height: 41px + font-size: 16px + + img + height: 16px diff --git a/app/styles/play/modal/play-items-modal.sass b/app/styles/play/modal/play-items-modal.sass index 5a1d81d3b..a8a55e1c4 100644 --- a/app/styles/play/modal/play-items-modal.sass +++ b/app/styles/play/modal/play-items-modal.sass @@ -123,8 +123,8 @@ .tab-pane height: 100% - .nano-content - padding: 26px 51px 26px 26px + .nano-content + padding: 26px 51px 26px 26px //- Item box @@ -139,6 +139,9 @@ margin: 4px text-align: center position: relative + + &.silhouetted + cursor: default strong position: absolute @@ -222,6 +225,23 @@ background: url(/images/pages/play/modal/item-box-background-selected.png) + //- Item details. Non-specific item-details-view styling is in item-details-view.sass. + + #item-details-view + + #item-title + left: 910px + top: 60px + + #item-details-body + left: 860px + + #selected-item-unlock-button + left: 856px + + +#play-items-modal, #inventory-modal + //- Item list scrollbar .nano-pane @@ -236,87 +256,6 @@ margin-left: -3px margin-right: -3px - // color: red - - - //- Item details - - #item-title - position: absolute - width: 228px - height: 50px - left: 910px - top: 60px - z-index: 2 - - h2 - font-size: 20px - margin: 12px 20px - text-align: center - color: rgb(53,40,25) - - #item-details-body - position: absolute - left: 860px - top: 126px - width: 330px - height: 453px - //background: rgba(100,100,100,0.5) - overflow: scroll - - #item-container - height: 163px - width: 100% - - .item-img, .item-shadow - width: 130px - height: 130px - - .item-img - top: 15px - - .item-shadow - top: 25px - - img.hr - width: 80% - margin: 0 10% -3px - - &.faded - opacity: 0.4 - - .stat-row - height: 24px - position: relative - font-size: 20px - font-weight: bold - - .stat-label - position: absolute - left: 54px - color: rgb(93,73,52) - - .stat - position: absolute - left: 150px - color: rgb(42,38,28) - - #skills - margin: 25px - - h3 - color: rgb(41,35,25) - - strong - color: rgb(50,50,30) - - #selected-item-unlock-button - left: 856px - top: 594px - width: 337px - height: 41px - font-size: 16px - //- Item icons w/shadows (both in list and details areas) @@ -339,7 +278,19 @@ .item-silhouette @include filter(contrast(0%) brightness(0%)) opacity: 0.3 - + + .required-level + position: absolute + left: 0 + right: 5px + top: 70px + font-size: 20px + line-height: 20px + font-family: Open Sans Condensed + text-transform: uppercase + font-weight: bold + z-index: 2 + //- Unlock buttons (both in list and details areas) @@ -356,6 +307,9 @@ opacity: 1 color: rgba(255,255,255, 0.4) + +//- Use the two-column layout and background image if we are on a narrow screen. + @media only screen and (max-width: 1300px) #play-items-modal overflow-x: hidden diff --git a/app/templates/account/profile.jade b/app/templates/account/profile.jade index cba785d15..404de1521 100644 --- a/app/templates/account/profile.jade +++ b/app/templates/account/profile.jade @@ -25,13 +25,6 @@ block content button.btn#toggle-editing i.icon-cog span(data-i18n="account_profile.edit_profile") Edit Profile - if linkedInAuthorized && editing - button.btn.btn-success#importLinkedIn - i.icon-arrow-down - span Import LinkedIn - else if editing - button.btn.linked-in-button - script(type="in/Login" id="linkedInAuthButton" data-onAuth="contractCallback") if profile && profile.active button.btn.btn-success#toggle-job-profile-active i.icon-eye-open diff --git a/app/templates/achievements/achievement-popup.jade b/app/templates/achievements/achievement-popup.jade index f3e53d4dc..87d8c445a 100644 --- a/app/templates/achievements/achievement-popup.jade +++ b/app/templates/achievements/achievement-popup.jade @@ -14,7 +14,7 @@ .progress - var currentTitle = $.i18n.t('achievements.current_xp_prefix') + currentXP + ' XP' + $.i18n.t('achievements.current_xp_postfix'); - var newTitle = $.i18n.t('achievements.new_xp_prefix') + newXP + ' XP' + $.i18n.t('achievements.new_xp_postfix'); - - var leftTitle = $.i18n.t('achievements.left_xp_prefix') + newXP + ' XP' + $.i18n.t('achievements.left_xp_infix') + (level+1) + $.i18n.t('achievements.left_xp_postfix'); + - var leftTitle = $.i18n.t('achievements.left_xp_prefix') + leftXP + ' XP' + $.i18n.t('achievements.left_xp_infix') + (level+1) + $.i18n.t('achievements.left_xp_postfix'); .progress-bar.xp-bar-old(style="width:#{oldXPWidth}%" data-toggle="tooltip" data-placement="top" title="#{currentTitle}") .progress-bar.xp-bar-new(style="width:#{newXPWidth}%" data-toggle="tooltip" title="#{newTitle}") .progress-bar.xp-bar-left(style="width:#{leftXPWidth}%" data-toggle="tooltip" title="#{leftTitle}") diff --git a/app/templates/contribute/diplomat.jade b/app/templates/contribute/diplomat.jade index 53e8d0cd7..be8183a5e 100644 --- a/app/templates/contribute/diplomat.jade +++ b/app/templates/contribute/diplomat.jade @@ -37,9 +37,14 @@ block content h4(data-i18n="contribute.how_to_join") How to Join p + span.spr(data-i18n="contribute.diplomat_i18n_page_prefix") You can start translating our levels by going to our + a(href="/i18n") + strong(data-i18n="contribute.diplomat_i18n_page") translations page + span.spr(data-i18n="contribute.diplomat_i18n_page_suffix") , or our interface and website on GitHub. span(data-i18n="contribute.diplomat_join_pref_github") | Find your language locale file - a(data-i18n="contribute.diplomat_github_url", href='https://github.com/codecombat/codecombat/tree/master/app/locale') on GitHub + a(href='https://github.com/codecombat/codecombat/tree/master/app/locale') + strong(data-i18n="contribute.diplomat_github_url") on GitHub span(data-i18n="contribute.diplomat_join_suf_github") | , edit it online, and submit a pull request. Also, check this box below to | keep up-to-date on new internationalization developments! diff --git a/app/templates/game-menu/choose-hero-view.jade b/app/templates/game-menu/choose-hero-view.jade deleted file mode 100644 index 09d814424..000000000 --- a/app/templates/game-menu/choose-hero-view.jade +++ /dev/null @@ -1,74 +0,0 @@ -#hero-carousel.carousel.slide(data-interval=0) - .carousel-indicator-container - ol.carousel-indicators - for hero, index in heroes - li(data-hero-id=hero.get('original'), title=hero.get('name'), data-slide-to=index, data-target="#hero-carousel", class="hero-indicator" + (hero.locked ? " locked" : "")) - .hero-avatar - if hero.locked - img.lock-indicator(src="/images/pages/game-menu/lock.png") - - .carousel-inner - for hero in heroes - - var info = heroInfo[hero.get('slug')] - div(class="item hero-item" + (hero.locked ? " locked" : ""), data-hero-id=hero.get('original')) - canvas.hero-canvas - .hero-feature-image - img - .hero-stats - h2= info.fullName - //.hero-description= info.description // Not until we have written the descriptions. - .hero-status - span(data-i18n="choose_hero.status") Status - span.spr : - if hero.locked - | #{info.status} - else - | Available - .hero-class - span(data-i18n="choose_hero.weapons") Weapons - span.spr : - | #{info.weapons} - for statInfo in [{name: 'attack', color: 'danger'}, {name: 'health', color: 'info'}, {name: 'speed', color: 'success'}] - - var tooltip = ""; - - if (statInfo.name == 'attack') - - tooltip = Math.round(100 * info[statInfo.name + 'Factor']) + '% ' + info.class.toLowerCase() + ' weapon damage'; - - else if (statInfo.name == 'health') - - tooltip = Math.round(100 * info[statInfo.name + 'Factor']) + '% ' + info.class.toLowerCase() + ' armor health'; - - else if (statInfo.name == 'speed') - - tooltip = info.speedAbsolute + ' meters per second'; - .hero-stat(title=tooltip) - .progress - div(class="progress-bar progress-bar-" + statInfo.color, style="width: " + (10 * info[statInfo.name]) + "%") - .hero-stat-label - span(data-i18n="choose_hero." + statInfo.name) - span.spr : - | #{info[statInfo.name]} - - if info.skills - .hero-skills - span(data-i18n="choose_hero.skills") Skills - span.spr : - for skill in info.skills - code.spl.spr= skill - a.carousel-control.left(role="button", data-slide="prev", href="#hero-carousel") - span.glyphicon.glyphicon-chevron-left - a.carousel-control.right(role="button", data-slide="next", href="#hero-carousel") - span.glyphicon.glyphicon-chevron-right - - -.form - .form-group.select-group - //span.help-block(data-i18n="choose_hero.programming_language_description") Which programming language do you want to use? - label.control-label(for="option-code-language", data-i18n="choose_hero.programming_language") Programming Language - select#option-code-language(name="code-language") - for option in codeLanguages - option(value=option.id, selected=codeLanguage === option.id)= option.name - - if level - .form-group.select-group - label.control-label(for="#restart-level-confirm-button", data-i18n="play_level.reload_title") Reload All Code? - button(data-dismiss="modal", data-i18n="play_level.reload_confirm").btn.btn-sm.btn-danger#restart-level-confirm-button Reload All - span.help-block(data-i18n="play_level.reload_really") Are you sure you want to reload this level back to the beginning? - - - diff --git a/app/templates/game-menu/game-menu-modal.jade b/app/templates/game-menu/game-menu-modal.jade index 57a2b6ead..3fbfa3d9e 100644 --- a/app/templates/game-menu/game-menu-modal.jade +++ b/app/templates/game-menu/game-menu-modal.jade @@ -6,23 +6,20 @@ li a#change-hero-tab span.glyphicon.glyphicon-user - span(data-i18n='play.change_hero') + span(data-i18n='[title]game_menu.choose_hero_caption;play.change_hero') for submenu, index in submenus li(class=submenu === showTab ? "active" : "") a(href='#' + submenu + '-view', data-toggle='tab') span.glyphicon(class="glyphicon-"+iconMap[submenu]) - span(data-i18n='game_menu.' + submenu.replace('-', '_') + '_tab') + - var i18nKey = 'game_menu.' + submenu.replace('-', '_'); + span(data-i18n='[title]' + i18nKey + '_caption;' + i18nKey + '_tab') if me.get('anonymous') li.auth-tab(data-toggle='coco-modal', data-target="modal/AuthModal") a(data-toggle='coco-modal', data-target="modal/AuthModal") span.glyphicon.glyphicon-pencil - span(data-i18n='game_menu.auth_tab') + span(data-i18n='[title]game_menu.auth_caption;game_menu.auth_tab') .tab-content.game-menu-tab-content for submenu, index in submenus .tab-pane(id=submenu + '-view') -// .clearfix -// -//block modal-footer -// button.btn.btn-primary.btn-lg.overlaid-close-button(type="button", data-dismiss="modal", aria-hidden="true", data-i18n="modal.close") Close diff --git a/app/templates/game-menu/inventory-modal.jade b/app/templates/game-menu/inventory-modal.jade index 9bd81e4a8..846d23173 100644 --- a/app/templates/game-menu/inventory-modal.jade +++ b/app/templates/game-menu/inventory-modal.jade @@ -1,68 +1,52 @@ -extends /templates/modal/modal_base +.modal-dialog + .modal-content + img(src="/images/pages/play/modal/items-background-narrow.png")#play-items-modal-narrow-bg -block modal-header-content - h1#choose-inventory-header.choose-inventory-active(data-i18n="inventory.choose_inventory") Equip Items + div#gems-count-container + span#gems-count.big-font= gems -block modal-body-content - #equipped - .item-slot-row - for slot in ['left-ring', 'neck', 'eyes', 'head', 'wrists', 'right-ring'] + div#close-modal + span.glyphicon.glyphicon-remove + + #equipped + if selectedHero + img(src="/file/"+selectedHero.get('featureImage'))#hero-image + + for slot in ['head', 'eyes', 'neck', 'torso', 'gloves', 'wrists', 'left-hand', 'right-hand', 'waist', 'feet', 'left-ring', 'right-ring', 'minion', 'flag', 'pet', 'programming-book', 'misc-0', 'misc-1'] .item-slot(data-slot=slot) .placeholder - .item-container - if equipment[slot] - .replace-me(data-item-id=equipment[slot].get('original')) - - .item-slot-column.pull-left - // TODO: add in 'misc-0' again somehow? Used to be where 'flag' is now. - for slot in ['minion', 'torso', 'gloves', 'left-hand', 'flag'] - .item-slot(data-slot=slot) - .placeholder - .item-container - if equipment[slot] - .replace-me(data-item-id=equipment[slot].get('original')) - - .hero-container - canvas.equipped-hero-canvas - .hero-feature-image - img - #selected-items - #selected-equipped-item.well - h3(data-i18n="inventory.equipped_item") Equipped - .item-view-stub - #selected-available-item.well - h3(data-i18n="inventory.available_item") Available - .item-view-stub - - .item-slot-column.pull-right - for slot in ['pet', 'waist', 'feet', 'right-hand', 'programming-book'] - .item-slot(data-slot=slot) - .placeholder - .item-container - if equipment[slot] - .replace-me(data-item-id=equipment[slot].get('original')) - - // TODO: work in misc 1 again - //hr.slot-row-separator - // - //.item-slot-row.row-4 - // for slot in ['misc-1'] - // .item-slot(data-slot=slot) - // .placeholder - // .item-container - // if equipment[slot] - // .replace-me(data-item-id=equipment[slot].get('original')) - - #available-equipment - h4#unlocked-description - ul.list-group - for item in unlockedItems - li.list-group-item(class=item.classes, data-item-id=item.get('original')) - h4#locked-description - ul.list-group - for item in lockedItems - li.list-group-item(class=item.classes, data-item-id=item.get('original'), style="display: none") + if equipment[slot] + img.item(src=equipment[slot].getPortraitURL(), data-item-id=equipment[slot].id) -block modal-footer-content - button#choose-hero-button.btn.btn-lg.btn-primary.choose-inventory-active.pull-left(data-i18n="play.change_hero") Change Hero - button#play-level-button.btn.btn-lg.btn-success.choose-inventory-active(data-i18n="common.play") Play + #unequipped + .nano + .nano-content + if itemGroups + if itemGroups.availableItems.models.length + h4#available-description(data-i18n="inventory.available_item") + for item in itemGroups.availableItems.models + img.item(src=item.getPortraitURL(), class=item.classes, data-item-id=item.id) + .clearfix + + #double-click-hint.alert.alert-info.secret(data-i18n="inventory.should_equip") + + if itemGroups.restrictedItems.models.length + h4#restricted-description(data-i18n="inventory.restricted_title") + for item in itemGroups.restrictedItems.models + img.item(src=item.getPortraitURL(), class=item.classes, data-item-id=item.id) + .clearfix + + if itemGroups.lockedItems.models.length + h4#locked-description(data-i18n="play.locked") + for item in itemGroups.lockedItems.models + img.item(src=item.getPortraitURL(), class=item.classes, data-item-id=item.id) + .clearfix + + #item-details-view + #item-details-extra + button#equip-item-viewed.btn.secret(data-i18n="inventory.equip") + button#unequip-item-viewed.btn.secret(data-i18n="inventory.unequip") + .alert.alert-danger#restricted-item-viewed.secret(data-i18n="inventory.restricted") + + button#choose-hero-button.btn.btn-lg.btn-primary.choose-inventory-active(data-i18n="play.change_hero") Change Hero + button#play-level-button.btn.btn-lg.btn-success.choose-inventory-active(data-i18n="common.play") Play diff --git a/app/templates/play/level.jade b/app/templates/play/level.jade index b012ac1a8..78a4d3676 100644 --- a/app/templates/play/level.jade +++ b/app/templates/play/level.jade @@ -30,6 +30,8 @@ #thang-hud + #level-dialogue-view + button.btn.btn-lg.btn-warning.banner.header-font#stop-real-time-playback-button(title="Stop real-time playback", data-i18n="play_level.skip") Skip .footer diff --git a/app/templates/play/level/control_bar.jade b/app/templates/play/level/control_bar.jade index dfac0042d..bb637b16a 100644 --- a/app/templates/play/level/control_bar.jade +++ b/app/templates/play/level/control_bar.jade @@ -27,3 +27,6 @@ button.btn.btn-xs.btn-inverse.banner#next-game-button(title="Next Game", data-i18n="play_level.next-game") Next game! button.btn.btn-xs.btn-primary.banner#level-done-button(data-i18n="play_level.done") Done + + if me.get('anonymous') + button.btn.btn-xs.btn-primary.banner#control-bar-sign-up-button(data-toggle='coco-modal', data-target='modal/AuthModal', data-i18n="signup.sign_up") diff --git a/app/templates/play/level/hud.jade b/app/templates/play/level/hud.jade index 5e093bf04..be7fdc949 100644 --- a/app/templates/play/level/hud.jade +++ b/app/templates/play/level/hud.jade @@ -1,29 +1,14 @@ -.center +.wood-background +.hinge.hinge-0 +.hinge.hinge-1 +.hinge.hinge-2 +.hinge.hinge-3 + +.avatar-wrapper-container .thang-canvas-wrapper.thang-elem canvas.thang-canvas - + +.center + .thang-name .thang-props.thang-elem - .thang-name - - .thang-actions.thang-elem - .nano - .nano-content - .action-header(data-i18n="play_level.action_timeline") Action Timeline - .table-container - .progress-arrow.progress-indicator - .progress-line.progress-indicator - table - tbody - - .dialogue-area - p.bubble.dialogue-bubble - - .no-selection-message - div(data-i18n="play_level.click_to_select") Click on a unit to select it. - -.left-wing - .gradient#hud-left-gradient.gradient - -.right-wing - .gradient#hud-right-gradient.gradient \ No newline at end of file diff --git a/app/templates/play/level/hud_action.jade b/app/templates/play/level/hud_action.jade deleted file mode 100644 index c4b8cdaf4..000000000 --- a/app/templates/play/level/hud_action.jade +++ /dev/null @@ -1,5 +0,0 @@ -tr(name="#{action}") - td.action-indicator - td.action-label #{action} - td.action-timeline - .timeline-wrapper \ No newline at end of file diff --git a/app/templates/play/level/level-dialogue-view.jade b/app/templates/play/level/level-dialogue-view.jade new file mode 100644 index 000000000..75e9ecba6 --- /dev/null +++ b/app/templates/play/level/level-dialogue-view.jade @@ -0,0 +1,2 @@ +.dialogue-area + p.bubble.dialogue-bubble diff --git a/app/templates/play/level/modal/editor_config.jade b/app/templates/play/level/modal/editor_config.jade deleted file mode 100644 index bac960ed1..000000000 --- a/app/templates/play/level/modal/editor_config.jade +++ /dev/null @@ -1,55 +0,0 @@ -extends /templates/modal/modal_base - -block modal-header-content - h3(data-i18n="play_level.editor_config_title") Editor Configuration - -block modal-body-content - .form - .form-group.select-group - label.control-label(for="tome-session-language" data-i18n="play_level.editor_config_level_language_label") Language for This Level - select#tome-session-language(name="language") - for option in languages - option(value=option.id selected=(sessionLanguage === option.id))= option.name - span.help-block(data-i18n="play_level.editor_config_level_language_description") Define the programming language for this particular level. - - .form-group.select-group - label.control-label(for="tome-language" data-i18n="play_level.editor_config_default_language_label") Default Programming Language - select#tome-language(name="language") - for option in languages - option(value=option.id selected=(language === option.id))= option.name - span.help-block(data-i18n="play_level.editor_config_default_language_description") Define the programming language you want to code in when starting new levels. - - .form-group.select-group - label.control-label(for="tome-key-bindings" data-i18n="play_level.editor_config_keybindings_label") Key Bindings - select#tome-key-bindings(name="keyBindings") - option(value="default" selected=(keyBindings === "default") data-i18n="play_level.editor_config_keybindings_default") Default (Ace) - option(value="vim" selected=(keyBindings === "vim")) Vim - option(value="emacs" selected=(keyBindings === "emacs")) Emacs - span.help-block(data-i18n="play_level.editor_config_keybindings_description") Adds additional shortcuts known from the common editors. - - .form-group.checkbox - label(for="tome-live-completion") - input#tome-live-completion(name="liveCompletion", type="checkbox", checked=liveCompletion) - span(data-i18n="play_level.editor_config_livecompletion_label") Live Autocompletion - span.help-block(data-i18n="play_level.editor_config_livecompletion_description") Displays autocomplete suggestions while typing. - - .form-group.checkbox - label(for="tome-invisibles") - input#tome-invisibles(name="invisibles", type="checkbox", checked=invisibles) - span(data-i18n="play_level.editor_config_invisibles_label") Show Invisibles - span.help-block(data-i18n="play_level.editor_config_invisibles_description") Displays invisibles such as spaces or tabs. - - .form-group.checkbox - label(for="tome-indent-guides") - input#tome-indent-guides(name="indentGuides", type="checkbox", checked=indentGuides) - span(data-i18n="play_level.editor_config_indentguides_label") Show Indent Guides - span.help-block(data-i18n="play_level.editor_config_indentguides_description") Displays vertical lines to see indentation better. - - .form-group.checkbox - label(for="tome-behaviors") - input#tome-behaviors(name="behaviors", type="checkbox", checked=behaviors) - span(data-i18n="play_level.editor_config_behaviors_label") Smart Behaviors - span.help-block(data-i18n="play_level.editor_config_behaviors_description") Autocompletes brackets, braces, and quotes. - -block modal-footer-content - a(href='#', data-dismiss="modal", aria-hidden="true", data-i18n="modal.close").btn.btn-primary Close diff --git a/app/templates/play/level/modal/keyboard_shortcuts.jade b/app/templates/play/level/modal/keyboard_shortcuts.jade index f38fedaa0..961b595d1 100644 --- a/app/templates/play/level/modal/keyboard_shortcuts.jade +++ b/app/templates/play/level/modal/keyboard_shortcuts.jade @@ -19,7 +19,7 @@ block modal-body-content dl.dl-horizontal dt(title=shift + " " + enter) kbd ⇧ #{enter} - dd(data-i18n="keyboard_shortcuts.cast_spell") Cast current spell. + dd(data-i18n="keyboard_shortcuts.run_code") Run current code. dl.dl-horizontal dt(title=ctrlName + " " + shift + " " + enter) kbd #{ctrl} ⇧ #{enter} diff --git a/app/templates/play/level/modal/reload-level-modal.jade b/app/templates/play/level/modal/reload-level-modal.jade new file mode 100644 index 000000000..5992717e1 --- /dev/null +++ b/app/templates/play/level/modal/reload-level-modal.jade @@ -0,0 +1,11 @@ +extends /templates/modal/modal_base + +block modal-header-content + h3(data-i18n="play_level.reload_title") Reload All Code? + +block modal-body-content + p(data-i18n="play_level.reload_really") Are you sure you want to reload this level back to the beginning? + +block modal-footer-content + a(href='#', data-dismiss="modal", aria-hidden="true", data-i18n="modal.close").btn Close + a(href='#', data-dismiss="modal", aria-hidden="true", data-i18n="play_level.reload_confirm").btn.btn-primary#restart-level-confirm-button Reload All \ No newline at end of file diff --git a/app/templates/play/level/thang_avatar.jade b/app/templates/play/level/thang_avatar.jade index 15af1333a..e92cbb7fd 100644 --- a/app/templates/play/level/thang_avatar.jade +++ b/app/templates/play/level/thang_avatar.jade @@ -1,7 +1,8 @@ .thang-avatar-wrapper(class="team-" + (thang.team || "neutral")) //canvas(width=100, height=100, title=thang.id + " - " + thang.team) //- var title = thang.id + " - " + thang.team + (thang.type ? ' - type: "' + thang.type + '"' : '') - img.img-responsive(src=avatarURL) + img.avatar(src=avatarURL) + img.avatar-frame(src="/images/level/thang_avatar_frame.png") .badge.problems .badge.shared-thangs if includeName diff --git a/app/templates/play/level/tome/cast_button.jade b/app/templates/play/level/tome/cast_button.jade index a6290974c..b63e0db13 100644 --- a/app/templates/play/level/tome/cast_button.jade +++ b/app/templates/play/level/tome/cast_button.jade @@ -1,6 +1,11 @@ -button.btn.btn-lg.btn-inverse.banner.cast-button(title=castVerbose, data-i18n="play_level.tome_run_button_ran") Ran +button.btn.btn-lg.btn-illustrated.cast-button(title=castVerbose) + span(data-i18n="play_level.tome_run_button_ran") Ran -if testSubmitText != null && testSubmitText.length > 0 - button.btn.btn-lg.btn-success.banner.submit-button(title=castRealTimeVerbose) #{testSubmitText} -else - button.btn.btn-lg.btn-success.banner.submit-button(title=castRealTimeVerbose, data-i18n="play_level.tome_submit_button") Submit +button.btn.btn-lg.btn-illustrated.submit-button(title=castRealTimeVerbose) + if testSubmitText != null && testSubmitText.length > 0 + span= testSubmitText + else + span(data-i18n="play_level.tome_submit_button") Submit + +button.btn.btn-lg.btn-illustrated.done-button.secret + span(data-i18n="play_level.done") Done diff --git a/app/templates/play/level/tome/problem_alert.jade b/app/templates/play/level/tome/problem_alert.jade index 0ca57fe69..cc80b0a53 100644 --- a/app/templates/play/level/tome/problem_alert.jade +++ b/app/templates/play/level/tome/problem_alert.jade @@ -1,7 +1,9 @@ button.close(type="button") × +h3.problem-alert-title(data-i18n="play_level.problem_alert_title") Fix Your Code if hint span.problem-title!= hint br + br span.problem-subtitle!= message else span.problem-title!= message diff --git a/app/templates/play/level/tome/spell_list_tab_entry.jade b/app/templates/play/level/tome/spell_list_tab_entry.jade index a2ec05b06..e0e4f95b6 100644 --- a/app/templates/play/level/tome/spell_list_tab_entry.jade +++ b/app/templates/play/level/tome/spell_list_tab_entry.jade @@ -1,23 +1,30 @@ -img(src="/images/level/code_editor_tab_background.png").spell-tab-image-hidden.hidden +.hinge.hinge-0 +.hinge.hinge-1 +.hinge.hinge-2 +.hinge.hinge-3 if includeSpellList - .btn.btn-small.spell-list-button(data-i18n="[title]play_level.tome_see_all_methods", title="See all methods you can edit") - i.icon-chevron-down + .btn.btn-small.btn-illustrated.spell-list-button(data-i18n="[title]play_level.tome_see_all_methods", title="See all methods you can edit") + .glyphicon.glyphicon-chevron-down + .thang-avatar-placeholder -code #{methodSignature} +.method-name-area + .method-label(data-i18n="play_level.tome_current_method") Current Method + .method-signature #{methodSignature} .spell-tool-buttons - if levelType !== 'hero' - .btn.btn-small.fullscreen-code(title=maximizeShortcutVerbose) - i.icon-fullscreen - i.icon-resize-small - - .btn.btn-small.reload-code(data-i18n="[title]play_level.tome_reload_method", title="Reload original code for this method") - i.icon-repeat + .btn.btn-small.btn-illustrated.reload-code(data-i18n="[title]play_level.tome_reload_method", title="Reload original code for this method") + .glyphicon.glyphicon-repeat + span.spl(data-i18n="play_level.reload") Reload - if codeLanguage === 'javascript' - .btn.btn-small.beautify-code(title=beautifyShortcutVerbose) - i.icon-magnet + if levelType !== 'hero' && levelType !== 'hero-ladder' && levelType !== 'hero-coop' + .btn.btn-small.btn-illustrated.fullscreen-code(title=maximizeShortcutVerbose) + .glyphicon.glyphicon-fullscreen + .glyphicon.glyphicon-resize-small + + if codeLanguage === 'javascript' && levelType !== 'hero' && levelType !== 'hero-ladder' && levelType !== 'hero-coop' + .btn.btn-small.btn-illustrated.beautify-code(title=beautifyShortcutVerbose) + .glyphicon.glyphicon-magnet .clearfix \ No newline at end of file diff --git a/app/templates/play/level/tome/spell_palette.jade b/app/templates/play/level/tome/spell_palette.jade index 0b27aa90e..304ef1a64 100644 --- a/app/templates/play/level/tome/spell_palette.jade +++ b/app/templates/play/level/tome/spell_palette.jade @@ -1,8 +1,7 @@ -img(src="/images/level/code_palette_background.png").code-palette-background +img(src="/images/level/code_palette_wood_background.png").code-palette-background span.code-palette-background if entryGroupSlugs // Non-hero; group by entry groups, or maybe nothing. - .code-language-logo ul(class="nav nav-pills" + (tabbed ? ' multiple-tabs' : '')) each slug, group in entryGroupSlugs li(class=group == "this" || slug == "available-spells" ? "active" : "") diff --git a/app/templates/play/level/tome/thang_list.jade b/app/templates/play/level/tome/thang_list.jade deleted file mode 100644 index 2d0140f05..000000000 --- a/app/templates/play/level/tome/thang_list.jade +++ /dev/null @@ -1,14 +0,0 @@ -#readwrite-thangs.thang-list-section - h3(data-i18n="play_level.tome_minion_spells") Your Minions' Spells - .thang-list - .clearfix - -#read-thangs.thang-list-section - h3(data-i18n="play_level.tome_read_only_spells") Read-Only Spells - .thang-list - .clearfix - -#muggle-thangs.thang-list-section - h3(data-i18n="play_level.tome_other_units") Other Units - .thang-list - .clearfix diff --git a/app/templates/play/level/tome/thang_list_entry.jade b/app/templates/play/level/tome/thang_list_entry.jade deleted file mode 100644 index e69de29bb..000000000 diff --git a/app/templates/play/level/tome/thang_list_entry_spells.jade b/app/templates/play/level/tome/thang_list_entry_spells.jade deleted file mode 100644 index b95ca4d2a..000000000 --- a/app/templates/play/level/tome/thang_list_entry_spells.jade +++ /dev/null @@ -1,5 +0,0 @@ -h4.not-code(data-i18n="play_level.tome_select_spell") Select a Spell -.thang-list-entry-spells - for spell in spells - div.thang-list-entry-spell - code(data-spell-name=spell.name) #{spell.name}(#{parameters}) \ No newline at end of file diff --git a/app/templates/play/level/tome/tome.jade b/app/templates/play/level/tome/tome.jade index f1d1d4dfb..c29f9e4f0 100644 --- a/app/templates/play/level/tome/tome.jade +++ b/app/templates/play/level/tome/tome.jade @@ -2,8 +2,6 @@ #spell-list-view -#thang-list-view - #cast-button-view #spell-view diff --git a/app/templates/play/modal/buy-gems-modal.jade b/app/templates/play/modal/buy-gems-modal.jade new file mode 100644 index 000000000..6833949f6 --- /dev/null +++ b/app/templates/play/modal/buy-gems-modal.jade @@ -0,0 +1,14 @@ +extends /templates/modal/modal_base + +block modal-header-content + h3(data-i18n='play.buy_gems') + +block modal-body-content + for product in products + button.product.btn.btn-lg(value=product.id) + img.gem(src="/images/common/gem.png") + span x#{product.gems): #{product.price} + +block modal-footer + .modal-footer + button(data-dismiss="modal", data-i18n="common.cancel").btn Cancel diff --git a/app/templates/play/modal/item-details-view.jade b/app/templates/play/modal/item-details-view.jade index df048ebca..9d7f4c598 100644 --- a/app/templates/play/modal/item-details-view.jade +++ b/app/templates/play/modal/item-details-view.jade @@ -4,31 +4,38 @@ #item-details-body if item - #item-container - img.item-img(src=item.getPortraitURL()) - img.item-shadow(src=item.getPortraitURL()) - - img.hr(src="/images/pages/play/modal/hr.png") - - for stat in stats - div.stat-row.big-font - div.stat-label= stat.name - div.stat= stat.display - img.hr(src="/images/pages/play/modal/hr.png" class=stat.isLast ? "" : "faded") + .nano + .nano-content + #item-container + img.item-img(src=item.getPortraitURL()) + img.item-shadow(src=item.getPortraitURL()) - if props.length - #skills - h3.big-font(data-i18n="play.skills-granted") - for prop in props - p - strong.big-font= prop.name - span.spr : - span!= prop.description + img.hr(src="/images/pages/play/modal/hr.png") - if item.comingSoon - .text-center - h3 This item has no stats. - p Only admins will see it for now. + for stat in stats + div.stat-row.big-font + div.stat-label= stat.name + div.stat= stat.display + img.hr(src="/images/pages/play/modal/hr.png" class=stat.isLast ? "" : "faded") + + if props.length + #skills + h3.big-font(data-i18n="play.skills-granted") + for prop in props + p + strong.big-font= prop.name + span.spr : + span!= prop.description + + if item.comingSoon + .text-center + h3 This item has no stats. + p Only admins will see it for now. if item && !item.owned - button#selected-item-unlock-button.btn.big-font.unlock-button(disabled=!item.affordable, data-item-id=item.id, data-i18n="play.unlock") Unlock \ No newline at end of file + button#selected-item-unlock-button.btn.big-font.unlock-button(disabled=!item.affordable, data-item-id=item.id) + span(data-i18n="play.unlock") Unlock + span.spl= '('+item.get('gems') + img(src="/images/common/gem.png") + span ) + \ No newline at end of file diff --git a/app/templates/play/modal/play-items-modal.jade b/app/templates/play/modal/play-items-modal.jade index 38e4be7d9..ec6b2d21d 100644 --- a/app/templates/play/modal/play-items-modal.jade +++ b/app/templates/play/modal/play-items-modal.jade @@ -26,11 +26,16 @@ .nano-content for item in itemCategoryCollections[category].models - var hidden = item.comingSoon && !me.isAdmin() - div(class="item" + (hidden ? " hide" : ""), data-item-id=item.id) + - hidden = hidden || (!item.get('gems') && !item.owned) + div(class="item" + (hidden ? " hide" : "") + (item.silhouetted && !item.owned ? " silhouetted" : ""), data-item-id=item.id) if item.silhouetted && !item.owned span.glyphicon.glyphicon-lock.bolder span.glyphicon.glyphicon-lock img.item-silhouette(src=item.getPortraitURL()) + if item.level + .required-level + div(data-i18n="general.player_level") + div= item.level else strong.big-font= item.name img.item-img(src=item.getPortraitURL()) diff --git a/app/templates/play/world-map-view.jade b/app/templates/play/world-map-view.jade index 487e7ebd3..b482edccf 100644 --- a/app/templates/play/world-map-view.jade +++ b/app/templates/play/world-map-view.jade @@ -9,7 +9,7 @@ each level in campaign.levels if level.hidden continue; - - var next = level.id == nextLevel || (!seenNext && levelStatusMap[level.id] != "complete" && !level.locked && !level.disabled); + - var next = level.id == nextLevel || (!seenNext && levelStatusMap[level.id] != "complete" && !level.locked && !level.disabled && (!level.practice || me.getBranchingGroup() == 'all-practice')); - seenNext = seenNext || next; div(style="left: #{level.x}%; bottom: #{level.y}%; background-color: #{level.color}", class="level" + (next ? " next" : "") + (level.disabled ? " disabled" : "") + (level.locked ? " locked" : "") + " " + levelStatusMap[level.id] || "", data-level-id=level.id, title=level.name) a(href=level.type == 'hero' ? '#' : level.disabled ? "/play" : "/play/#{level.levelPath || 'level'}/#{level.id}", disabled=level.disabled, data-level-id=level.id, data-level-path=level.levelPath || 'level', data-level-name=level.name) @@ -18,9 +18,13 @@ div(class="level-info " + (levelStatusMap[level.id] || "")) h3= level.name + (level.disabled ? " (Coming soon!)" : (level.locked ? " (Locked)" : "")) .level-description= level.description - span(data-i18n="play.level_difficulty") Difficulty: - each i in Array(level.difficulty) - i.icon-star + if level.disabled + p + span.spr(data-i18n="play.awaiting_levels_adventurer_prefix") We release five levels per week. + a.spr(href="/contribute/adventurer") + strong(data-i18n="play.awaiting_levels_adventurer") Sign up as an Adventurer + span.spl(data-i18n="play.awaiting_levels_adventurer_suffix") to be the first to play new levels. + - var playCount = levelPlayCountMap[level.id] if playCount && playCount.sessions > 20 div @@ -29,13 +33,14 @@ span.spr , #{Math.round(playCount.playtime / 3600)} span(data-i18n="play.hours_played") hours played .campaign-label(style="color: #{campaign.color}")= campaign.name - if isIPadApp + if isIPadApp && !level.disabled && !level.locked button.btn.btn-success.btn-lg.start-level(data-i18n="common.play") Play .game-controls.header-font button.btn.items(data-toggle='coco-modal', data-target='play/modal/PlayItemsModal', data-i18n="[title]play.items") button.btn.heroes(data-toggle='coco-modal', data-target='play/modal/PlayHeroesModal', data-i18n="[title]play.heroes") if me.isAdmin() + button.btn.gems(data-toggle='coco-modal', data-target='play/modal/BuyGemsModal', data-i18n="[title]play.buy_gems") button.btn.achievements(data-toggle='coco-modal', data-target='play/modal/PlayAchievementsModal', data-i18n="[title]play.achievements") button.btn.account(data-toggle='coco-modal', data-target='play/modal/PlayAccountModal', data-i18n="[title]play.account") button.btn.settings(data-toggle='coco-modal', data-target='play/modal/PlaySettingsModal', data-i18n="[title]play.settings") @@ -59,7 +64,9 @@ .user-status.header-font span.gem.gem-20 - span.spr= me.gems() + span#gems-count.spr= me.gems() + span.spl.spr(data-i18n="general.player_level") + span.spr= me.level() if me.get('anonymous') span.spr(data-i18n="play.anonymous_player") Anonymous Player button.btn.btn-default.btn-flat.btn-sm(data-toggle='coco-modal', data-target='modal/AuthModal', data-i18n="login.log_in") diff --git a/app/treema-ext.coffee b/app/treema-ext.coffee index a12630d3b..a38c26a10 100644 --- a/app/treema-ext.coffee +++ b/app/treema-ext.coffee @@ -3,6 +3,9 @@ CocoCollection = require 'collections/CocoCollection' {me} = require('lib/auth') locale = require 'locale/locale' +initializeFilePicker = -> + require('lib/services/filepicker')() unless window.application.isIPadApp + class DateTimeTreema extends TreemaNode.nodeMap.string valueClass: 'treema-date-time' buildValueForDisplay: (el, data) -> el.text(moment(data).format('llll')) @@ -20,6 +23,7 @@ class LiveEditingMarkup extends TreemaNode.nodeMap.ace constructor: -> super(arguments...) @workingSchema.aceMode = 'ace/mode/markdown' + initializeFilePicker() initEditor: (valEl) -> buttonRow = $('
') @@ -79,6 +83,10 @@ class SoundFileTreema extends TreemaNode.nodeMap.string editable: false soundCollection: 'files' + constructor: -> + super arguments... + initializeFilePicker() + onClick: (e) -> return if $(e.target).closest('.btn').length super(arguments...) @@ -180,6 +188,10 @@ class ImageFileTreema extends TreemaNode.nodeMap.string valueClass: 'treema-image-file' editable: false + constructor: -> + super arguments... + initializeFilePicker() + onClick: (e) -> return if $(e.target).closest('.btn').length super(arguments...) diff --git a/app/views/HomeView.coffee b/app/views/HomeView.coffee index 725905bed..7bc31c09e 100644 --- a/app/views/HomeView.coffee +++ b/app/views/HomeView.coffee @@ -34,4 +34,7 @@ module.exports = class HomeView extends RootView e.preventDefault() e.stopImmediatePropagation() window.tracker?.trackEvent 'Homepage', Action: 'Play' - window.open '/play', '_blank' \ No newline at end of file + window.open '/play', '_blank' + + afterInsert: -> + super(arguments...) diff --git a/app/views/achievements/AchievementPopup.coffee b/app/views/achievements/AchievementPopup.coffee index 31356abbc..1faeee624 100644 --- a/app/views/achievements/AchievementPopup.coffee +++ b/app/views/achievements/AchievementPopup.coffee @@ -20,9 +20,9 @@ module.exports = class AchievementPopup extends CocoView calculateData: -> currentLevel = me.level() nextLevel = currentLevel + 1 - currentLevelExp = User.expForLevel(currentLevel) + currentLevelXP = User.expForLevel(currentLevel) nextLevelXP = User.expForLevel(nextLevel) - totalExpNeeded = nextLevelXP - currentLevelExp + totalXPNeeded = nextLevelXP - currentLevelXP expFunction = @achievement.getExpFunction() currentXP = me.get 'points', true if @achievement.isRepeatable() @@ -30,14 +30,14 @@ module.exports = class AchievementPopup extends CocoView else achievedXP = @achievement.get 'worth', true previousXP = currentXP - achievedXP - leveledUp = currentXP - achievedXP < currentLevelExp + leveledUp = currentXP - achievedXP < currentLevelXP #console.debug 'Leveled up' if leveledUp - alreadyAchievedPercentage = 100 * (previousXP - currentLevelExp) / totalExpNeeded + alreadyAchievedPercentage = 100 * (previousXP - currentLevelXP) / totalXPNeeded alreadyAchievedPercentage = 0 if alreadyAchievedPercentage < 0 # In case of level up - newlyAchievedPercentage = if leveledUp then 100 * (currentXP - currentLevelExp) / totalExpNeeded else 100 * achievedXP / totalExpNeeded + newlyAchievedPercentage = if leveledUp then 100 * (currentXP - currentLevelXP) / totalXPNeeded else 100 * achievedXP / totalXPNeeded - #console.debug "Current level is #{currentLevel} (#{currentLevelExp} xp), next level is #{nextLevel} (#{nextLevelXP} xp)." - #console.debug "Need a total of #{nextLevelXP - currentLevelExp}, already had #{previousXP} and just now earned #{achievedXP} totalling on #{currentXP}" + #console.debug "Current level is #{currentLevel} (#{currentLevelXP} xp), next level is #{nextLevel} (#{nextLevelXP} xp)." + #console.debug "Need a total of #{nextLevelXP - currentLevelXP}, already had #{previousXP} and just now earned #{achievedXP} totalling on #{currentXP}" data = title: @achievement.i18nName() diff --git a/app/views/admin/FilesView.coffee b/app/views/admin/FilesView.coffee index f444bd91a..c2c4815bc 100644 --- a/app/views/admin/FilesView.coffee +++ b/app/views/admin/FilesView.coffee @@ -12,6 +12,7 @@ module.exports = class FilesView extends RootView afterRender: -> super() + require('lib/services/filepicker')() # Initialize if needed @loadFiles() onFileChosen: (InkBlob) => diff --git a/app/views/contribute/DiplomatView.coffee b/app/views/contribute/DiplomatView.coffee index 90bc1411e..2e369c515 100644 --- a/app/views/contribute/DiplomatView.coffee +++ b/app/views/contribute/DiplomatView.coffee @@ -85,3 +85,4 @@ module.exports = class DiplomatView extends ContributeClassView ur: [] # اُردُو, Urdu ms: [] # Bahasa Melayu, Bahasa Malaysia ca: ['ArniMcFrag'] # Català, Catalan + gl: ['mcaeiror'] # Galego, Galician diff --git a/app/views/game-menu/ChooseHeroView.coffee b/app/views/game-menu/ChooseHeroView.coffee deleted file mode 100644 index d88eff8e1..000000000 --- a/app/views/game-menu/ChooseHeroView.coffee +++ /dev/null @@ -1,295 +0,0 @@ -CocoView = require 'views/kinds/CocoView' -template = require 'templates/game-menu/choose-hero-view' -{me} = require 'lib/auth' -ThangType = require 'models/ThangType' -CocoCollection = require 'collections/CocoCollection' -SpriteBuilder = require 'lib/sprites/SpriteBuilder' -AudioPlayer = require 'lib/AudioPlayer' - -module.exports = class ChooseHeroView extends CocoView - id: 'choose-hero-view' - className: 'tab-pane' - template: template - - events: - 'click #restart-level-confirm-button': -> Backbone.Mediator.publish 'level:restart', {} - 'slide.bs.carousel #hero-carousel': 'onHeroChanged' - 'change #option-code-language': 'onCodeLanguageChanged' - - shortcuts: - 'left': -> @$el.find('#hero-carousel').carousel('prev') if @heroes.models.length and not @$el.hasClass 'secret' - 'right': -> @$el.find('#hero-carousel').carousel('next') if @heroes.models.length and not @$el.hasClass 'secret' - - constructor: (options) -> - super options - @heroes = new CocoCollection([], {model: ThangType}) - @heroes.url = '/db/thang.type?view=heroes&project=original,name,slug,soundTriggers,featureImage,gems,heroClass,description,components' - @supermodel.loadCollection(@heroes, 'heroes') - @stages = {} - - destroy: -> - for heroIndex, stage of @stages - createjs.Ticker.removeEventListener "tick", stage - stage.removeAllChildren() - super() - - getRenderData: (context={}) -> - context = super(context) - context.heroes = @heroes.models - hero.locked = temporaryHeroInfo[hero.get('slug')].status is 'Locked' and not me.ownsHero hero.get('original') for hero in context.heroes - context.level = @options.level - context.codeLanguages = [ - {id: 'python', name: 'Python (Default)'} - {id: 'javascript', name: 'JavaScript'} - {id: 'coffeescript', name: 'CoffeeScript'} - {id: 'clojure', name: 'Clojure (Experimental)'} - {id: 'lua', name: 'Lua (Experimental)'} - {id: 'io', name: 'Io (Experimental)'} - ] - context.codeLanguage = @codeLanguage = @options.session.get('codeLanguage') ? me.get('aceConfig')?.language ? 'python' - context.heroInfo = temporaryHeroInfo - context - - afterRender: -> - super() - return unless @supermodel.finished() - heroes = @heroes.models - @$el.find('.hero-indicator').each -> - heroID = $(@).data('hero-id') - hero = _.find heroes, (hero) -> hero.get('original') is heroID - $(@).find('.hero-avatar').css('background-image', "url(#{hero.getPortraitURL()})").tooltip() - _.defer => $(@).addClass 'initialized' - @canvasWidth = 313 # @$el.find('canvas').width() # unreliable, whatever - @canvasHeight = @$el.find('canvas').height() - heroConfig = @options.session.get('heroConfig') ? me.get('heroConfig') ? {} - heroIndex = Math.max 0, _.findIndex(heroes, ((hero) -> hero.get('original') is heroConfig.thangType)) - @$el.find(".hero-item:nth-child(#{heroIndex + 1}), .hero-indicator:nth-child(#{heroIndex + 1})").addClass('active') - @onHeroChanged direction: null, relatedTarget: @$el.find('.hero-item')[heroIndex] - @$el.find('.hero-stat').tooltip() - @buildCodeLanguages() - - onHeroChanged: (e) -> - direction = e.direction # 'left' or 'right' - heroItem = $(e.relatedTarget) - hero = _.find @heroes.models, (hero) -> hero.get('original') is heroItem.data('hero-id') - return console.error "Couldn't find hero from heroItem:", heroItem unless hero - heroIndex = heroItem.index() - @$el.find('.hero-indicator').each -> - distance = Math.min 3, Math.abs $(@).index() - heroIndex - size = 100 - (50 / 3) * distance - $(@).css width: size, height: size, top: -(100 - size) / 2 - heroInfo = temporaryHeroInfo[hero.get('slug')] - locked = heroInfo.status is 'Locked' and not me.ownsHero ThangType.heroes[hero.get('slug')] - hero = @loadHero hero, heroIndex - @preloadHero heroIndex + 1 - @preloadHero heroIndex - 1 - @selectedHero = hero unless locked - Backbone.Mediator.publish 'level:hero-selection-updated', hero: @selectedHero - $('#choose-inventory-button').prop 'disabled', locked - - getFullHero: (original) -> - url = "/db/thang.type/#{original}/version" - if fullHero = @supermodel.getModel url - return fullHero - fullHero = new ThangType() - fullHero.setURL url - fullHero = (@supermodel.loadModel fullHero, 'thang').model - fullHero - - preloadHero: (heroIndex) -> - return unless hero = @heroes.models[heroIndex] - @loadHero hero, heroIndex, true - - loadHero: (hero, heroIndex, preloading=false) -> - createjs.Ticker.removeEventListener 'tick', stage for stage in _.values @stages - if featureImage = hero.get 'featureImage' - $(".hero-item[data-hero-id='#{hero.get('original')}'] canvas").hide() - $(".hero-item[data-hero-id='#{hero.get('original')}'] .hero-feature-image").show().find('img').prop('src', '/file/' + featureImage) - @playSelectionSound hero unless preloading - return hero - createjs.Ticker.setFPS 30 # In case we paused it from being inactive somewhere else - if stage = @stages[heroIndex] - unless preloading - _.defer -> createjs.Ticker.addEventListener 'tick', stage # Deferred, otherwise it won't start updating for some reason. - @playSelectionSound hero - return hero - fullHero = @getFullHero hero.get 'original' - onLoaded = => - return unless canvas = $(".hero-item[data-hero-id='#{fullHero.get('original')}'] canvas") - canvas.show().prop width: @canvasWidth, height: @canvasHeight - builder = new SpriteBuilder(fullHero) - movieClip = builder.buildMovieClip(fullHero.get('actions').attack?.animation ? fullHero.get('actions').idle.animation) - movieClip.scaleX = movieClip.scaleY = canvas.prop('height') / 120 # Average hero height is ~110px tall at normal resolution - if fullHero.get('name') in ['Knight', 'Robot Walker'] # These are too big, so shrink them. - movieClip.scaleX *= 0.7 - movieClip.scaleY *= 0.7 - movieClip.regX = -fullHero.get('positions').registration.x - movieClip.regY = -fullHero.get('positions').registration.y - movieClip.x = canvas.prop('width') * 0.5 - movieClip.y = canvas.prop('height') * 0.925 # This is where the feet go. - stage = new createjs.Stage(canvas[0]) - @stages[heroIndex] = stage - stage.addChild movieClip - stage.update() - movieClip.gotoAndPlay 0 - unless preloading - createjs.Ticker.addEventListener 'tick', stage - @playSelectionSound hero - if fullHero.loaded - _.defer onLoaded - else - @listenToOnce fullHero, 'sync', onLoaded - fullHero - - playSelectionSound: (hero) -> - return if @$el.hasClass 'secret' - @currentSoundInstance?.stop() - return unless sounds = hero.get('soundTriggers')?.selected - return unless sound = sounds[Math.floor Math.random() * sounds.length] - name = AudioPlayer.nameForSoundReference sound - AudioPlayer.preloadSoundReference sound - @currentSoundInstance = AudioPlayer.playSound name, 1 - @currentSoundInstance - - buildCodeLanguages: -> - $select = @$el.find('#option-code-language') - $select.fancySelect().parent().find('.options li').each -> - languageName = $(@).text() - languageID = $(@).data('value') - blurb = $.i18n.t("choose_hero.#{languageID}_blurb") - $(@).text("#{languageName} - #{blurb}") - - onCodeLanguageChanged: (e) -> - @codeLanguage = @$el.find('#option-code-language').val() - @codeLanguageChanged = true - - onShown: -> - # Called when we switch tabs to this within the modal - - onHidden: -> - # Called when the modal itself is dismissed - - -temporaryHeroInfo = - knight: - fullName: 'Tharin Thunderfist' - weapons: 'Swords - Short Range, No Magic' - class: 'Warrior' - description: 'Beefcake! Beefcaaake!' - status: 'Available' - attack: 8 - attackFactor: 1.2 - health: 8.5 - healthFactor: 1.4 - speed: 1.5 - speedAbsolute: 6 - - captain: - fullName: 'Captain Anya Weston' - weapons: 'Swords - Short Range, No Magic' - class: 'Warrior' - description: 'Don\'t bother me, I\'m winning this fight for you.' - status: 'Available' - attack: 8 - attackFactor: 1.2 - health: 8.5 - healthFactor: 1.4 - speed: 1.5 - speedAbsolute: 6 - - thoktar: - fullName: 'Thoktar the Devourer' - weapons: 'Wands, Staffs - Long Range, Magic' - class: 'Wizard' - description: '???' - status: 'Locked' - attack: 5 - attackFactor: 2 - health: 4.5 - healthFactor: 1.4 - speed: 2.5 - speedAbsolute: 7 - skills: ['summonElemental', 'devour'] - - equestrian: - fullName: 'Rider Reynaldo' - weapons: 'Crossbows, Guns - Long Range, No Magic' - class: 'Ranger' - description: '???' - status: 'Locked' - attack: 6 - attackFactor: 1.4 - health: 7 - healthFactor: 1.8 - speed: 1.5 - speedAbsolute: 6 - skills: ['hide'] - - 'potion-master': - fullName: 'Master Snake' - weapons: 'Wands, Staffs - Long Range, Magic' - class: 'Wizard' - description: '???' - status: 'Locked' - attack: 2 - attackFactor: 0.833 - health: 4 - healthFactor: 1.2 - speed: 6 - speedAbsolute: 11 - skills: ['brewPotion'] - - librarian: - fullName: 'Hushbaum' - weapons: 'Wands, Staffs - Long Range, Magic' - class: 'Wizard' - description: '???' - status: 'Locked' - attack: 3 - attackFactor: 1.2 - health: 4.5 - healthFactor: 1.4 - speed: 2.5 - speedAbsolute: 7 - - 'robot-walker': - fullName: '???' - weapons: '???' - class: 'Ranger' - description: '???' - status: 'Locked' - attack: 6.5 - attackFactor: 1.6 - health: 5.5 - healthFactor: 1.2 - speed: 6 - speedAbsolute: 11 - skills: ['???', '???', '???'] - - 'michael-heasell': - fullName: '???' - weapons: '???' - class: 'Ranger' - description: '???' - status: 'Locked' - attack: 4 - attackFactor: 0.714 - health: 5 - healthFactor: 1 - speed: 10 - speedAbsolute: 16 - skills: ['???', '???'] - - 'ian-elliott': - fullName: '???' - weapons: 'Swords - Short Range, No Magic' - class: 'Warrior' - description: '???' - status: 'Locked' - attack: 9.5 - attackFactor: 1.8 - health: 6.5 - healthFactor: 0.714 - speed: 3.5 - speedAbsolute: 8 - skills: ['trueStrike'] diff --git a/app/views/game-menu/GameMenuModal.coffee b/app/views/game-menu/GameMenuModal.coffee index 3ae24628a..0e078115f 100644 --- a/app/views/game-menu/GameMenuModal.coffee +++ b/app/views/game-menu/GameMenuModal.coffee @@ -51,6 +51,7 @@ module.exports = class GameMenuModal extends ModalView firstView.$el.addClass 'active' firstView.onShown?() Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-open', volume: 1 + @$el.find('.nano:visible').nanoScroller() onTabShown: (e) -> Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-tab-switch', volume: 1 diff --git a/app/views/game-menu/InventoryModal.coffee b/app/views/game-menu/InventoryModal.coffee index 4b0223082..9b89b7e67 100644 --- a/app/views/game-menu/InventoryModal.coffee +++ b/app/views/game-menu/InventoryModal.coffee @@ -5,6 +5,9 @@ ThangType = require 'models/ThangType' CocoCollection = require 'collections/CocoCollection' ItemView = require './ItemView' SpriteBuilder = require 'lib/sprites/SpriteBuilder' +ItemDetailsView = require 'views/play/modal/ItemDetailsView' +Purchase = require 'models/Purchase' +LevelOptions = require 'lib/LevelOptions' hasGoneFullScreenOnce = false @@ -13,98 +16,132 @@ module.exports = class InventoryModal extends ModalView className: 'modal fade play-modal' template: template slots: ['head', 'eyes', 'neck', 'torso', 'wrists', 'gloves', 'left-ring', 'right-ring', 'right-hand', 'left-hand', 'waist', 'feet', 'programming-book', 'pet', 'minion', 'flag'] #, 'misc-0', 'misc-1'] # TODO: bring in misc slot(s) again when we have space + closesOnClickOutside: false # because draggable somehow triggers hide when you don't drag onto a draggable events: 'click .item-slot': 'onItemSlotClick' - 'click #available-equipment .list-group-item:not(.equipped)': 'onAvailableItemClick' - 'dblclick #available-equipment .list-group-item:not(.equipped)': 'onAvailableItemDoubleClick' - 'doubletap #available-equipment .list-group-item:not(.equipped)': 'onAvailableItemDoubleClick' - 'dblclick .item-slot .item-view': 'onEquippedItemDoubleClick' - 'doubletap .item-slot .item-view': 'onEquippedItemDoubleClick' + 'click #unequipped img.item': 'onUnequippedItemClick' + 'doubletap #unequipped img.item': 'onUnequippedItemDoubleClick' + 'doubletap .item-slot img.item': 'onEquippedItemDoubleClick' 'shown.bs.modal': 'onShown' 'click #choose-hero-button': 'onClickChooseHero' 'click #play-level-button': 'onClickPlayLevel' + 'click .unlock-button': 'onUnlockButtonClicked' + 'click #equip-item-viewed': 'onClickEquipItemViewed' + 'click #unequip-item-viewed': 'onClickUnequipItemViewed' + 'click #close-modal': 'hide' shortcuts: 'esc': 'clearSelection' 'enter': 'onClickPlayLevel' + + #- Setup + initialize: (options) -> super(arguments...) @items = new CocoCollection([], {model: ThangType}) - @equipment = options.equipment or @options.session?.get('heroConfig')?.inventory or me.get('heroConfig')?.inventory or {} + # TODO: switch to item store loading system? + @items.url = '/db/thang.type?view=items' + @items.setProjection [ + 'name' + 'slug' + 'components' + 'original' + 'rasterIcon' + 'gems' + 'tier' + 'description' + 'heroClass' + 'i18n' + ] + @supermodel.loadCollection(@items, 'items') + @equipment = {} # Assign for real when we have loaded the session and items. + + onItemsLoaded: -> + item.notInLevel = true for item in @items.models + @equipment = @options.equipment or @options.session?.get('heroConfig')?.inventory or me.get('heroConfig')?.inventory or {} @equipment = $.extend true, {}, @equipment @requireLevelEquipment() - @items.url = '/db/thang.type?view=items&project=name,slug,components,original,rasterIcon,gems,description,heroClass' - @supermodel.loadCollection(@items, 'items') + @itemGroups = {} + @itemGroups.availableItems = new Backbone.Collection() + @itemGroups.restrictedItems = new Backbone.Collection() + @itemGroups.lockedItems = new Backbone.Collection() + itemGroup.comparator = 'gems' for itemGroup in _.values @itemGroups - destroy: -> - @stage?.removeAllChildren() - super() + equipped = _.values(@equipment) + @sortItem(item, equipped) for item in @items.models + + sortItem: (item, equipped) -> + equipped ?= _.values(@equipment) + + # general starting classes + item.classes = _.clone(item.getAllowedSlots()) + for heroClass in item.getAllowedHeroClasses() + item.classes.push heroClass + item.classes.push 'equipped' if item.get('original') in equipped + + # sort into one of the four groups + locked = not (item.get('original') in me.items()) + locked = false if me.get('slug') is 'nick' + + if locked and item.get('slug') isnt 'simple-boots' + @itemGroups.lockedItems.add(item) + item.classes.push 'locked' + item.classes.push 'silhouette' if item.isSilhouettedItem() + else if item.get('slug') in _.values(LevelOptions[@options.levelID]?.restrictedGear ? {}) + @itemGroups.restrictedItems.add(item) + item.classes.push 'restricted' + else + @itemGroups.availableItems.add(item) onLoaded: -> - item.notInLevel = true for item in @items.models + # Both items and session have been loaded. + @onItemsLoaded() super() getRenderData: (context={}) -> context = super(context) context.equipped = _.values(@equipment) context.items = @items.models - - for item in @items.models - item.classes = item.getAllowedSlots() - item.classes.push 'equipped' if item.get('original') in context.equipped - locked = @allowedItems and not (item.get('original') in @allowedItems) - item.classes.push 'locked' if locked and item.get('slug') isnt 'simple-boots' - for heroClass in item.getAllowedHeroClasses() - item.classes.push heroClass - item.classes.push 'silhouette' if item.isSilhouettedItem() - item.classes.push 'restricted' if item.get('slug') in _.values(restrictedGearByLevel[@options.levelID] ? {}) - - @items.models.sort (a, b) -> - lockScore = 90019001 * (('locked' in a.classes) - ('locked' in b.classes)) - gemScore = a.get('gems') - b.get('gems') - lockScore + gemScore - - context.unlockedItems = [] - context.lockedItems = [] - for item in @items.models - (if 'locked' in item.classes then context.lockedItems else context.unlockedItems).push item - + context.itemGroups = @itemGroups context.slots = @slots + context.selectedHero = @selectedHero context.equipment = _.clone @equipment - for slot, itemOriginal of context.equipment - item = _.find @items.models, (item) -> item.get('original') is itemOriginal - context.equipment[slot] = item + context.equipment[slot] = @items.findWhere {original: itemOriginal} for slot, itemOriginal of context.equipment + context.gems = me.gems() context afterRender: -> super() + @$el.find('#play-level-button').css('visibility', 'hidden') return unless @supermodel.finished() + @$el.find('#play-level-button').css('visibility', 'visible') - keys = (item.get('original') for item in @items.models) - itemMap = _.zipObject keys, @items.models + @setUpDraggableEventsForAvailableEquipment() + @setUpDraggableEventsForEquippedArea() + @delegateEvents() + @itemDetailsView = new ItemDetailsView() + @insertSubView(@itemDetailsView) + @requireLevelEquipment() + @$el.find('.nano').nanoScroller() - # Fill in equipped items - for slottedItemStub in @$el.find('.replace-me') - itemID = $(slottedItemStub).data('item-id') - item = itemMap[itemID] - itemView = new ItemView({item: item, includes: {}}) - itemView.render() - $(slottedItemStub).replaceWith(itemView.$el) - @registerSubView(itemView) + afterInsert: -> + super() + @canvasWidth = @$el.find('canvas').innerWidth() + @canvasHeight = @$el.find('canvas').innerHeight() + @inserted = true + @requireLevelEquipment() - for availableItemEl in @$el.find('#available-equipment .list-group-item') - itemID = $(availableItemEl).data('item-id') - item = itemMap[itemID] - itemView = new ItemView({item: item, includes: {name: true}}) - itemView.render() - $(availableItemEl).append(itemView.$el) - @registerSubView(itemView) - continue if $(availableItemEl).hasClass('locked') or $(availableItemEl).hasClass('restricted') - dragHelper = itemView.$el.find('img').clone().addClass('draggable-item') - do (dragHelper, itemView) => - itemView.$el.draggable + #- Draggable logic + + setUpDraggableEventsForAvailableEquipment: -> + for availableItemEl in @$el.find('#unequipped img.item') + availableItemEl = $(availableItemEl) + continue if availableItemEl.hasClass('locked') or availableItemEl.hasClass('restricted') + dragHelper = availableItemEl.clone().addClass('draggable-item') + do (dragHelper, availableItemEl) => + availableItemEl.draggable revert: 'invalid' appendTo: @$el cursorAt: {left: 35.5, top: 35.5} @@ -112,43 +149,32 @@ module.exports = class InventoryModal extends ModalView revertDuration: 200 distance: 10 scroll: false - zIndex: 100 - itemView.$el.on 'dragstart', => - @onAvailableItemClick target: itemView.$el.parent() unless itemView.$el.parent().hasClass 'active' + zIndex: 1100 + availableItemEl.on 'dragstart', => @selectUnequippedItem(availableItemEl) + setUpDraggableEventsForEquippedArea: -> for itemSlot in @$el.find '.item-slot' slot = $(itemSlot).data 'slot' do (slot, itemSlot) => $(itemSlot).droppable - drop: (e, ui) => @onAvailableItemDoubleClick() + drop: (e, ui) => @equipSelectedItem() accept: (el) -> $(el).parent().hasClass slot activeClass: 'droppable' hoverClass: 'droppable-hover' tolerance: 'touch' @makeEquippedSlotDraggable $(itemSlot) - @$el.find('.hero-container').droppable - drop: (e, ui) => @onAvailableItemDoubleClick() + @$el.find('#equipped').droppable + drop: (e, ui) => @equipSelectedItem() accept: (el) -> true activeClass: 'droppable' hoverClass: 'droppable-hover' tolerance: 'pointer' - @$el.find('#selected-items').hide() # Hide until one is selected - @delegateEvents() - - if @selectedHero and not @startedLoadingFirstHero - @loadHero() - @requireLevelEquipment() - - afterInsert: -> - super() - @canvasWidth = @$el.find('canvas').innerWidth() - @canvasHeight = @$el.find('canvas').innerHeight() - @inserted = true - makeEquippedSlotDraggable: (slot) -> - unequip = => @unequipItemFromSlot slot + unequip = => + @unequipItemFromSlot slot + @requireLevelEquipment() shouldStayEquippedWhenDropped = (isValidDrop) -> pos = $(@).position() revert = Math.abs(pos.left) < $(@).outerWidth() and Math.abs(pos.top) < $(@).outerHeight() @@ -163,178 +189,157 @@ module.exports = class InventoryModal extends ModalView distance: 10 scroll: false zIndex: 100 + slot.on 'dragstart', => @selectItemSlot(slot) - clearSelection: -> - @$el.find('.item-slot.selected').removeClass 'selected' - @$el.find('.list-group-item').removeClass('active') - @onSelectionChanged() + + #- Select/equip event handlers onItemSlotClick: (e) -> return if @remainingRequiredEquipment?.length # Don't let them select a slot if we need them to first equip some require gear. - slot = $(e.target).closest('.item-slot') - wasActive = slot.hasClass('selected') - @unselectAllSlots() - @unselectAllAvailableEquipment() if slot.hasClass('disabled') - if wasActive - @hideSelectedSlotItem() - @unselectAllAvailableEquipment() + @selectItemSlot($(e.target).closest('.item-slot')) + + onUnequippedItemClick: (e) -> + return if @justDoubleClicked + itemEl = $(e.target).closest('img.item') + @selectUnequippedItem(itemEl) + + onUnequippedItemDoubleClick: (e) -> + item = $(e.target).closest('img.item') + return if item.hasClass('locked') or item.hasClass('restricted') + @equipSelectedItem() + @justDoubleClicked = true + _.defer => @justDoubleClicked = false + + onEquippedItemDoubleClick: -> @unequipSelectedItem() + onClickEquipItemViewed: -> @equipSelectedItem() + onClickUnequipItemViewed: -> @unequipSelectedItem() + + onUnlockButtonClicked: (e) -> + button = $(e.target).closest('button') + if button.hasClass('confirm') + item = @items.get($(e.target).data('item-id')) + purchase = Purchase.makeFor(item) + purchase.save() + + #- set local changes to mimic what should happen on the server... + purchased = me.get('purchased') ? {} + purchased.items ?= [] + purchased.items.push(item.get('original')) + + me.set('purchased', purchased) + me.set('spent', (me.get('spent') ? 0) + item.get('gems')) + + #- ...then rerender key bits + @requireLevelEquipment() + @itemGroups.lockedItems.remove(item) + @sortItem(item) + @renderSelectors("#unequipped", "#gems-count") + @delegateEvents() + @setUpDraggableEventsForAvailableEquipment() + @itemDetailsView.setItem(item) else - @selectSlot(slot) + button.addClass('confirm').text($.i18n.t('play.confirm')) + @$el.one 'click', (e) -> + button.removeClass('confirm').text($.i18n.t('play.unlock')) if e.target isnt button[0] + + + #- Select/equip higher-level, all encompassing methods the callbacks all use + + selectItemSlot: (slotEl) -> + @clearSelection() + slotEl.addClass('selected') + selectedSlotItemID = slotEl.find('img.item').data('item-id') + item = @items.get(selectedSlotItemID) + if item then @showItemDetails(item, 'unequip') @onSelectionChanged() - onAvailableItemClick: (e) -> - itemContainer = $(e.target).closest('.list-group-item') - return if itemContainer.hasClass('locked') or itemContainer.hasClass('restricted') - wasActive = itemContainer.hasClass 'active' - @unselectAllAvailableEquipment() - @selectAvailableItem(itemContainer) unless wasActive + selectUnequippedItem: (itemEl) -> + @clearSelection() + itemEl.addClass('active') + showExtra = if itemEl.hasClass('restricted') then 'restricted' else if not itemEl.hasClass('locked') then 'equip' else '' + @showItemDetails(@items.get(itemEl.data('item-id')), showExtra) @onSelectionChanged() - onAvailableItemDoubleClick: (e) -> - if e - itemContainer = $(e.target).closest('.list-group-item') - return if itemContainer.hasClass('locked') or itemContainer.hasClass('restricted') - @selectAvailableItem itemContainer - @onSelectionChanged() - slot = @getSelectedSlot() - slot = @$el.find('.item-slot:not(.disabled):first') if not slot.length - $(e.target).effect('transfer', to: slot, duration: 500, easing: 'easeOutCubic') if e - @unequipItemFromSlot(slot) - @equipSelectedItemToSlot(slot) + equipSelectedItem: -> + selectedItemEl = @getSelectedUnequippedItem() + selectedItem = @items.get(selectedItemEl.data('item-id')) + return unless selectedItem + allowedSlots = selectedItem.getAllowedSlots() + slotEl = @$el.find(".item-slot[data-slot='#{allowedSlots[0]}']") + selectedItemEl.effect('transfer', to: slotEl, duration: 500, easing: 'easeOutCubic') + unequipped = @unequipItemFromSlot(slotEl) + selectedItemEl.addClass('equipped') + slotEl.append(selectedItemEl.clone()) + @clearSelection() + @showItemDetails(selectedItem, 'unequip') + slotEl.addClass('selected') + selectedItem.classes.push 'equipped' + @makeEquippedSlotDraggable slotEl + @requireLevelEquipment() @onSelectionChanged() - onEquippedItemDoubleClick: (e) -> - @unselectAllAvailableEquipment() - slot = $(e.target).closest('.item-slot') - @selectAvailableItem(@unequipItemFromSlot(slot)) + unequipSelectedItem: -> + slotEl = @getSelectedSlot() + @clearSelection() + itemEl = @unequipItemFromSlot(slotEl) + return unless itemEl + itemEl.addClass('active') + slotEl.effect('transfer', to: itemEl, duration: 500, easing: 'easeOutCubic') + selectedSlotItemID = itemEl.data('item-id') + item = @items.get(selectedSlotItemID) + item.classes = _.without item.classes, 'equipped' + @showItemDetails(item, 'equip') + @requireLevelEquipment() @onSelectionChanged() - getSelectedSlot: -> - @$el.find('#equipped .item-slot.selected') - unselectAllAvailableEquipment: -> - @$el.find('#available-equipment .list-group-item').removeClass('active') + #- Select/equip helpers - unselectAllSlots: -> + clearSelection: -> + @deselectAllSlots() + @deselectAllUnequippedItems() + @hideItemDetails() + + unequipItemFromSlot: (slotEl) -> + itemEl = slotEl.find('img.item') + itemIDToUnequip = itemEl.data('item-id') + return unless itemIDToUnequip + itemEl.remove() + @$el.find("#unequipped img.item[data-item-id=#{itemIDToUnequip}]").removeClass('equipped') + + deselectAllSlots: -> @$el.find('#equipped .item-slot.selected').removeClass('selected') - selectSlot: (slot) -> - slot.addClass('selected') + deselectAllUnequippedItems: -> + @$el.find('#unequipped img.item').removeClass('active') getSlot: (name) -> @$el.find(".item-slot[data-slot=#{name}]") - getSelectedAvailableItemContainer: -> - @$el.find('#available-equipment .list-group-item.active') + getSelectedSlot: -> + @$el.find('#equipped .item-slot.selected') - getAvailableItemContainer: (itemID) -> - @$el.find("#available-equipment .list-group-item[data-item-id='#{itemID}']") - - selectAvailableItem: (itemContainer) -> - itemContainer?.addClass('active') - - unequipItemFromSlot: (slot) -> - itemIDToUnequip = slot.find('.item-view').data('item-id') - return unless itemIDToUnequip - slot.find('.item-view').detach() - for el in @$el.find('#available-equipment .list-group-item') - itemID = $(el).find('.item-view').data('item-id') - if itemID is itemIDToUnequip - unequipped = $(el).removeClass('equipped') - break - if unequipped - @clearSelection() - @requireLevelEquipment() - return unequipped - - equipSelectedItemToSlot: (slot) -> - selectedItemContainer = @getSelectedAvailableItemContainer() - newItemHTML = selectedItemContainer.html() - selectedItemContainer.addClass('equipped') - slotContainer = slot.find('.item-container') - slotContainer.html(newItemHTML) - slotContainer.find('.item-view').data('item-id', selectedItemContainer.find('.item-view').data('item-id')) - @$el.find('.list-group-item').removeClass('active') - @makeEquippedSlotDraggable slot - @requireLevelEquipment() + getSelectedUnequippedItem: -> + @$el.find('#unequipped img.item.active') onSelectionChanged: -> - @$el.find('.item-slot').show() - - selectedSlot = @$el.find('.item-slot.selected') - selectedItem = @$el.find('#available-equipment .list-group-item.active') - - if selectedSlot.length - @$el.find('#available-equipment .list-group-item').hide() - unlockedCount = @$el.find("#available-equipment .list-group-item.#{selectedSlot.data('slot')}:not(.locked)").show().length - lockedCount = @$el.find("#available-equipment .list-group-item.#{selectedSlot.data('slot')}.locked").show().length - @$el.find('#unlocked-description').text("#{unlockedCount} #{selectedSlot.data('slot')} items owned").toggle unlockedCount > 0 - @$el.find('#locked-description').text("#{lockedCount} #{selectedSlot.data('slot')} items locked").toggle lockedCount > 0 - selectedSlotItemID = selectedSlot.find('.item-view').data('item-id') - if selectedSlotItemID - item = _.find @items.models, {id: selectedSlotItemID} - @showSelectedSlotItem(item) - else - @hideSelectedSlotItem() - else - unlockedCount = @$el.find('#available-equipment .list-group-item:not(.locked)').show().length - @$el.find('#available-equipment .list-group-item.locked').hide() - @$el.find('#unlocked-description').text("#{unlockedCount} items owned").toggle unlockedCount > 0 - @$el.find('#locked-description').text("#{lockedCount} items locked").hide() - #@$el.find('#available-equipment .list-group-item.equipped').hide() - - @$el.find('.item-slot').removeClass('disabled') - if selectedItem.length - item = _.find @items.models, {id:selectedItem.find('.item-view').data('item-id')} - # update which slots are enabled - allowedSlots = item.getAllowedSlots() - for slotEl in @$el.find('.item-slot') - slotName = $(slotEl).data('slot') - if slotName not in allowedSlots - $(slotEl).addClass('disabled') - @showSelectedAvailableItem(item) - else - @hideSelectedAvailableItem() - @delegateEvents() - showSelectedSlotItem: (item) -> - if not @selectedEquippedItemView - @selectedEquippedItemView = new ItemView({ - item: item, includes: {name: true, stats: true, props: true}}) - @insertSubView(@selectedEquippedItemView, @$el.find('#selected-equipped-item .item-view-stub')) - else - @selectedEquippedItemView.$el.show() - @selectedEquippedItemView.item = item - @selectedEquippedItemView.render() - @$el.find('#selected-items').show() - @$el.find('#selected-equipped-item').show() - hideSelectedSlotItem: -> - @selectedEquippedItemView?.$el.hide().parent().hide() - @$el.find('#selected-items').hide() unless @selectedEquippedItemView?.$el?.is(':visible') + showItemDetails: (item, showExtra) -> + @itemDetailsView.setItem(item) + @$el.find('#item-details-extra > *').addClass('secret') + @$el.find("##{showExtra}-item-viewed").removeClass('secret') - showSelectedAvailableItem: (item) -> - if not @selectedAvailableItemView - @selectedAvailableItemView = new ItemView({ - item: item, includes: {name: true, stats: true, props: true}}) - @insertSubView(@selectedAvailableItemView, @$el.find('#selected-available-item .item-view-stub')) - else - @selectedAvailableItemView.$el.show() - @selectedAvailableItemView.item = item - @selectedAvailableItemView.render() - @$el.find('#selected-items').show() - @$el.find('#selected-available-item').show() - - hideSelectedAvailableItem: -> - @selectedAvailableItemView?.$el.hide().parent().hide() - @$el.find('#selected-items').hide() unless @selectedEquippedItemView?.$el?.is(':visible') + hideItemDetails: -> + @itemDetailsView.setItem(null) + @$el.find('#item-details-extra > *').addClass('secret') getCurrentEquipmentConfig: -> config = {} for slot in @$el.find('.item-slot') slotName = $(slot).data('slot') - slotItemID = $(slot).find('.item-view').data('item-id') + slotItemID = $(slot).find('img.item').data('item-id') continue unless slotItemID item = _.find @items.models, {id:slotItemID} config[slotName] = item.get('original') @@ -342,8 +347,8 @@ module.exports = class InventoryModal extends ModalView requireLevelEquipment: -> # This is temporary, until we have a more general way of awarding items and configuring required/restricted items per level. - return unless necessaryGear = requiredGearByLevel[@options.levelID] - restrictedGear = restrictedGearByLevel[@options.levelID] ? {} + requiredGear = LevelOptions[@options.levelID]?.requiredGear ? {} + restrictedGear = LevelOptions[@options.levelID]?.restrictedGear ? {} if @inserted if @supermodel.finished() equipment = @getCurrentEquipmentConfig() # Make sure @equipment is updated @@ -353,87 +358,57 @@ module.exports = class InventoryModal extends ModalView @remainingRequiredEquipment = [] @$el.find('.should-equip').removeClass('should-equip') inWorldMap = $('#world-map-view').length + if heroClass = @selectedHero?.get('heroClass') + for slot, item of _.clone equipment + itemModel = @items.findWhere original: item + unless itemModel and heroClass in itemModel.classes + console.log 'Unequipping', itemModel.get('heroClass'), 'item', itemModel.get('name'), 'from slot due to class restrictions.' + @unequipItemFromSlot @$el.find(".item-slot[data-slot='#{slot}']") for slot, item of restrictedGear equipped = equipment[slot] if equipped and equipped is gear[restrictedGear[slot]] console.log 'Unequipping restricted item', restrictedGear[slot], 'for', slot, 'before level', @options.levelID @unequipItemFromSlot @$el.find(".item-slot[data-slot='#{slot}']") - for slot, item of necessaryGear - continue if item is 'leather-tunic' and inWorldMap # Don't tell them they need it until they need it in the level - equipped = equipment[slot] - continue if equipped and not ((item is 'builders-hammer' and equipped is gear['simple-sword']) or (item is 'leather-boots' and equipped is gear['simple-boots'])) - availableSlotSelector = "#available-equipment li[data-item-id='#{gear[item]}']" - @highlightElement availableSlotSelector, delay: 500, sides: ['right'], rotation: Math.PI / 2 - @$el.find(availableSlotSelector).addClass 'should-equip' - @$el.find("#equipped div[data-slot='#{slot}']").addClass 'should-equip' - @remainingRequiredEquipment.push slot: slot, item: gear[item] + if heroClass is 'Warrior' + # After they switch to a ranger or wizard, we stop being so finicky about gear. + for slot, item of requiredGear + #continue if item is 'leather-tunic' and inWorldMap and @options.levelID is 'the-raised-sword' # Don't tell them they need it until they need it in the level # ... when we make it so that you can buy it + equipped = equipment[slot] + continue if equipped and not ( + (item is 'builders-hammer' and equipped in [gear['simple-sword'], gear['long-sword']]) or + (item in ['simple-sword', 'long-sword'] and equipped is gear['builders-hammer']) or + (item is 'leather-boots' and equipped is gear['simple-boots']) or + (item is 'simple-boots' and equipped is gear['leather-boots']) + ) + itemModel = @items.findWhere {slug: item} + continue unless itemModel + availableSlotSelector = "#unequipped .item[data-item-id='#{itemModel.id}']" + @highlightElement availableSlotSelector, delay: 500, sides: ['right'], rotation: Math.PI / 2 + @$el.find(availableSlotSelector).addClass 'should-equip' + @$el.find("#equipped div[data-slot='#{slot}']").addClass 'should-equip' + @$el.find('#double-click-hint').removeClass('secret') + @remainingRequiredEquipment.push slot: slot, item: gear[item] if hadRequired and not @remainingRequiredEquipment.length @endHighlight() - @highlightElement (if inWorldMap then '#play-level-button' else '.overlaid-close-button'), duration: 5000 + @highlightElement '#play-level-button', duration: 5000 $('#play-level-button').prop('disabled', @remainingRequiredEquipment.length > 0) - # Restrict available items to those that would be available by this item. - @allowedItems = [] - for level, items of requiredGearByLevel - for slot, item of items - @allowedItems.push gear[item] unless gear[item] in @allowedItems - break if level is @options.levelID - for item in me.items() when not (item in @allowedItems) - @allowedItems.push item - setHero: (@selectedHero) -> - @loadHero() + if @selectedHero.loading + @listenToOnce @selectedHero, 'sync', => @setHero? @selectedHero + return @$el.removeClass('Warrior Ranger Wizard').addClass(@selectedHero.get('heroClass')) - - loadHero: -> - return unless @supermodel.finished() and @selectedHero and not @$el.hasClass 'secret' - @startedLoadingFirstHero = true - @stage?.removeAllChildren() - if featureImage = @selectedHero.get 'featureImage' - @$el.find(".equipped-hero-canvas").hide() - @$el.find(".hero-feature-image").show().find('img').prop('src', '/file/' + featureImage) - return - if @selectedHero.loaded and movieClip = @movieClips?[@selectedHero.get('original')] - @stage.addChild(movieClip) - @stage.update() - return - onLoaded = => - return unless canvas = @$el.find(".equipped-hero-canvas") - @canvasWidth ||= canvas.width() - @canvasHeight ||= canvas.height() - canvas.prop width: @canvasWidth, height: @canvasHeight - builder = new SpriteBuilder(@selectedHero) - movieClip = builder.buildMovieClip(@selectedHero.get('actions').attack?.animation ? @selectedHero.get('actions').idle.animation) - movieClip.scaleX = movieClip.scaleY = canvas.prop('height') / 120 # Average hero height is ~110px at normal resolution - if @selectedHero.get('name') in ['Knight', 'Robot Walker'] # These are too big, so shrink them. - movieClip.scaleX *= 0.7 - movieClip.scaleY *= 0.7 - movieClip.regX = -@selectedHero.get('positions').registration.x - movieClip.regY = -@selectedHero.get('positions').registration.y - movieClip.x = canvas.prop('width') * 0.5 - movieClip.y = canvas.prop('height') * 0.95 # This is where the feet go. - movieClip.gotoAndPlay 0 - @stage ?= new createjs.Stage(canvas[0]) - @stage.addChild movieClip - @stage.update() - @movieClips ?= {} - @movieClips[@selectedHero.get('original')] = movieClip - if @selectedHero.loaded - if @selectedHero.isFullyLoaded() - _.defer onLoaded - else - console.error 'Hmm, trying to render a hero we have not loaded...?', @selectedHero - else - @listenToOnce @selectedHero, 'sync', onLoaded + @requireLevelEquipment() + @render() onShown: -> # Called when we switch tabs to this within the modal @requireLevelEquipment() - @loadHero() onHidden: -> # Called when the modal itself is dismissed @endHighlight() + super() onClickChooseHero: -> @hide() @@ -456,8 +431,11 @@ module.exports = class InventoryModal extends ModalView inventory = @getCurrentEquipmentConfig() patchSession = patchMe = false patchSession ||= not _.isEqual inventory, sessionHeroConfig.inventory - patchMe ||= not _.isEqual inventory, lastHeroConfig.inventory sessionHeroConfig.inventory = inventory + if hero = @selectedHero.get('original') + patchSession ||= not _.isEqual hero, sessionHeroConfig.thangType + sessionHeroConfig.thangType = hero + patchMe ||= not _.isEqual inventory, lastHeroConfig.inventory lastHeroConfig.inventory = inventory if patchMe console.log 'setting me.heroConfig to', JSON.stringify(lastHeroConfig) @@ -470,6 +448,13 @@ module.exports = class InventoryModal extends ModalView else callback?() + destroy: -> + @stage?.removeAllChildren() + super() + + + + gear = 'simple-boots': '53e237bf53457600003e3f05' 'simple-sword': '53e218d853457600003e3ebe' @@ -479,54 +464,8 @@ gear = 'programmaticon-i': '53e4108204c00d4607a89f78' 'crude-glasses': '53e238df53457600003e3f0b' 'builders-hammer': '53f4e6e3d822c23505b74f42' - -requiredGearByLevel = - 'dungeons-of-kithgard': {feet: 'simple-boots'} - 'gems-in-the-deep': {feet: 'simple-boots'} - 'shadow-guard': {feet: 'simple-boots'} - 'kounter-kithwise': {feet: 'simple-boots'} - 'crawlways-of-kithgard': {feet: 'simple-boots'} - 'forgetful-gemsmith': {feet: 'simple-boots'} - 'true-names': {feet: 'simple-boots', 'right-hand': 'simple-sword', waist: 'leather-belt'} - 'favorable-odds': {feet: 'simple-boots', 'right-hand': 'simple-sword'} - 'the-raised-sword': {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic'} - 'the-first-kithmaze': {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} - 'haunted-kithmaze': {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} - 'descending-further': {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} - 'the-second-kithmaze': {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} - 'dread-door': {'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'} - 'known-enemy': {'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'} - 'master-of-names': {feet: 'simple-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'} - 'lowly-kithmen': {feet: 'simple-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'} - 'closing-the-distance': {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic', eyes: 'crude-glasses'} - 'tactical-strike': {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic', eyes: 'crude-glasses'} - 'the-final-kithmaze': {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'} - 'the-gauntlet': {feet: 'simple-boots', 'right-hand': 'simple-sword', torso: 'leather-tunic', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'} - 'kithgard-gates': {feet: 'simple-boots', 'right-hand': 'builders-hammer', torso: 'leather-tunic'} - 'defense-of-plainswood': {feet: 'simple-boots', 'right-hand': 'builders-hammer'} - 'winding-trail': {feet: 'leather-boots', 'right-hand': 'builders-hammer'} - 'thornbush-farm': {feet: 'leather-boots', 'right-hand': 'builders-hammer', eyes: 'crude-glasses'} - 'a-fiery-trap': {feet: 'leather-boots', 'right-hand': 'builders-hammer', eyes: 'crude-glasses'} - 'coinucopia': {feet: 'leather-boots', flag: 'basic-flags'} - -restrictedGearByLevel = - 'dungeons-of-kithgard': {feet: 'leather-boots'} - 'gems-in-the-deep': {feet: 'leather-boots'} - 'shadow-guard': {feet: 'leather-boots', 'right-hand': 'simple-sword'} - 'kounter-kithwise': {feet: 'leather-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'} - 'crawlways-of-kithgard': {feet: 'leather-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'} - 'forgetful-gemsmith': {feet: 'leather-boots', 'programming-book': 'programmaticon-i'} - 'true-names': {feet: 'leather-boots', 'programming-book': 'programmaticon-i'} - 'favorable-odds': {feet: 'leather-boots', 'programming-book': 'programmaticon-i'} - 'the-raised-sword': {feet: 'leather-boots', 'programming-book': 'programmaticon-i'} - 'the-first-kithmaze': {feet: 'leather-boots'} - 'haunted-kithmaze': {feet: 'leather-boots'} - 'descending-further': {feet: 'leather-boots'} - 'the-second-kithmaze': {feet: 'leather-boots'} - 'the-final-kithmaze': {feet: 'leather-boots'} - 'the-gauntlet': {feet: 'leather-boots'} - 'kithgard-gates': {'right-hand': 'simple-sword'} - 'defense-of-plainswood': {'right-hand': 'simple-sword'} - 'winding-trail': {feet: 'simple-boots', 'right-hand': 'simple-sword'} - 'thornbush-farm': {feet: 'simple-boots', 'right-hand': 'simple-sword'} - 'a-fiery-trap': {feet: 'simple-boots', 'right-hand': 'builders-hammer'} + 'long-sword': '544d7d1f8494308424f564a3' + 'sundial-wristwatch': '53e2396a53457600003e3f0f' + 'bronze-shield': '544c310ae0017993fce214bf' + 'wooden-glasses': '53e2167653457600003e3eb3' + 'basic-flags': '545bacb41e649a4495f887da' diff --git a/app/views/game-menu/OptionsView.coffee b/app/views/game-menu/OptionsView.coffee index 8843645c4..7ed79bd4b 100644 --- a/app/views/game-menu/OptionsView.coffee +++ b/app/views/game-menu/OptionsView.coffee @@ -35,6 +35,7 @@ module.exports = class OptionsView extends CocoView @onNameChange = _.debounce(@checkNameExists, 500) @on 'nameChanged', @onNameChange @playerName = me.get 'name' + require('lib/services/filepicker')() unless window.application.isIPadApp # Initialize if needed super options getRenderData: (c={}) -> @@ -107,6 +108,7 @@ module.exports = class OptionsView extends CocoView @playerName = newName onEditProfilePhoto: (e) -> + return if window.application.isIPadApp # TODO: have an iPad-native way of uploading a photo, since we don't want to load FilePicker on iPad (memory) photoContainer = @$el.find('.profile-photo') onSaving = => photoContainer.addClass('saving') diff --git a/app/views/kinds/RootView.coffee b/app/views/kinds/RootView.coffee index 636a56d06..e7fdd7e2b 100644 --- a/app/views/kinds/RootView.coffee +++ b/app/views/kinds/RootView.coffee @@ -58,6 +58,7 @@ module.exports = class RootView extends CocoView @openModalView new AuthModal {} onClickAnchor: (e) -> + return if @destroyed anchorText = e?.currentTarget?.text window.tracker?.trackEvent 'Homepage', Action: anchorText if @id is 'home-view' and anchorText @toggleModal e @@ -110,7 +111,7 @@ module.exports = class RootView extends CocoView @addLanguagesToSelect($select, preferred) $select.fancySelect().parent().find('.trigger').addClass('header-font') $('body').attr('lang', preferred) - + addLanguagesToSelect: ($select, initialVal) -> initialVal ?= me.get('preferredLanguage', true) codes = _.keys(locale) diff --git a/app/views/modal/EmployerSignupModal.coffee b/app/views/modal/EmployerSignupModal.coffee index ab13e309b..4441366ff 100644 --- a/app/views/modal/EmployerSignupModal.coffee +++ b/app/views/modal/EmployerSignupModal.coffee @@ -24,6 +24,7 @@ module.exports = class EmployerSignupModal extends ModalView constructor: (options) -> super(options) + return # Removed LinkedIn, so if we want to resurrect the EmployerSignupModal, we'll want to redo it without LinkedIn auth. @authorizedWithLinkedIn = IN?.User?.isAuthorized() window.tracker?.trackEvent 'Started Employer Signup' @reloadWhenClosed = false diff --git a/app/views/play/WorldMapView.coffee b/app/views/play/WorldMapView.coffee index 0483e5271..c5aeeb8a5 100644 --- a/app/views/play/WorldMapView.coffee +++ b/app/views/play/WorldMapView.coffee @@ -46,9 +46,12 @@ module.exports = class WorldMapView extends RootView @playMusicTimeout = _.delay (=> @playMusic() unless @destroyed), musicDelay @preloadTopHeroes() @hadEverChosenHero = me.get('heroConfig')?.thangType + @listenTo me, 'change:purchased', -> @renderSelectors('#gems-count') + @listenTo me, 'change:spent', -> @renderSelectors('#gems-count') window.tracker?.trackEvent 'World Map', Action: 'Loaded' destroy: -> + @setupManager?.destroy() $(window).off 'resize', @onWindowResize if ambientSound = @ambientSound # Doesn't seem to work; stops immediately. @@ -107,7 +110,13 @@ module.exports = class WorldMapView extends RootView @$el.find('.level').tooltip() @$el.addClass _.string.slugify @terrain @updateVolume() - @highlightElement '.level.next', delay: 500, duration: 60000, rotation: 0, sides: ['top'] unless window.currentModal + unless window.currentModal or @ABTestSkipHighlight or not @supermodel.finished() + @highlightElement '.level.next', delay: 500, duration: 60000, rotation: 0, sides: ['top'] + if levelID = @$el.find('.level.next').data('level-id') + @$levelInfo = @$el.find(".level-info-container[data-level-id=#{levelID}]").show() + pos = @$el.find('.level.next').offset() + @adjustLevelInfoPosition pageX: pos.left, pageY: pos.top + 250 + @manuallyPositionedLevelInfoID = levelID afterInsert: -> super() @@ -121,7 +130,28 @@ module.exports = class WorldMapView extends RootView onSessionsLoaded: (e) -> for session in @sessions.models @levelStatusMap[session.get('levelID')] = if session.get('state')?.complete then 'complete' else 'started' + if @nextLevel and @levelStatusMap[@nextLevel] is 'complete' + @nextLevel = null @render() + @initABTestAutoFirstLevel() + + initABTestAutoFirstLevel: -> + # A/B testing directly navigating to first level + # Excluding admins and users who have already started + # TODO: Cleanup @afterRender when this test is finished + firstLevelID = 'dungeons-of-kithgard' + testGroup = me.getDirectFirstGroup() + unless @nextLevel? or (firstLevelID of @levelStatusMap) or testGroup is -1 + @ABTestSkipHighlight = testGroup is 1 + if testGroup is 1 + target = $("a[data-level-id='" + firstLevelID + "']") + return if $(target).attr('disabled') or $(target).parent().hasClass 'locked' + levelElement = $(target).parents('.level') + levelID = levelElement.data('level-id') + @startLevel levelElement + window.tracker?.trackEvent 'World Map', levelID: firstLevelID, directFirstGroup: testGroup + else + @ABTestSkipHighlight = false onClickMap: (e) -> @$levelInfo?.hide() @@ -134,29 +164,38 @@ module.exports = class WorldMapView extends RootView e.preventDefault() e.stopPropagation() @$levelInfo?.hide() - return if $(e.target).attr('disabled') or $(e.target).parent().hasClass 'locked' if application.isIPadApp levelID = $(e.target).parents('.level').data('level-id') @$levelInfo = @$el.find(".level-info-container[data-level-id=#{levelID}]").show() @adjustLevelInfoPosition e @endHighlight() else - levelElement = $(e.target).parents('.level') - levelID = levelElement.data('level-id') - @startLevel levelElement - window.tracker?.trackEvent 'World Map', Action: 'Play Level', levelID: levelID + if $(e.target).attr('disabled') + Backbone.Mediator.publish 'router:navigate', route: '/contribute/adventurer' + return + else if $(e.target).parent().hasClass 'locked' + return + else + levelElement = $(e.target).parents('.level') + levelID = levelElement.data('level-id') + @startLevel levelElement + window.tracker?.trackEvent 'World Map', Action: 'Play Level', levelID: levelID onClickStartLevel: (e) -> - @startLevel $(e.target).parents('.level-info-container') + levelElement = $(e.target).parents('.level-info-container') + @startLevel levelElement + window.tracker?.trackEvent 'World Map', Action: 'Play Level', levelID: levelElement.data('level-id') startLevel: (levelElement) -> - setupManager = new LevelSetupManager supermodel: @supermodel, levelID: levelElement.data('level-id'), levelPath: levelElement.data('level-path'), levelName: levelElement.data('level-name'), hadEverChosenHero: @hadEverChosenHero, parent: @ - setupManager.open() + @setupManager?.destroy() + @setupManager = new LevelSetupManager supermodel: @supermodel, levelID: levelElement.data('level-id'), levelPath: levelElement.data('level-path'), levelName: levelElement.data('level-name'), hadEverChosenHero: @hadEverChosenHero, parent: @ + @setupManager.open() @$levelInfo?.hide() onMouseEnterLevel: (e) -> return if application.isIPadApp levelID = $(e.target).parents('.level').data('level-id') + return if @manuallyPositionedLevelInfoID and levelID isnt @manuallyPositionedLevelInfoID @$levelInfo = @$el.find(".level-info-container[data-level-id=#{levelID}]").show() @adjustLevelInfoPosition e @endHighlight() @@ -164,11 +203,13 @@ module.exports = class WorldMapView extends RootView onMouseLeaveLevel: (e) -> return if application.isIPadApp levelID = $(e.target).parents('.level').data('level-id') + return if @manuallyPositionedLevelInfoID and levelID isnt @manuallyPositionedLevelInfoID @$el.find(".level-info-container[data-level-id='#{levelID}']").hide() + @manuallyPositionedLevelInfoID = null onMouseMoveMap: (e) -> return if application.isIPadApp - @adjustLevelInfoPosition e + @adjustLevelInfoPosition e unless @manuallyPositionedLevelInfoID adjustLevelInfoPosition: (e) -> return unless @$levelInfo @@ -272,347 +313,10 @@ module.exports = class WorldMapView extends RootView @updateVolume volumes[newI] -tutorials = [ - { - name: 'Rescue Mission' - difficulty: 1 - id: 'rescue-mission' - image: '/file/db/level/52740644904ac0411700067c/rescue_mission_icon.png' - description: 'Tharin has been captured! Start here.' - x: 17.23 - y: 36.94 - } - { - name: 'Grab the Mushroom' - difficulty: 1 - id: 'grab-the-mushroom' - image: '/file/db/level/529662dfe0df8f0000000007/grab_the_mushroom_icon.png' - description: 'Grab a powerup and smash a big ogre.' - x: 22.6 - y: 35.1 - } - { - name: 'Drink Me' - difficulty: 1 - id: 'drink-me' - image: '/file/db/level/525dc5589a0765e496000006/drink_me_icon.png' - description: 'Drink up and slay two munchkins.' - x: 27.74 - y: 35.17 - } - { - name: 'Taunt the Guards' - difficulty: 1 - id: 'taunt-the-guards' - image: '/file/db/level/5276c9bdcf83207a2801ff8f/taunt_icon.png' - description: 'Tharin, if clever, can escape with Phoebe.' - x: 32.7 - y: 36.7 - } - { - name: 'It\'s a Trap' - difficulty: 1 - id: 'its-a-trap' - image: '/file/db/level/528aea2d7f37fc4e0700016b/its_a_trap_icon.png' - description: 'Organize a dungeon ambush with archers.' - x: 37.6 - y: 40.0 - } - { - name: 'Break the Prison' - difficulty: 1 - id: 'break-the-prison' - image: '/file/db/level/5275272c69abdcb12401216e/break_the_prison_icon.png' - description: 'More comrades are imprisoned!' - x: 44.1 - y: 39.5 - } - { - name: 'Taunt' - difficulty: 1 - id: 'taunt' - image: '/file/db/level/525f150306e1ab0962000018/taunt_icon.png' - description: 'Taunt the ogre to claim victory.' - x: 38.5 - y: 44.1 - } - { - name: 'Cowardly Taunt' - difficulty: 1 - id: 'cowardly-taunt' - image: '/file/db/level/525abfd9b12777d78e000009/cowardly_taunt_icon.png' - description: 'Lure infuriated ogres to their doom.' - x: 39.2 - y: 50.1 - } - { - name: 'Commanding Followers' - difficulty: 1 - id: 'commanding-followers' - image: '/file/db/level/525ef8ef06e1ab0962000003/commanding_followers_icon.png' - description: 'Lead allied soldiers into battle.' - x: 39.1 - y: 54.7 - } - { - name: 'Mobile Artillery' - difficulty: 1 - id: 'mobile-artillery' - image: '/file/db/level/525085419851b83f4b000001/mobile_artillery_icon.png' - description: 'Blow ogres up!' - x: 39.5 - y: 60.2 - } -] - -experienced = [ - { - name: 'Hunter Triplets' - difficulty: 2 - id: 'hunter-triplets' - image: '/file/db/level/526711d9add4f8965f000002/hunter_triplets_icon.png' - description: 'Three soldiers go ogre hunting.' - x: 51.76 - y: 35.5 - } - { - name: 'Emphasis on Aim' - difficulty: 2 - id: 'emphasis-on-aim' - image: '/file/db/level/525f384d96cd77000000000f/munchkin_masher_icon.png' - description: 'Choose your targets carefully.' - x: 61.47 - y: 33.46 - } - { - name: 'Zone of Danger' - difficulty: 3 - id: 'zone-of-danger' - image: '/file/db/level/526ae95c1e5cd30000000008/zone_of_danger_icon.png' - description: 'Target the ogres swarming into arrow range.' - x: 65.72 - y: 26.72 - } - { - name: 'Molotov Medic' - difficulty: 2 - id: 'molotov-medic' - image: '/file/db/level/52602ecb026e8481e7000001/generic_1.png' - description: 'Tharin must play support in this dungeon battle.' - x: 70.95 - y: 18.64 - } - { - name: 'Gridmancer' - difficulty: 5 - id: 'gridmancer' - image: '/file/db/level/52ae2460ef42c52f13000008/gridmancer_icon.png' - description: 'Super algorithm challenge level!' - x: 61.41 - y: 17.22 - } -] - -arenas = [ - { - name: 'Criss-Cross' - difficulty: 5 - id: 'criss-cross' - image: '/file/db/level/528aea2d7f37fc4e0700016b/its_a_trap_icon.png' - description: 'Participate in a bidding war with opponents to reach the other side!' - levelPath: 'ladder' - x: 49.43 - y: 21.48 - } - { - name: 'Greed' - difficulty: 4 - id: 'greed' - image: '/file/db/level/526fd3043c637ece50001bb2/the_herd_icon.png' - description: 'Liked Dungeon Arena and Gold Rush? Put them together in this economic arena!' - levelPath: 'ladder' - x: 45.00 - y: 23.34 - } - { - name: 'Dungeon Arena' - difficulty: 3 - id: 'dungeon-arena' - image: '/file/db/level/526ae95c1e5cd30000000008/zone_of_danger_icon.png' - description: 'Play head-to-head against fellow Wizards in a dungeon melee!' - levelPath: 'ladder' - x: 36.82 - y: 23.17 - } - { - name: 'Gold Rush' - difficulty: 3 - id: 'gold-rush' - image: '/file/db/level/52602ecb026e8481e7000001/generic_1.png' - description: 'Prove you are better at collecting gold than your opponent!' - levelPath: 'ladder' - x: 30.8 - y: 16.87 - } - { - name: 'Brawlwood' - difficulty: 4 - id: 'brawlwood' - image: '/file/db/level/525ef8ef06e1ab0962000003/commanding_followers_icon.png' - description: 'Combat the armies of other Wizards in a strategic forest arena! (Fast computer required.)' - levelPath: 'ladder' - x: 41.93 - y: 12.79 - } - { - name: 'Sky Span (Testing)' - difficulty: 3 - id: 'sky-span' - image: '/file/db/level/526ae95c1e5cd30000000008/zone_of_danger_icon.png' - description: 'Preview version of an upgraded Dungeon Arena. Help us with hero balance before release!' - levelPath: 'ladder' - x: 53.12 - y: 11.37 - } -] - -classicAlgorithms = [ - { - name: 'Bubble Sort Bootcamp Battle' - difficulty: 3 - id: 'bubble-sort-bootcamp-battle' - image: '/file/db/level/525ef8ef06e1ab0962000003/commanding_followers_icon.png' - description: 'Write a bubble sort to organize your soldiers. - by Alexandru Caciulescu' - x: 26.37 - y: 93.02 - } - { - name: 'Ogres of Hanoi' - difficulty: 3 - id: 'ogres-of-hanoi' - image: '/file/db/level/526fd3043c637ece50001bb2/the_herd_icon.png' - description: 'Transfer a stack of ogres while preserving their honor. - by Alexandru Caciulescu' - x: 32.39 - y: 92.67 - } - { - name: 'Danger! Minefield' - difficulty: 3 - id: 'danger-minefield' - image: '/file/db/level/526bda3fe79aefde2a003e36/mobile_artillery_icon.png' - description: 'Learn how to find prime numbers while defusing mines! - by Alexandru Caciulescu' - x: 38.07 - y: 92.76 - } - { - name: 'K-means++ Cluster Wars' - difficulty: 4 - id: 'k-means-cluster-wars' - image: '/file/db/level/525ef8ef06e1ab0962000003/commanding_followers_icon.png' - description: 'Learn cluster analysis while leading armies into battle! - by Alexandru Caciulescu' - x: 43.75 - y: 90.36 - } - { - name: 'Quicksort the Spiral' - difficulty: 3 - id: 'quicksort-the-spiral' - image: '/file/db/level/525ef8ef06e1ab0962000003/commanding_followers_icon.png' - description: 'Learn Quicksort while sorting a spiral of ogres! - by Alexandru Caciulescu' - x: 48.97 - y: 87.08 - } - { - name: 'Minimax Tic-Tac-Toe' - difficulty: 4 - id: 'minimax-tic-tac-toe' - image: '/file/db/level/525ef8ef06e1ab0962000003/commanding_followers_icon.png' - description: 'Learn how to make a game AI with the Minimax algorithm. - by Alexandru Caciulescu' - x: 55.96 - y: 82.73 - } -] - -playerCreated = [ - { - name: 'Extra Extrapolation' - difficulty: 2 - id: 'extra-extrapolation' - image: '/file/db/level/526bda3fe79aefde2a003e36/mobile_artillery_icon.png' - description: 'Predict your target\'s position for deadly aim. - by Sootn' - x: 42.67 - y: 67.98 - } - { - name: 'The Right Route' - difficulty: 1 - id: 'the-right-route' - image: '/file/db/level/526fd3043c637ece50001bb2/the_herd_icon.png' - description: 'Strike at the weak point in an array of enemies. - by Aftermath' - x: 47.38 - y: 70.55 - } - { - name: 'Sword Loop' - difficulty: 2 - id: 'sword-loop' - image: '/file/db/level/525dc5589a0765e496000006/drink_me_icon.png' - description: 'Kill the ogres and save the peasants with for-loops. - by Prabh Simran Singh Baweja' - x: 52.66 - y: 69.66 - } - { - name: 'Coin Mania' - difficulty: 2 - id: 'coin-mania' - image: '/file/db/level/529662dfe0df8f0000000007/grab_the_mushroom_icon.png' - description: 'Learn while-loops to grab coins and potions. - by Prabh Simran Singh Baweja' - x: 58.46 - y: 66.38 - } - { - name: 'Find the Spy' - difficulty: 2 - id: 'find-the-spy' - image: '/file/db/level/526ae95c1e5cd30000000008/zone_of_danger_icon.png' - description: 'Identify the spies hidden among your soldiers - by Nathan Gossett' - x: 63.11 - y: 62.74 - } - { - name: 'Harvest Time' - difficulty: 2 - id: 'harvest-time' - image: '/file/db/level/529662dfe0df8f0000000007/grab_the_mushroom_icon.png' - description: 'Collect a hundred mushrooms in just five lines of code - by Nathan Gossett' - x: 69.19 - y: 60.61 - } - { - name: 'Guide Everyone Home' - difficulty: 2 - id: 'guide-everyone-home' - image: '/file/db/level/52740644904ac0411700067c/rescue_mission_icon.png' - description: 'Fetch the wizards teleporting into the area - by Nathan Gossett' - x: 77.54 - y: 65.94 - } - { - name: "Let's go Fly a Kite" - difficulty: 3 - id: 'lets-go-fly-a-kite' - image: '/file/db/level/526711d9add4f8965f000002/hunter_triplets_icon.png' - description: 'There is a horde of ogres marching on your village. Stay out of reach and use your bow to take them out! - by Danny Whittaker' - x: 84.29 - y: 61.23 - } -] - dungeon = [ { name: 'Dungeons of Kithgard' type: 'hero' - difficulty: 1 id: 'dungeons-of-kithgard' original: '528110f30268d018e3000001' description: 'Grab the gem, but touch nothing else. Start here.' @@ -625,7 +329,6 @@ dungeon = [ { name: 'Gems in the Deep' type: 'hero' - difficulty: 1 id: 'gems-in-the-deep' original: '54173c90844506ae0195a0b4' description: 'Quickly collect the gems; you will need them.' @@ -638,7 +341,6 @@ dungeon = [ { name: 'Shadow Guard' type: 'hero' - difficulty: 1 id: 'shadow-guard' original: '54174347844506ae0195a0b8' description: 'Evade the Kithgard minion.' @@ -651,7 +353,6 @@ dungeon = [ { name: 'Kounter Kithwise' type: 'hero' - difficulty: 1 id: 'kounter-kithwise' original: '54527a6257e83800009730c7' description: 'Practice your evasion skills with more guards.' @@ -665,8 +366,7 @@ dungeon = [ #{ # name: 'Crawlways of Kithgard' # type: 'hero' - # difficulty: 1 - # id: 'crawlways-of-kithgard' + # # id: 'crawlways-of-kithgard' # original: '545287ef57e83800009730d5' # description: 'Dart in and grab the gem–at the right moment.' # x: 57 @@ -678,7 +378,6 @@ dungeon = [ { name: 'Forgetful Gemsmith' type: 'hero' - difficulty: 1 id: 'forgetful-gemsmith' original: '544a98f62d002f0000fe331a' description: 'Grab even more gems as you practice moving.' @@ -690,7 +389,6 @@ dungeon = [ { name: 'True Names' type: 'hero' - difficulty: 1 id: 'true-names' original: '541875da4c16460000ab990f' description: 'Learn an enemy\'s true name to defeat it.' @@ -703,7 +401,6 @@ dungeon = [ { name: 'Favorable Odds' type: 'hero' - difficulty: 1 id: 'favorable-odds' original: '5452972f57e83800009730de' description: 'Test out your battle skills by defeating more munchkins.' @@ -716,7 +413,6 @@ dungeon = [ { name: 'The Raised Sword' type: 'hero' - difficulty: 1 id: 'the-raised-sword' original: '5418aec24c16460000ab9aa6' description: 'Learn to equip yourself for combat.' @@ -728,7 +424,6 @@ dungeon = [ { name: 'The First Kithmaze' type: 'hero' - difficulty: 1 id: 'the-first-kithmaze' original: '5418b9d64c16460000ab9ab4' description: 'The builders of Kithgard constructed many mazes to confuse travelers.' @@ -742,7 +437,6 @@ dungeon = [ { name: 'Haunted Kithmaze' type: 'hero' - difficulty: 1 id: 'haunted-kithmaze' original: '545a5914d820eb0000f6dc0a' description: 'The builders of Kithgard constructed many mazes to confuse travelers.' @@ -756,7 +450,6 @@ dungeon = [ { name: 'Descending Further' type: 'hero' - difficulty: 1 id: 'descending-further' original: '5452a84d57e83800009730e4' description: 'Another day, another maze.' @@ -769,7 +462,6 @@ dungeon = [ { name: 'The Second Kithmaze' type: 'hero' - difficulty: 1 id: 'the-second-kithmaze' original: '5418cf256bae62f707c7e1c3' description: 'Many have tried, few have found their way through this maze.' @@ -781,7 +473,6 @@ dungeon = [ { name: 'Dread Door' type: 'hero' - difficulty: 1 id: 'dread-door' original: '5418d40f4c16460000ab9ac2' description: 'Behind a dread door lies a chest full of riches.' @@ -793,7 +484,6 @@ dungeon = [ { name: 'Known Enemy' type: 'hero' - difficulty: 1 id: 'known-enemy' original: '5452adea57e83800009730ee' description: 'Begin to use variables in your battles.' @@ -805,7 +495,6 @@ dungeon = [ { name: 'Master of Names' type: 'hero' - difficulty: 1 id: 'master-of-names' original: '5452c3ce57e83800009730f7' description: 'Use your glasses to defend yourself from the Kithmen.' @@ -818,7 +507,6 @@ dungeon = [ { name: 'Lowly Kithmen' type: 'hero' - difficulty: 1 id: 'lowly-kithmen' original: '541b24511ccc8eaae19f3c1f' description: 'Now that you can see them, they\'re everywhere!' @@ -831,7 +519,6 @@ dungeon = [ { name: 'Closing the Distance' type: 'hero' - difficulty: 1 id: 'closing-the-distance' original: '541b288e1ccc8eaae19f3c25' description: 'Kithmen are not the only ones to stand in your way.' @@ -844,7 +531,6 @@ dungeon = [ { name: 'Tactical Strike' type: 'hero' - difficulty: 1 id: 'tactical-strike' original: '5452cfa706a59e000067e4f5' description: 'They\'re, uh, coming right for us! Sneak up behind them.' @@ -857,7 +543,6 @@ dungeon = [ { name: 'The Final Kithmaze' type: 'hero' - difficulty: 1 id: 'the-final-kithmaze' original: '541b434e1ccc8eaae19f3c33' description: 'To escape you must find your way through an Elder Kithman\'s maze.' @@ -870,7 +555,6 @@ dungeon = [ { name: 'The Gauntlet' type: 'hero' - difficulty: 1 id: 'the-gauntlet' original: '5452d8b906a59e000067e4fa' description: 'Rush for the stairs, battling foes at every turn.' @@ -883,7 +567,6 @@ dungeon = [ { name: 'Kithgard Gates' type: 'hero' - difficulty: 1 id: 'kithgard-gates' original: '541c9a30c6362edfb0f34479' description: 'Escape the Kithgard dungeons and don\'t let the guardians get you.' @@ -895,7 +578,6 @@ dungeon = [ { name: 'Cavern Survival' type: 'hero-ladder' - difficulty: 1 id: 'cavern-survival' original: '544437e0645c0c0000c3291d' description: 'Stay alive longer than your opponent amidst hordes of ogres!' @@ -909,7 +591,6 @@ forest = [ { name: 'Defense of Plainswood' type: 'hero' - difficulty: 1 id: 'defense-of-plainswood' original: '541b67f71ccc8eaae19f3c62' description: 'Protect the peasants from the pursuing ogres.' @@ -921,7 +602,6 @@ forest = [ { name: 'Winding Trail' type: 'hero' - difficulty: 1 id: 'winding-trail' original: '5446cb40ce01c23e05ecf027' description: 'Stay alive and navigate through the forest.' @@ -933,76 +613,142 @@ forest = [ { name: 'Thornbush Farm' type: 'hero' - difficulty: 1 id: 'thornbush-farm' original: '5447030525cce60000745e2a' description: 'Determine refugee peasant from ogre when defending the farm.' nextLevels: - continue: 'a-fiery-trap' + continue: 'back-to-back' x: 44.09 y: 57.75 } { - name: 'A Fiery Trap' + name: 'Back to Back' type: 'hero' - difficulty: 1 - id: 'a-fiery-trap' + id: 'back-to-back' original: '5448330517d7283e051f9b9e' description: 'Patrol the village entrances, but stay defensive.' - disabled: true + nextLevels: + continue: 'ogre-encampment' x: 40.14 y: 63.96 } - #{ - # name: '' - # type: 'hero' - # difficulty: 1 - # id: '' - # description: '' - # x: 58.46 - # y: 66.38 - # } - #{ - # name: '' - # type: 'hero' - # difficulty: 1 - # id: '' - # description: '' - # x: 63.11 - # y: 62.74 - # } - #{ - # name: '' - # type: 'hero' - # difficulty: 1 - # id: '' - # description: '' - # x: 69.19 - # y: 60.61 - # } - #{ - # name: '' - # type: 'hero' - # difficulty: 1 - # id: '' - # description: '' - # x: 77.54 - # y: 65.94 - #} + { + name: 'Ogre Encampment' + type: 'hero' + id: 'ogre-encampment' + description: 'Recover stolen treasure from an ogre encampment.' + nextLevels: + continue: 'woodland-cleaver' + x: 46.48 + y: 70.92 + } + { + name: 'Woodland Cleaver' + type: 'hero' + id: 'woodland-cleaver' + description: 'Use your new cleave ability to fend off munchkins.' + nextLevels: + continue: 'shield-rush' + x: 52.32 + y: 70.80 + } + { + name: 'Shield Rush' + type: 'hero' + id: 'shield-rush' + description: 'Combine cleave and shield to endure an ogre onslaught.' + nextLevels: + continue: 'peasant-protection' + x: 58.54 + y: 66.73 + } + { + name: 'Peasant Protection' + type: 'hero' + id: 'peasant-protection' + description: 'Stay close to Victor.' + nextLevels: + continue: 'munchkin-swarm' + x: 64.37 + y: 62.18 + } + { + name: 'Munchkin Swarm' + type: 'hero' + id: 'munchkin-swarm' + description: 'Loot a gigantic chest while surrounded by a swarm of ogre munchkins.' + nextLevels: + continue: 'coinucopia' + x: 71.19 + y: 63.61 + } { name: 'Coinucopia' type: 'hero' - difficulty: 1 id: 'coinucopia' description: 'Start playing in real-time with input flags as you collect gold coins!' - x: 58.54 - y: 66.73 - disabled: true + disabled: not me.isAdmin() + nextLevels: + continue: 'copper-meadows' + x: 77.54 + y: 65.94 + } + { + name: 'Copper Meadows' + type: 'hero' + id: 'copper-meadows' + description: 'grab the coins' + disabled: not me.isAdmin() + nextLevels: + continue: 'drop-the-flag' + x: 77.54 + y: 55.94 + } + { + name: 'Drop the Flag' + type: 'hero' + id: 'drop-the-flag' + description: 'it is hot' + disabled: not me.isAdmin() + nextLevels: + continue: 'deadly-pursuit' + x: 77.54 + y: 50.94 + } + { + name: 'Deadly Pursuit' + type: 'hero' + id: 'deadly-pursuit' + description: 'what is a dirt nap? it is death.' + disabled: not me.isAdmin() + nextLevels: + continue: 'rich-forager' + x: 77.54 + y: 40.94 + } + { + name: 'Rich Forager' + type: 'hero' + id: 'rich-forager' + description: 'if i were a rich man' + disabled: not me.isAdmin() + nextLevels: + continue: 'multiplayer-treasure-grove' + x: 77.54 + y: 45.94 + } + { + name: 'Multiplayer Treasure Grove' + type: 'hero' + id: 'multiplayer-treasure-grove' + description: 'show em who is the professional boss' + disabled: not me.isAdmin() + x: 77.54 + y: 35.94 } { name: 'Dueling Grounds' type: 'hero-ladder' - difficulty: 1 id: 'dueling-grounds' original: '5442ba0e1e835500007eb1c7' description: 'Battle head-to-head against another hero in this basic beginner combat arena.' diff --git a/app/views/play/level/ControlBarView.coffee b/app/views/play/level/ControlBarView.coffee index 6ce04ccde..8eb859fe8 100644 --- a/app/views/play/level/ControlBarView.coffee +++ b/app/views/play/level/ControlBarView.coffee @@ -12,6 +12,8 @@ module.exports = class ControlBarView extends CocoView subscriptions: 'bus:player-states-changed': 'onPlayerStatesChanged' + 'level:disable-controls': 'onDisableControls' + 'level:enable-controls': 'onEnableControls' events: 'click #next-game-button': -> Backbone.Mediator.publish 'level:next-game-pressed', {} @@ -53,24 +55,43 @@ module.exports = class ControlBarView extends CocoView else if @level.get('type', true) in ['hero', 'hero-coop'] @homeLink = c.homeLink = '/play' @homeViewClass = require 'views/play/WorldMapView' - # TODO: dynamically figure out which world map to return to - if @level.get('slug') in ['defense-of-plainswood', 'winding-trail', 'thornbush-farm', 'a-fiery-trap'] - @homeLink += '/forest' - @homeViewArgs.push 'forest' + campaign = @getCampaignForSlug @level.get 'slug' + if campaign isnt 'dungeon' + @homeLink += '/' + campaign + @homeViewArgs.push campaign else @homeLink = c.homeLink = '/' @homeViewClass = require 'views/HomeView' c.editorLink = "/editor/level/#{@level.get('slug')}" + c.homeLink = @homeLink c showGameMenuModal: -> gameMenuModal = new GameMenuModal level: @level, session: @session, supermodel: @supermodel @openModalView gameMenuModal @listenToOnce gameMenuModal, 'change-hero', -> - setupManager = new LevelSetupManager({supermodel: @supermodel, levelID: @level.get('slug'), parent: @}) - setupManager.open() + @setupManager?.destroy() + @setupManager = new LevelSetupManager({supermodel: @supermodel, levelID: @level.get('slug'), parent: @, session: @session}) + @setupManager.open() onClickHome: (e) -> e.preventDefault() e.stopImmediatePropagation() Backbone.Mediator.publish 'router:navigate', route: @homeLink, viewClass: @homeViewClass, viewArgs: @homeViewArgs + + onDisableControls: (e) -> @toggleControls e, false + onEnableControls: (e) -> @toggleControls e, true + toggleControls: (e, enabled) -> + return if e.controls and not ('level' in e.controls) + return if enabled is @controlsEnabled + @controlsEnabled = enabled + @$el.toggleClass 'controls-disabled', not enabled + + getCampaignForSlug: (slug) -> + for campaign in require('views/play/WorldMapView').campaigns + for level in campaign.levels + return campaign.id if level.id is slug + + destroy: -> + @setupManager?.destroy() + super() diff --git a/app/views/play/level/DialogueAnimator.coffee b/app/views/play/level/DialogueAnimator.coffee index 3b1c3a2d7..3a7673bd0 100644 --- a/app/views/play/level/DialogueAnimator.coffee +++ b/app/views/play/level/DialogueAnimator.coffee @@ -9,7 +9,7 @@ module.exports = class DialogueAnimator @childrenToAdd = _.map(d[0].childNodes, (e) -> return e) @t0 = new Date() @charsAdded = 0 - @charsPerSecond = 50 + @charsPerSecond = 25 tick: -> if not @charsToAdd and not @childAnimator diff --git a/app/views/play/level/LevelDialogueView.coffee b/app/views/play/level/LevelDialogueView.coffee new file mode 100644 index 000000000..3629ba687 --- /dev/null +++ b/app/views/play/level/LevelDialogueView.coffee @@ -0,0 +1,104 @@ +CocoView = require 'views/kinds/CocoView' +template = require 'templates/play/level/level-dialogue-view' +DialogueAnimator = require './DialogueAnimator' + +module.exports = class LevelDialogueView extends CocoView + id: 'level-dialogue-view' + template: template + + subscriptions: + 'sprite:speech-updated': 'onSpriteDialogue' + 'level:sprite-clear-dialogue': 'onSpriteClearDialogue' + 'level:shift-space-pressed': 'onShiftSpacePressed' + 'level:escape-pressed': 'onEscapePressed' + 'sprite:dialogue-sound-completed': 'onDialogueSoundCompleted' + + events: + 'click': 'onClick' + + onClick: (e) -> + Backbone.Mediator.publish 'tome:focus-editor', {} + + onFrameChanged: (e) -> + @timeProgress = e.progress + @update() + + onSpriteDialogue: (e) -> + return unless e.message + @$el.addClass 'active speaking' + @setMessage e.message, e.mood, e.responses + + window.tracker?.trackEvent 'Heard Sprite', {message: e.message, label: e.message}, ['Google Analytics'] + + onDialogueSoundCompleted: -> + @$el.removeClass 'speaking' + + onSpriteClearDialogue: -> + @$el.removeClass 'active speaking' + + setMessage: (message, mood, responses) -> + message = marked message + # Fix old HTML icons like in the Markdown + message = message.replace /<i class='(.+?)'><\/i>/, "" + clearInterval(@messageInterval) if @messageInterval + @bubble = $('.dialogue-bubble', @$el) + @bubble.removeClass(@lastMood) if @lastMood + @lastMood = mood + @bubble.text('') + group = $('
') + @bubble.append(group) + if responses + @lastResponses = responses + for response in responses + button = $('').text(response.text) + button.addClass response.buttonClass if response.buttonClass + group.append(button) + response.button = $('button:last', group) + else + s = $.i18n.t('play_level.hud_continue_short', defaultValue: 'Continue') + sk = $.i18n.t('play_level.skip_tutorial', defaultValue: 'skip: esc') + if not @escapePressed + group.append('' + sk + '') + group.append($('')) + @lastResponses = null + @animator = new DialogueAnimator(message, @bubble) + @messageInterval = setInterval(@addMoreMessage, 1000 / 30) # 30 FPS + + addMoreMessage: => + if @animator.done() + clearInterval(@messageInterval) + @messageInterval = null + $('.enter', @bubble).removeClass('secret').css('opacity', 0.0).delay(500).animate({opacity: 1.0}, 500, @animateEnterButton) + if @lastResponses + buttons = $('.enter button') + for response, i in @lastResponses + channel = response.channel.replace 'level-set-playing', 'level:set-playing' # Easier than migrating all those victory buttons. + f = (r) => => setTimeout((-> Backbone.Mediator.publish(channel, r.event or {})), 10) + $(buttons[i]).click(f(response)) + else + $('.enter', @bubble).click(-> Backbone.Mediator.publish('script:end-current-script', {})) + return + @animator.tick() + + onShiftSpacePressed: (e) -> + @shiftSpacePressed = (@shiftSpacePressed || 0) + 1 + # We don't need to handle script:end-current-script--that's done--but if we do have + # custom buttons, then we need to trigger the one that should fire (the last one). + # If we decide that always having the last one fire is bad, we should make it smarter. + return unless @lastResponses?.length + r = @lastResponses[@lastResponses.length - 1] + channel = r.channel.replace 'level-set-playing', 'level:set-playing' + _.delay (-> Backbone.Mediator.publish(channel, r.event or {})), 10 + + onEscapePressed: (e) -> + @escapePressed = true + + animateEnterButton: => + return unless @bubble + button = $('.enter', @bubble) + dot = $('.dot', button) + dot.animate({opacity: 0.2}, 300).animate({opacity: 1.9}, 600, @animateEnterButton) + + destroy: -> + clearInterval(@messageInterval) if @messageInterval + super() diff --git a/app/views/play/level/LevelHUDView.coffee b/app/views/play/level/LevelHUDView.coffee index 7265ef1e0..669da3687 100644 --- a/app/views/play/level/LevelHUDView.coffee +++ b/app/views/play/level/LevelHUDView.coffee @@ -1,25 +1,17 @@ CocoView = require 'views/kinds/CocoView' template = require 'templates/play/level/hud' prop_template = require 'templates/play/level/hud_prop' -action_template = require 'templates/play/level/hud_action' -DialogueAnimator = require './DialogueAnimator' +LevelOptions = require 'lib/LevelOptions' module.exports = class LevelHUDView extends CocoView id: 'thang-hud' template: template - dialogueMode: false - showingActions: false subscriptions: 'surface:frame-changed': 'onFrameChanged' 'level:disable-controls': 'onDisableControls' 'level:enable-controls': 'onEnableControls' 'surface:sprite-selected': 'onSpriteSelected' - 'sprite:speech-updated': 'onSpriteDialogue' - 'level:sprite-clear-dialogue': 'onSpriteClearDialogue' - 'level:shift-space-pressed': 'onShiftSpacePressed' - 'level:escape-pressed': 'onEscapePressed' - 'sprite:dialogue-sound-completed': 'onDialogueSoundCompleted' 'sprite:thang-began-talking': 'onThangBeganTalking' 'sprite:thang-finished-talking': 'onThangFinishedTalking' 'god:new-world-created': 'onNewWorld' @@ -30,7 +22,7 @@ module.exports = class LevelHUDView extends CocoView afterRender: -> super() @$el.addClass 'no-selection' - if @options.level.get('slug') in ['dungeons-of-kithgard', 'gems-in-the-deep', 'forgetful-gemsmith', 'shadow-guard', 'kounter-kithwise', 'crawlways-of-kithgard', 'true-names', 'favorable-odds', 'the-raised-sword', 'the-first-kithmaze', 'haunted-kithmaze', 'descending-further', 'the-second-kithmaze', 'dread-door', 'known-enemy', 'master-of-names', 'lowly-kithmen', 'closing-the-distance', 'tactical-strike', 'the-final-kithmaze', 'the-gauntlet'] + if LevelOptions[@options.level.get('slug')]?.hidesHUD @hidesHUD = true @$el.addClass 'hide-hud-properties' @@ -44,75 +36,31 @@ module.exports = class LevelHUDView extends CocoView onDisableControls: (e) -> return if e.controls and not ('hud' in e.controls) @disabled = true + @$el.addClass 'controls-disabled' onEnableControls: (e) -> return if e.controls and not ('hud' in e.controls) @disabled = false + @$el.removeClass 'controls-disabled' onSpriteSelected: (e) -> - # TODO: this allows the surface and HUD selection to get out of sync if we select another unit while in dialogue mode - return if @disabled or @dialogueMode - @switchToThangElements() + return if @disabled @setThang e.thang, e.sprite?.thangType - onSpriteDialogue: (e) -> - return unless e.message - spriteID = e.sprite.thang.id - @setSpeaker e.sprite - @stage?.startTalking() - @setMessage(e.message, e.mood, e.responses) - window.tracker?.trackEvent 'Heard Sprite', {speaker: spriteID, message: e.message, label: e.message}, ['Google Analytics'] - - onDialogueSoundCompleted: -> - @stage?.stopTalking() - - onSpriteClearDialogue: -> - @clearSpeaker() - onNewWorld: (e) -> hadThang = @thang @thang = e.world.thangMap[@thang.id] if @thang if hadThang and not @thang @setThang null, null - else if @thang - @createActions() # Make sure it updates its actions. setThang: (thang, thangType) -> - unless @speaker - if not thang? and not @thang? then return - if thang? and @thang? and thang.id is @thang.id then return - + if not thang? and not @thang? then return + if thang? and @thang? and thang.id is @thang.id then return @thang = thang @thangType = thangType - @$el.toggleClass 'no-selection', not @thang? - clearTimeout @hintNextSelectionTimeout - @$el.find('.no-selection-message').hide() - if not @thang - unless @options.level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop'] - @hintNextSelectionTimeout = _.delay((=> @$el.find('.no-selection-message').slideDown('slow')), 10000) - return + return unless @thang @createAvatar thangType, @thang @createProperties() - @createActions() - @update() - @speaker = null - - setSpeaker: (speakerSprite) -> - return if speakerSprite is @speakerSprite - @speakerSprite = speakerSprite - @speaker = @speakerSprite.thang.id - @createAvatar @speakerSprite.thangType, @speakerSprite.thang, @speakerSprite.options.colorConfig - @$el.removeClass 'no-selection' - @switchToDialogueElements() - - clearSpeaker: -> - if not @thang - @$el.addClass 'no-selection' - @setThang @thang, @thangType - @switchToThangElements() - @speaker = null - @speakerSprite = null - @bubble = null @update() createAvatar: (thangType, thang, colorConfig) -> @@ -127,18 +75,19 @@ module.exports = class LevelHUDView extends CocoView options.async = false options.colorConfig = colorConfig if colorConfig wrapper = @$el.find '.thang-canvas-wrapper' - team = @thang?.team or @speakerSprite?.thang?.team + team = @thang?.team wrapper.removeClass (i, css) -> (css.match(/\bteam-\S+/g) or []).join ' ' wrapper.addClass "team-#{team}" if thangType.get('raster') - wrapper.empty().append($('').attr('src', '/file/'+thangType.get('raster'))) + wrapper.empty().append($('').addClass('avatar').attr('src', '/file/'+thangType.get('raster'))) else - return unless stage = thangType.getPortraitStage options - newCanvas = $(stage.canvas).addClass('thang-canvas') + return unless stage = thangType.getPortraitStage options, 100 + newCanvas = $(stage.canvas).addClass('thang-canvas avatar') wrapper.empty().append(newCanvas) stage.update() @stage?.stopTalking() @stage = stage + wrapper.append($('').addClass('avatar-frame').attr('src', '/images/level/thang_avatar_frame.png')) onThangBeganTalking: (e) -> return unless @stage and @thang is e.thang @@ -149,136 +98,29 @@ module.exports = class LevelHUDView extends CocoView @stage?.stopTalking() createProperties: -> - props = @$el.find('.thang-props') - props.find(':not(.thang-name)').remove() - if @thang.id is 'Hero Placeholder' - name = {knight: 'Tharin', captain: 'Anya'}[@thang.type] ? 'Hero' + if @thang.id in ['Hero Placeholder', 'Hero Placeholder 1'] + name = {knight: 'Tharin', captain: 'Anya', librarian: 'Hushbaum', sorcerer: 'Pender', 'potion-master': 'Omarn', samurai: 'Hattori', ninja: 'Amara'}[@thang.type] ? 'Hero' else name = if @thang.type then "#{@thang.id} - #{@thang.type}" else @thang.id - props.find('.thang-name').text name - propNames = _.without @thang.hudProperties ? [], 'action' - nColumns = Math.ceil propNames.length / 5 - columns = ($('
').appendTo(props) for i in [0 ... nColumns]) + @$el.find('.thang-name').text name + props = @$el.find('.thang-props') + props.find('.prop').remove() + #propNames = _.without @thang.hudProperties ? [], 'action' + propNames = @thang.hudProperties for prop, i in propNames - continue if prop is 'action' pel = @createPropElement prop continue unless pel? if pel.find('.bar').is('*') and props.find('.bar').is('*') props.find('.bar-prop').last().after pel # Keep bars together else - columns[i % nColumns].append pel + props.append pel null - createActions: -> - actions = @$el.find('.thang-actions tbody').empty() - showActions = @thang.world and not @thang.notOfThisWorld and not _.isEmpty(@thang.actions) and 'action' in (@thang.hudProperties ? []) - @$el.find('.thang-actions').toggleClass 'secret', not showActions - @showingActions = showActions - return unless showActions - @buildActionTimespans() - for actionName, action of @thang.actions - actions.append @createActionElement(actionName) - @lastActionTimespans[actionName] = {} - - setMessage: (message, mood, responses) -> - message = marked message - # Fix old HTML icons like in the Markdown - message = message.replace /<i class='(.+?)'><\/i>/, "" - clearInterval(@messageInterval) if @messageInterval - @bubble = $('.dialogue-bubble', @$el) - @bubble.removeClass(@lastMood) if @lastMood - @lastMood = mood - @bubble.text('') - group = $('
') - @bubble.append(group) - if responses - @lastResponses = responses - for response in responses - button = $('').text(response.text) - button.addClass response.buttonClass if response.buttonClass - group.append(button) - response.button = $('button:last', group) - else - if @options.level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop'] - s = $.i18n.t('play_level.hud_continue_short', defaultValue: 'Continue') - else - s = $.i18n.t('play_level.hud_continue', defaultValue: 'Continue (shift+space)') # Get rid of eventually - sk = $.i18n.t('play_level.skip_tutorial', defaultValue: 'skip: esc') - if not @escapePressed - group.append('' + sk + '') - group.append($('')) - @lastResponses = null - if @speaker is 'Hero Placeholder' - # Doesn't work if it fires from a script; we don't really know who we are then. - name = {knight: 'Tharin', captain: 'Anya'}[@speakerSprite?.thang?.id] ? 'Hero' - else - name = @speaker - @bubble.append($("

#{name}

")) - @animator = new DialogueAnimator(message, @bubble) - @messageInterval = setInterval(@addMoreMessage, 1000 / 30) # 30 FPS - - addMoreMessage: => - if @animator.done() - clearInterval(@messageInterval) - @messageInterval = null - $('.enter', @bubble).removeClass('secret').css('opacity', 0.0).delay(500).animate({opacity: 1.0}, 500, @animateEnterButton) - if @lastResponses - buttons = $('.enter button') - for response, i in @lastResponses - channel = response.channel.replace 'level-set-playing', 'level:set-playing' # Easier than migrating all those victory buttons. - f = (r) => => setTimeout((-> Backbone.Mediator.publish(channel, r.event or {})), 10) - $(buttons[i]).click(f(response)) - else - $('.enter', @bubble).click(-> Backbone.Mediator.publish('script:end-current-script', {})) - return - @animator.tick() - - onShiftSpacePressed: (e) -> - @shiftSpacePressed = (@shiftSpacePressed || 0) + 1 - # We don't need to handle script:end-current-script--that's done--but if we do have - # custom buttons, then we need to trigger the one that should fire (the last one). - # If we decide that always having the last one fire is bad, we should make it smarter. - return unless @lastResponses?.length - r = @lastResponses[@lastResponses.length - 1] - channel = r.channel.replace 'level-set-playing', 'level:set-playing' - _.delay (-> Backbone.Mediator.publish(channel, r.event or {})), 10 - - onEscapePressed: (e) -> - @escapePressed = true - - animateEnterButton: => - return unless @bubble - button = $('.enter', @bubble) - dot = $('.dot', button) - dot.animate({opacity: 0.2}, 300).animate({opacity: 1.9}, 600, @animateEnterButton) - - switchToDialogueElements: -> - @dialogueMode = true - $('.thang-elem', @$el).addClass('secret') - @$el.find('.thang-canvas-wrapper').removeClass('secret') - $('.dialogue-area', @$el) - .removeClass('secret') - .animate({opacity: 1.0}, 200) - $('.dialogue-bubble', @$el) - .css('opacity', 0.0) - .delay(200) - .animate({opacity: 1.0}, 200) - clearTimeout @hintNextSelectionTimeout - - switchToThangElements: -> - @dialogueMode = false - $('.thang-elem', @$el).removeClass('secret') - $('.dialogue-area', @$el).addClass('secret') - $('.thang-actions', @$el).toggleClass 'secret', not @showingActions - @$el.find('.thang-canvas-wrapper').addClass('secret') if @hidesHUD - update: -> - return unless @thang and not @speaker + return unless @thang @$el.find('.thang-props-column').toggleClass 'nonexistent', not @thang.exists if @thang.exists @updatePropElement(prop, @thang[prop]) for prop in @thang.hudProperties ? [] - # Update action timeline - @updateActions() createPropElement: (prop) -> if prop in ['maxHealth'] @@ -336,62 +178,6 @@ module.exports = class LevelHUDView extends CocoView return 'No ' + prop return val - updateActions: -> - return unless @thang.world and @showingActions and not _.isEmpty @thang.actions - @buildActionTimespans() unless @timespans - for actionName, action of @thang.actions - @updateActionElement(actionName, @timespans[actionName], @thang.action is actionName) - tableContainer = @$el.find('.table-container') - arrow = tableContainer.find('.progress-arrow') - @timelineWidth ||= tableContainer.find('tr:not(.secret) .action-timeline').width() - @actionArrowWidth ||= arrow.width() - right = (1 - (@timeProgress ? 0)) * @timelineWidth - arrow.css 'right', right - @actionArrowWidth / 2 - tableContainer.find('.progress-line').css 'right', right - - buildActionTimespans: -> - @lastActionTimespans = {} - @timespans = {} - dt = @thang.world.dt - actionHistory = @thang.world.actionsForThang @thang.id, true - [lastFrame, lastAction] = [0, null] - for hist in actionHistory.concat {frame: @thang.world.totalFrames, name: 'END'} - [newFrame, newAction] = [hist.frame, hist.name] - continue if newAction is lastAction - if newFrame > lastFrame and lastAction - # TODO: don't push it if it didn't exist until then - (@timespans[lastAction] ?= []).push [lastFrame * dt, newFrame * dt] - [lastFrame, lastAction] = [newFrame, newAction] - - createActionElement: (action) -> - $(action_template(action: action)) - - updateActionElement: (action, timespans, current) -> - ael = @$el.find '.thang-actions *[name=' + action + ']' - ael.toggleClass 'current-action', current - - timespans ?= [] - lastTimespans = @lastActionTimespans[action] ? [] - if @lastActionTimespans and timespans.length is lastTimespans.length - changed = false - for timespan, i in timespans - if timespan[0] isnt lastTimespans[i][0] or timespan[1] isnt lastTimespans[i][1] - changed = true - break - return unless changed - ael.toggleClass 'secret', not timespans.length - @lastActionTimespans[action] = timespans - timeline = ael.find('.action-timeline .timeline-wrapper').empty() - lifespan = @thang.world.totalFrames / @thang.world.frameRate - scale = timeline.width() / lifespan - for [start, end] in timespans - bar = $('
').css left: start * scale, right: (lifespan - end) * scale - timeline.append bar - - ael - destroy: -> @stage?.stopTalking() - clearInterval(@messageInterval) if @messageInterval - clearTimeout @hintNextSelectionTimeout if @hintNextSelectionTimeout super() diff --git a/app/views/play/level/LevelLoadingView.coffee b/app/views/play/level/LevelLoadingView.coffee index da5e40323..65f251b8d 100644 --- a/app/views/play/level/LevelLoadingView.coffee +++ b/app/views/play/level/LevelLoadingView.coffee @@ -27,11 +27,12 @@ module.exports = class LevelLoadingView extends CocoView _.defer => return if @destroyed # Make sure that we are as tall now as we will be when the canvas wrapper is resized to the right height. + currentCanvasHeight = 589 canvasAspectRatio = 924 / 589 eventualCanvasWidth = $('#canvas-wrapper').outerWidth() - eventualCanvasHeight = Math.max(eventualCanvasWidth / canvasAspectRatio) - currentCanvasHeight = 589 - @$el.addClass('manually-sized').css('height', @$el.outerHeight() + eventualCanvasHeight - currentCanvasHeight + 2) + eventualCanvasHeight = eventualCanvasWidth / canvasAspectRatio + newHeight = Math.max 769, @$el.outerHeight() + eventualCanvasHeight - currentCanvasHeight + 2 + @$el.addClass('manually-sized').css('height', newHeight) onLevelLoaded: (e) -> @level = e.level @@ -63,7 +64,6 @@ module.exports = class LevelLoadingView extends CocoView Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'level_loaded', volume: 0.75 # old: loading_ready @$el.find('.progress').addClass 'active progress-striped' @$el.find('.start-level-button').removeClass 'secret' - @$el.removeClass('manually-sized').css('height', '100%') startUnveiling: (e) -> Backbone.Mediator.publish 'level:loading-view-unveiling', {} diff --git a/app/views/play/level/LevelPlaybackView.coffee b/app/views/play/level/LevelPlaybackView.coffee index f913bec39..0c0123dc6 100644 --- a/app/views/play/level/LevelPlaybackView.coffee +++ b/app/views/play/level/LevelPlaybackView.coffee @@ -1,9 +1,7 @@ CocoView = require 'views/kinds/CocoView' template = require 'templates/play/level/playback' {me} = require 'lib/auth' - -EditorConfigModal = require './modal/EditorConfigModal' -KeyboardShortcutsModal = require './modal/KeyboardShortcutsModal' +LevelOptions = require 'lib/LevelOptions' module.exports = class LevelPlaybackView extends CocoView id: 'playback-view' @@ -69,7 +67,7 @@ module.exports = class LevelPlaybackView extends CocoView @goto = t 'play_level.time_goto' @current = t 'play_level.time_current' @total = t 'play_level.time_total' - @$el.find('#play-button').css('visibility', 'hidden') if @options.levelID in ['dungeons-of-kithgard', 'gems-in-the-deep', 'shadow-guard', 'true-names'] # Don't show for first few levels, confuses new players. + @$el.find('#play-button').css('visibility', 'hidden') if LevelOptions[@options.levelID]?.hidesPlayButton # Don't show for first few levels, confuses new players. updatePopupContent: -> @timePopup?.updateContent "

#{@timeToString @newTime}

#{@formatTime(@current, @currentTime)}
#{@formatTime(@total, @totalTime)}" @@ -144,6 +142,7 @@ module.exports = class LevelPlaybackView extends CocoView console.warn('error disabling scrubber', error) @timePopup?.disable() $('#volume-button', @$el).removeClass('disabled') + @$el.addClass 'controls-disabled' onEnableControls: (e) -> return if @realTime @@ -155,6 +154,7 @@ module.exports = class LevelPlaybackView extends CocoView catch error console.warn('error enabling scrubber', error) @timePopup?.enable() + @$el.removeClass 'controls-disabled' onSetPlaying: (e) -> @playing = (e ? {}).playing ? true diff --git a/app/views/play/level/PlayLevelView.coffee b/app/views/play/level/PlayLevelView.coffee index 24fa86d1d..a761e5a21 100644 --- a/app/views/play/level/PlayLevelView.coffee +++ b/app/views/play/level/PlayLevelView.coffee @@ -27,6 +27,7 @@ ProblemAlertView = require './tome/ProblemAlertView' TomeView = require './tome/TomeView' ChatView = require './LevelChatView' HUDView = require './LevelHUDView' +LevelDialogueView = require './LevelDialogueView' ControlBarView = require './ControlBarView' LevelPlaybackView = require './LevelPlaybackView' GoalsView = require './LevelGoalsView' @@ -77,7 +78,6 @@ module.exports = class PlayLevelView extends RootView 'real-time-multiplayer:joined-game': 'onRealTimeMultiplayerJoinedGame' 'real-time-multiplayer:left-game': 'onRealTimeMultiplayerLeftGame' 'real-time-multiplayer:manual-cast': 'onRealTimeMultiplayerCast' - 'level:hero-config-changed': 'onHeroConfigChanged' events: 'click #level-done-button': 'onDonePressed' @@ -189,7 +189,7 @@ module.exports = class PlayLevelView extends RootView @world = @levelLoader.world @level = @levelLoader.level @$el.addClass 'hero' if @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop'] - @$el.addClass 'flags' if (@level.get('slug') in ['sky-span', 'coinucopia']) or (@level.get('type', true) in ['hero-ladder', 'hero-coop']) # TODO: figure out when the player has flags. + @$el.addClass 'flags' if _.any(@world.thangs, (t) -> (t.programmableProperties and 'findFlags' in t.programmableProperties) or t.inventory?.flag) or @level.get('slug') is 'sky-span' @otherSession = @levelLoader.opponentSession @worldLoadFakeResources = [] # first element (0) is 1%, last (100) is 100% for percent in [1 .. 100] @@ -243,9 +243,10 @@ module.exports = class PlayLevelView extends RootView @insertSubView @tome = new TomeView levelID: @levelID, session: @session, otherSession: @otherSession, thangs: @world.thangs, supermodel: @supermodel, level: @level @insertSubView new LevelPlaybackView session: @session, levelID: @levelID, level: @level @insertSubView new GoalsView {} - @insertSubView new LevelFlagsView world: @world if (@levelID in ['sky-span', 'coinucopia']) or @level.get('type', true) in ['hero-ladder', 'hero-coop'] # TODO: figure out when flags are available + @insertSubView new LevelFlagsView world: @world if @$el.hasClass 'flags' @insertSubView new GoldView {} @insertSubView new HUDView {level: @level} + @insertSubView new LevelDialogueView {level: @level} @insertSubView new ChatView levelID: @levelID, sessionID: @session.id, session: @session if @level.get('type') in ['ladder', 'hero-ladder'] @insertSubView new MultiplayerStatusView levelID: @levelID, session: @session, level: @level @@ -278,8 +279,9 @@ module.exports = class PlayLevelView extends RootView onSessionLoaded: (e) -> # Just the level and session have been loaded by the level loader if e.level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop'] and not _.size e.session.get('heroConfig')?.inventory ? {} - setupManager = new LevelSetupManager({supermodel: @supermodel, levelID: @levelID, parent: @}) - setupManager.open() + @setupManager?.destroy() + @setupManager = new LevelSetupManager({supermodel: @supermodel, levelID: @levelID, parent: @, session: @session}) + @setupManager.open() @onRealTimeMultiplayerLevelLoaded e.session if e.level.get('type') in ['ladder', 'hero-ladder'] @@ -394,18 +396,6 @@ module.exports = class PlayLevelView extends RootView break Backbone.Mediator.publish 'tome:cast-spell', {} - onHeroConfigChanged: (e) -> - # Doesn't work because the new inventory ThangTypes may not be loaded. - #@setLevel @level, @supermodel - #Backbone.Mediator.publish 'tome:cast-spell', {} - # We'll just make a new PlayLevelView instead - console.log 'Hero config changed; reload the level.' - Backbone.Mediator.publish 'router:navigate', { - route: window.location.pathname, - viewClass: PlayLevelView, - viewArgs: [{supermodel: @supermodel, autoUnveil: true}, @levelID] - } - onWindowResize: (e) => @endHighlight() onDisableControls: (e) -> @@ -430,7 +420,10 @@ module.exports = class PlayLevelView extends RootView @victorySeen = true victoryTime = (new Date()) - @loadEndTime if victoryTime > 10 * 1000 # Don't track it if we're reloading an already-beaten level - application.tracker?.trackEvent 'Saw Victory', level: @level.get('name'), label: @level.get('name') + application.tracker?.trackEvent 'Saw Victory', + level: @level.get('name') + label: @level.get('name') + getDirectFirstGroup: me.getDirectFirstGroup() application.tracker?.trackTiming victoryTime, 'Level Victory Time', @levelID, @levelID, 100 showVictory: -> @@ -554,6 +547,7 @@ module.exports = class PlayLevelView extends RootView @god?.destroy() @goalManager?.destroy() @scriptManager?.destroy() + @setupManager?.destroy() if ambientSound = @ambientSound # Doesn't seem to work; stops immediately. createjs.Tween.get(ambientSound).to({volume: 0.0}, 1500).call -> ambientSound.stop() diff --git a/app/views/play/level/modal/EditorConfigModal.coffee b/app/views/play/level/modal/EditorConfigModal.coffee deleted file mode 100644 index f7c9ab857..000000000 --- a/app/views/play/level/modal/EditorConfigModal.coffee +++ /dev/null @@ -1,92 +0,0 @@ -ModalView = require 'views/kinds/ModalView' -template = require 'templates/play/level/modal/editor_config' -{me} = require 'lib/auth' - -module.exports = class EditorConfigModal extends ModalView - id: 'level-editor-config-modal' - template: template - aceConfig: {} - - defaultConfig: - language: 'python' - keyBindings: 'default' - invisibles: false - indentGuides: false - behaviors: false - liveCompletion: true - - events: - 'change #tome-invisibles': 'updateInvisibles' - 'change #tome-language': 'updateLanguage' - 'change #tome-key-bindings': 'updateKeyBindings' - 'change #tome-indent-guides': 'updateIndentGuides' - 'change #tome-behaviors': 'updateBehaviors' - 'change #tome-live-completion': 'updateLiveCompletion' - - constructor: (options) -> - super(options) - @session = options.session - - getRenderData: -> - @aceConfig = _.cloneDeep me.get('aceConfig') ? {} - @aceConfig = _.defaults @aceConfig, @defaultConfig - c = super() - c.languages = [ - {id: 'python', name: 'Python'} - {id: 'javascript', name: 'JavaScript'} - {id: 'coffeescript', name: 'CoffeeScript'} - {id: 'clojure', name: 'Clojure (Experimental)'} - {id: 'lua', name: 'Lua (Experimental)'} - {id: 'io', name: 'Io (Experimental)'} - ] - c.sessionLanguage = @session.get('codeLanguage') ? @aceConfig.language - c.language = @aceConfig.language - c.keyBindings = @aceConfig.keyBindings - c.invisibles = @aceConfig.invisibles - c.indentGuides = @aceConfig.indentGuides - c.behaviors = @aceConfig.behaviors - c.liveCompletion = @aceConfig.liveCompletion - c - - updateSessionLanguage: -> - @session.set 'codeLanguage', @$el.find('#tome-session-language').val() - - updateLanguage: -> - @aceConfig.language = @$el.find('#tome-language').val() - - updateInvisibles: -> - @aceConfig.invisibles = @$el.find('#tome-invisibles').prop('checked') - - updateKeyBindings: -> - @aceConfig.keyBindings = @$el.find('#tome-key-bindings').val() - - updateIndentGuides: -> - @aceConfig.indentGuides = @$el.find('#tome-indent-guides').prop('checked') - - updateBehaviors: -> - @aceConfig.behaviors = @$el.find('#tome-behaviors').prop('checked') - - updateLiveCompletion: -> - @aceConfig.liveCompletion = @$el.find('#tome-live-completion').prop('checked') - - afterRender: -> - super() - - onHidden: -> - oldLanguage = @session.get('codeLanguage') ? @aceConfig.language - newLanguage = @$el.find('#tome-session-language').val() - @session.set 'codeLanguage', newLanguage - @aceConfig.language = @$el.find('#tome-language').val() - @aceConfig.invisibles = @$el.find('#tome-invisibles').prop('checked') - @aceConfig.keyBindings = @$el.find('#tome-key-bindings').val() - @aceConfig.indentGuides = @$el.find('#tome-indent-guides').prop('checked') - @aceConfig.behaviors = @$el.find('#tome-behaviors').prop('checked') - @aceConfig.liveCompletion = @$el.find('#tome-live-completion').prop('checked') - me.set 'aceConfig', @aceConfig - Backbone.Mediator.publish 'tome:change-config', {} - Backbone.Mediator.publish 'tome:change-language', language: newLanguage unless newLanguage is oldLanguage - @session.save() unless newLanguage is oldLanguage - me.patch() - - destroy: -> - super() diff --git a/app/views/play/level/modal/HeroVictoryModal.coffee b/app/views/play/level/modal/HeroVictoryModal.coffee index 7948fad77..85d5991f1 100644 --- a/app/views/play/level/modal/HeroVictoryModal.coffee +++ b/app/views/play/level/modal/HeroVictoryModal.coffee @@ -160,6 +160,7 @@ module.exports = class HeroVictoryModal extends ModalView @insertSubView @ladderSubmissionView, @$el.find('.ladder-submission-view') beginSequentialAnimations: -> + return if @destroyed @sequentialAnimatedPanels = _.map(@animatedPanels.find('.reward-panel'), (panel) -> { number: $(panel).data('number') textEl: $(panel).find('.reward-text') @@ -248,7 +249,7 @@ module.exports = class HeroVictoryModal extends ModalView onGameSubmitted: (e) -> ladderURL = "/play/ladder/#{@level.get('slug')}#my-matches" # Preserve the supermodel as we navigate back to the ladder. - Backbone.Mediator.publish 'router:navigate', route: ladderURL, viewClass: require('views/play/ladder/LadderView'), viewArgs: [{supermodel: @supermodel}] + Backbone.Mediator.publish 'router:navigate', route: ladderURL, viewClass: require('views/play/ladder/LadderView'), viewArgs: [{supermodel: @supermodel}, @level.get('slug')] playSelectionSound: (hero, preload=false) -> return unless sounds = hero.get('soundTriggers')?.selected @@ -259,30 +260,36 @@ module.exports = class HeroVictoryModal extends ModalView else AudioPlayer.playSound name, 1 - # Branching group testing - - getNextLevel: (type) -> + getLevelInfoForSlug: (slug) -> for campaign in require('views/play/WorldMapView').campaigns - break if levelInfo for level in campaign.levels - if level.id is @level.get 'slug' - levelInfo = level - break - levelInfo?.nextLevels?[type] # 'more_practice', 'skip_ahead', 'continue' + return level if level.id is slug - getNextLevelMap: -> - # TODO: dynamically figure out which world map to return to - if @level.get('slug') in ['kithgard-gates', 'defense-of-plainswood', 'winding-trail', 'thornbush-farm', 'a-fiery-trap'] - return 'forest' - return 'dungeon' + getCampaignForSlug: (slug) -> + for campaign in require('views/play/WorldMapView').campaigns + for level in campaign.levels + return campaign.id if level.id is slug + + getNextLevelCampaign: -> + # Wouldn't handle skipping/more practice across campaign boundaries, but we don't do that. + campaign = @getCampaignForSlug @level.get 'slug' + if nextLevelSlug = @getNextLevel 'continue' + campaign = @getCampaignForSlug nextLevelSlug + campaign or 'dungeon' getNextLevelLink: (type) -> link = '/play' - nextMap = @getNextLevelMap() - link += '/' + nextMap unless nextMap is 'dungeon' + nextCampaign = @getNextLevelCampaign() + link += '/' + nextCampaign unless nextCampaign is 'dungeon' return link unless nextLevel = @getNextLevel type "#{link}?next=#{nextLevel}" + # Branching group testing + + getNextLevel: (type) -> + levelInfo = @getLevelInfoForSlug @level.get 'slug' + levelInfo?.nextLevels?[type] # 'more_practice', 'skip_ahead', 'continue' + onClickContinue: (e) -> nextLevelLink = @continueLevelLink if me.getBranchingGroup() is 'all-practice' and @morePracticeLevelLink @@ -291,7 +298,7 @@ module.exports = class HeroVictoryModal extends ModalView skipPrompt ||= not (@skipAheadLevelLink or @morePractiveLevelLink) and me.getBranchingGroup() is 'choice-explicit' if skipPrompt # Preserve the supermodel as we navigate back to the world map. - Backbone.Mediator.publish 'router:navigate', route: nextLevelLink, viewClass: require('views/play/WorldMapView'), viewArgs: [{supermodel: @supermodel}, @getNextLevelMap()] + Backbone.Mediator.publish 'router:navigate', route: nextLevelLink, viewClass: require('views/play/WorldMapView'), viewArgs: [{supermodel: @supermodel}, @getNextLevelCampaign()] else # Hide everything except the buttons prompting them for which kind of next level to do @$el.find('.modal-footer, .modal-body > *').hide() @@ -299,11 +306,10 @@ module.exports = class HeroVictoryModal extends ModalView onClickNextLevelBranch: (e) -> e.preventDefault() - route = $(e.target).data('href') or "/play/#{@getNextLevelMap()}" + route = $(e.target).data('href') or "/play/#{@getNextLevelCampaign()}" application.tracker?.trackEvent 'Branch Selected', level: @level.get('slug'), label: @level.get('slug'), branch: $(e.target).data('branch-key'), branchingGroup: me.getBranchingGroup(), route: route # Preserve the supermodel as we navigate back to world map. - console.log 'would navigate to', route - Backbone.Mediator.publish 'router:navigate', route: route, viewClass: require('views/play/WorldMapView'), viewArgs: [{supermodel: @supermodel}, @getNextLevelMap()] + Backbone.Mediator.publish 'router:navigate', route: route, viewClass: require('views/play/WorldMapView'), viewArgs: [{supermodel: @supermodel}, @getNextLevelCampaign()] onClickReturnToLadder: (e) -> e.preventDefault() diff --git a/app/views/play/level/modal/ReloadLevelModal.coffee b/app/views/play/level/modal/ReloadLevelModal.coffee new file mode 100644 index 000000000..320ecde21 --- /dev/null +++ b/app/views/play/level/modal/ReloadLevelModal.coffee @@ -0,0 +1,9 @@ +ModalView = require 'views/kinds/ModalView' +template = require 'templates/play/level/modal/reload-level-modal' + +module.exports = class ReloadLevelModal extends ModalView + id: '#reload-level-modal' + template: template + + events: + 'click #restart-level-confirm-button': -> Backbone.Mediator.publish 'level:restart', {} diff --git a/app/views/play/level/tome/CastButtonView.coffee b/app/views/play/level/tome/CastButtonView.coffee index c49482806..48f339201 100644 --- a/app/views/play/level/tome/CastButtonView.coffee +++ b/app/views/play/level/tome/CastButtonView.coffee @@ -1,6 +1,7 @@ CocoView = require 'views/kinds/CocoView' template = require 'templates/play/level/tome/cast_button' {me} = require 'lib/auth' +LevelOptions = require 'lib/LevelOptions' module.exports = class CastButtonView extends CocoView id: 'cast-button-view' @@ -9,6 +10,7 @@ module.exports = class CastButtonView extends CocoView events: 'click .cast-button': 'onCastButtonClick' 'click .submit-button': 'onCastRealTimeButtonClick' + 'click .done-button': 'onDoneButtonClick' subscriptions: 'tome:spell-changed': 'onSpellChanged' @@ -25,7 +27,8 @@ module.exports = class CastButtonView extends CocoView @spells = options.spells @levelID = options.levelID @castShortcut = '⇧↵' - @initButtonTextABTest() + @levelOptions = LevelOptions[@options.levelID] ? {} + @initButtonTextABTest() unless @levelOptions.hidesRealTimePlayback getRenderData: (context={}) -> context = super context @@ -33,10 +36,10 @@ module.exports = class CastButtonView extends CocoView enter = $.i18n.t 'keyboard_shortcuts.enter' castShortcutVerbose = "#{shift}+#{enter}" castRealTimeShortcutVerbose = (if @isMac() then 'Cmd' else 'Ctrl') + '+' + castShortcutVerbose - context.castVerbose = castShortcutVerbose + ': ' + $.i18n.t('keyboard_shortcuts.cast_spell') + context.castVerbose = castShortcutVerbose + ': ' + $.i18n.t('keyboard_shortcuts.run_code') context.castRealTimeVerbose = castRealTimeShortcutVerbose + ': ' + $.i18n.t('keyboard_shortcuts.run_real_time') # A/B test submit button text - context.testSubmitText = @testButtonsText.submit if @testGroup? and @testGroup isnt 0 + context.testSubmitText = @testButtonsText.submit if @testGroup? and @testGroup isnt 0 context afterRender: -> @@ -46,7 +49,12 @@ module.exports = class CastButtonView extends CocoView #delay = me.get('autocastDelay') # No more autocast delay = 90019001 @setAutocastDelay delay - @$el.find('.submit-button').hide() if @options.levelID in ['dungeons-of-kithgard', 'gems-in-the-deep', 'shadow-guard', 'true-names'] + if @levelOptions.hidesSubmitUntilRun or @levelOptions.hidesRealTimePlayback + @$el.find('.submit-button').hide() # Hide Submit for the first few until they run it once. + if @options.session.get('state')?.complete and @levelOptions.hidesRealTimePlayback + @$el.find('.done-button').show() + if @options.levelID is 'thornbush-farm'# and not @options.session.get('state')?.complete + @$el.find('.submit-button').hide() # Hide submit until first win so that script can explain it. attachTo: (spellView) -> @$el.detach().prependTo(spellView.toolbarView.$el).show() @@ -66,6 +74,9 @@ module.exports = class CastButtonView extends CocoView else Backbone.Mediator.publish 'tome:manual-cast', {realTime: true} + onDoneButtonClick: (e) -> + Backbone.Mediator.publish 'level:show-victory', showModal: true + onSpellChanged: (e) -> @updateCastButton() @@ -90,11 +101,16 @@ module.exports = class CastButtonView extends CocoView @winnable = winnable @$el.toggleClass 'winnable', @winnable Backbone.Mediator.publish 'tome:winnability-updated', winnable: @winnable - if @winnable or (@hasCastOnce and @options.levelID isnt 'dungeons-of-kithgard') # Show once 1) we think they will win or 2) they have hit “run” once. (Only #1 on the fist level.) - @$el.find('.submit-button').show() # In case we hid it, like on the first level. + if @levelOptions.hidesRealTimePlayback + @$el.find('.done-button').toggle @winnable + else if @winnable and @options.levelID is 'thornbush-farm' + @$el.find('.submit-button').show() # Hide submit until first win so that script can explain it. onGoalsCalculated: (e) -> + # When preloading, with real-time playback enabled, we highlight the submit button when we think they'll win. return unless e.preload + return if @levelOptions.hidesRealTimePlayback + return if @options.levelID is 'thornbush-farm' # Don't show it until they actually win for this first one. @onNewGoalStates e updateCastButton: -> @@ -105,14 +121,14 @@ module.exports = class CastButtonView extends CocoView , (castable) => Backbone.Mediator.publish 'tome:spell-has-changed-significantly-calculation', hasChangedSignificantly: castable @castButton.toggleClass('castable', castable).toggleClass('casting', @casting) - + # A/B testing cast button text for en-US - if $.i18n.lng() isnt 'en-US' or not @testGroup? or @testGroup is 0 + unless @testGroup? and @testGroup isnt 0 if @casting castText = $.i18n.t('play_level.tome_cast_button_running') else if castable or true castText = $.i18n.t('play_level.tome_cast_button_run') - unless @options.levelID in ['dungeons-of-kithgard', 'gems-in-the-deep', 'shadow-guard', 'forgetful-gemsmith', 'kounter-kithwise', 'true-names', 'the-raised-sword', 'favorable-odds', 'the-first-kithmaze', 'haunted-kithmaze'] # Hide for first few. + unless @levelOptions.hidesRunShortcut # Hide for first few. castText += ' ' + @castShortcut else castText = $.i18n.t('play_level.tome_cast_button_ran') @@ -141,24 +157,22 @@ module.exports = class CastButtonView extends CocoView @multiplayerSession = null initButtonTextABTest: -> - if $.i18n.lng() is 'en-US' - # A/B test buttons text - # Only testing 'en-US' for simplicity and it accounts for a significant % of users - # Test group 0 is existing behavior - # Intentionally leaving out cast shortcut for test groups for simplicity - @testGroup = Math.floor(Math.random() * 7) - console.info 'Cast button text test group', @testGroup - @testButtonsText = switch @testGroup - when 0 then run: 'Run/Running', submit: 'Submit' - when 1 then run: 'Run', submit: 'Submit' - when 2 then run: 'Test', submit: 'Submit' - when 3 then run: 'Run', submit: 'Continue' - when 4 then run: 'Test', submit: 'Continue' - when 5 then run: 'Run', submit: 'Finish' - when 6 then run: 'Test', submit: 'Finish' - application.tracker?.trackEvent 'Spell View', - Action: 'Loaded' - levelID: @levelID - castButtonText: @testButtonsText.run + ' ' + @testButtonsText.submit - - + return if me.isAdmin() + return unless $.i18n.lng() is 'en-US' + # A/B test buttons text + # Only testing 'en-US' for simplicity and it accounts for a significant % of users + # Test group 0 is existing behavior + # Intentionally leaving out cast shortcut for test groups for simplicity + @testGroup = me.getCastButtonTextGroup() + @testButtonsText = switch @testGroup + when 0 then run: 'Run/Running', submit: 'Submit' + when 1 then run: 'Run', submit: 'Submit' + when 2 then run: 'Test', submit: 'Submit' + when 3 then run: 'Run', submit: 'Continue' + when 4 then run: 'Test', submit: 'Continue' + when 5 then run: 'Run', submit: 'Finish' + when 6 then run: 'Test', submit: 'Finish' + application.tracker?.trackEvent 'Cast Button', + levelID: @levelID + castButtonText: @testButtonsText.run + ' ' + @testButtonsText.submit + castButtonTextGroup: @testGroup diff --git a/app/views/play/level/tome/Problem.coffee b/app/views/play/level/tome/Problem.coffee index 027cad84b..fa17c3db0 100644 --- a/app/views/play/level/tome/Problem.coffee +++ b/app/views/play/level/tome/Problem.coffee @@ -6,7 +6,8 @@ module.exports = class Problem constructor: (@aether, @aetherProblem, @ace, isCast=false, @levelID) -> @buildAnnotation() @buildMarkerRange() if isCast - Backbone.Mediator.publish("problem:problem-created", line:@annotation.row, text: @annotation.text) if application.isIPadApp + # TODO: get ACE screen line, too, for positioning, since any multiline "lines" will mess up positioning + Backbone.Mediator.publish("problem:problem-created", line: @annotation.row, text: @annotation.text) if application.isIPadApp destroy: -> @removeMarkerRange() @@ -30,7 +31,7 @@ module.exports = class Problem @markerRange = new Range start.row, start.col, end.row, end.col @markerRange.start = @ace.getSession().getDocument().createAnchor @markerRange.start @markerRange.end = @ace.getSession().getDocument().createAnchor @markerRange.end - @markerRange.id = @ace.getSession().addMarker @markerRange, clazz, 'text' + @markerRange.id = @ace.getSession().addMarker @markerRange, clazz, 'fullLine' removeMarkerRange: -> return unless @markerRange diff --git a/app/views/play/level/tome/ProblemAlertView.coffee b/app/views/play/level/tome/ProblemAlertView.coffee index e19163df9..c213cee06 100644 --- a/app/views/play/level/tome/ProblemAlertView.coffee +++ b/app/views/play/level/tome/ProblemAlertView.coffee @@ -9,6 +9,8 @@ module.exports = class ProblemAlertView extends CocoView subscriptions: 'tome:show-problem-alert': 'onShowProblemAlert' + 'tome:hide-problem-alert': 'onHideProblemAlert' + 'tome:jiggle-problem-alert': 'onJiggleProblemAlert' 'tome:manual-cast': 'onHideProblemAlert' 'real-time-multiplayer:manual-cast': 'onHideProblemAlert' @@ -18,7 +20,7 @@ module.exports = class ProblemAlertView extends CocoView constructor: (options) -> super options if options.problem? - @problem = options.problem + @problem = options.problem @onWindowResize() else @$el.hide() @@ -44,27 +46,40 @@ module.exports = class ProblemAlertView extends CocoView Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'error_appear', volume: 1.0 onShowProblemAlert: (data) -> - return if @problem? and data.problem.aetherProblem.message is @problem.aetherProblem.message and data.problem.aetherProblem.hint is @problem.aetherProblem.hint return unless $('#code-area').is(":visible") + if @problem? + if @$el.hasClass "alert-#{@problem.aetherProblem.level}" + @$el.removeClass "alert-#{@problem.aetherProblem.level}" + if @$el.hasClass "no-hint" + @$el.removeClass "no-hint" @problem = data.problem @lineOffsetPx = data.lineOffsetPx or 0 @$el.show() @onWindowResize() @render() + @onJiggleProblemAlert() + + onJiggleProblemAlert: -> + return unless @problem? + @$el.show() unless @$el.is(":visible") + @$el.addClass 'jiggling' + Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'error_appear', volume: 1.0 + pauseJiggle = => + @$el?.removeClass 'jiggling' + _.delay pauseJiggle, 2000 onHideProblemAlert: -> @onRemoveClicked() onRemoveClicked: -> @$el.hide() - @problem = null - onWindowResize: (e) => + onWindowResize: (e) => # TODO: This all seems a little hacky if @problem? @$el.css('left', $('#goals-view').outerWidth(true) + 'px') @$el.css('right', $('#code-area').outerWidth(true) + 'px') - # 45px from top roughly aligns top of alert with top of first code line + # 110px from top roughly aligns top of alert with top of first code line # TODO: calculate this in a more dynamic, less sketchy way - @$el.css('top', (45 + @lineOffsetPx) + 'px') + @$el.css('top', (110 + @lineOffsetPx) + 'px') diff --git a/app/views/play/level/tome/Spell.coffee b/app/views/play/level/tome/Spell.coffee index 98475a66d..dd494484a 100644 --- a/app/views/play/level/tome/Spell.coffee +++ b/app/views/play/level/tome/Spell.coffee @@ -52,13 +52,14 @@ module.exports = class Spell @tabView.render() @team = @permissions.readwrite[0] ? 'common' Backbone.Mediator.publish 'tome:spell-created', spell: @ - Backbone.Mediator.subscribe 'real-time-multiplayer:new-opponent-code', @onNewOpponentCode + Backbone.Mediator.subscribe 'real-time-multiplayer:new-opponent-code', @onNewOpponentCode, @ destroy: -> @view?.destroy() @tabView?.destroy() @thangs = null @worker = null + Backbone.Mediator.unsubscribe 'real-time-multiplayer:new-opponent-code', @onNewOpponentCode, @ setLanguage: (@language) -> #console.log 'setting language to', @language, 'so using original source', @languages[language] ? @languages.javascript @@ -192,7 +193,7 @@ module.exports = class Spell return true if @session.get('creator') isnt me.id and not (me.isAdmin() or 'employer' in me.get('permissions', true)) false - onNewOpponentCode: (e) => + onNewOpponentCode: (e) -> return unless @spellKey and @canWrite e.team if e.codeLanguage and e.code [thangSlug, methodSlug] = @spellKey.split '/' diff --git a/app/views/play/level/tome/SpellListEntryView.coffee b/app/views/play/level/tome/SpellListEntryView.coffee index d2d39edb1..befca0320 100644 --- a/app/views/play/level/tome/SpellListEntryView.coffee +++ b/app/views/play/level/tome/SpellListEntryView.coffee @@ -37,6 +37,7 @@ module.exports = class SpellListEntryView extends CocoView context createMethodSignature: -> + return @spell.name if @options.level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop'] parameters = (@spell.parameters or []).slice() if @spell.language in ['python', 'lua'] parameters.unshift 'self' diff --git a/app/views/play/level/tome/SpellListTabEntryView.coffee b/app/views/play/level/tome/SpellListTabEntryView.coffee index b27ed0792..a6b7c6f6a 100644 --- a/app/views/play/level/tome/SpellListTabEntryView.coffee +++ b/app/views/play/level/tome/SpellListTabEntryView.coffee @@ -3,7 +3,7 @@ ThangAvatarView = require 'views/play/level/ThangAvatarView' template = require 'templates/play/level/tome/spell_list_tab_entry' LevelComponent = require 'models/LevelComponent' DocFormatter = require './DocFormatter' -filters = require 'lib/image_filter' +ReloadLevelModal = require 'views/play/level/modal/ReloadLevelModal' module.exports = class SpellListTabEntryView extends SpellListEntryView template: template @@ -75,7 +75,7 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView break return unless found docFormatter = new DocFormatter doc: doc, thang: @thang, language: @options.codeLanguage, selectedMethod: true - @$el.find('code').popover( + @$el.find('.method-signature').popover( animation: true html: true placement: 'bottom' @@ -97,8 +97,9 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'spell-list-open', volume: 1 onCodeReload: (e) -> - return unless @controlsEnabled - Backbone.Mediator.publish 'tome:reload-code', spell: @spell + #return unless @controlsEnabled + #Backbone.Mediator.publish 'tome:reload-code', spell: @spell # Old: just reload the current code + @openModalView new ReloadLevelModal() # New: prompt them to restart the level onBeautifyClick: (e) -> return unless @controlsEnabled @@ -126,7 +127,7 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView onSpellChangedLanguage: (e) -> return unless e.spell is @spell @options.codeLanguage = e.language - @$el.find('code').popover 'destroy' + @$el.find('.method-signature').popover 'destroy' @render() @docsBuilt = false @buildDocs() if @thang @@ -138,16 +139,6 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView return if enabled is @controlsEnabled @controlsEnabled = enabled @$el.toggleClass 'read-only', not enabled - @toggleBackground() - - toggleBackground: => - # TODO: make the palette background an actual background and do the CSS trick - # used in spell_list_entry.sass for disabling - background = @$el.find('img.spell-tab-image-hidden')[0] - if background.naturalWidth is 0 # not loaded yet - return _.delay @toggleBackground, 100 - filters.revertImage background, '.spell-list-entry-view.spell-tab' if @controlsEnabled - filters.darkenImage background, '.spell-list-entry-view.spell-tab', 0.8 unless @controlsEnabled attachTransitionEventListener: => transitionListener = '' @@ -168,5 +159,5 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView destroy: -> @avatar?.destroy() - @$el.find('code').popover 'destroy' + @$el.find('.method-signature').popover 'destroy' super() diff --git a/app/views/play/level/tome/SpellListView.coffee b/app/views/play/level/tome/SpellListView.coffee index 9bf6ece39..a2d9c3a39 100644 --- a/app/views/play/level/tome/SpellListView.coffee +++ b/app/views/play/level/tome/SpellListView.coffee @@ -61,7 +61,7 @@ module.exports = class SpellListView extends CocoView theseThangs = _.keys(spell.thangs) changedThangs = not lastThangs or not _.isEqual theseThangs, lastThangs lastThangs = theseThangs - newEntries.push entry = new SpellListEntryView spell: spell, showTopDivider: changedThangs, supermodel: @supermodel, includeSpellList: @spells.length > 1 + newEntries.push entry = new SpellListEntryView spell: spell, showTopDivider: changedThangs, supermodel: @supermodel, includeSpellList: @spells.length > 1, level: @options.level @entries.push entry for entry in newEntries @$el.append entry.el diff --git a/app/views/play/level/tome/SpellPaletteView.coffee b/app/views/play/level/tome/SpellPaletteView.coffee index 8750c5f35..45620381d 100644 --- a/app/views/play/level/tome/SpellPaletteView.coffee +++ b/app/views/play/level/tome/SpellPaletteView.coffee @@ -5,7 +5,7 @@ filters = require 'lib/image_filter' SpellPaletteEntryView = require './SpellPaletteEntryView' LevelComponent = require 'models/LevelComponent' ThangType = require 'models/ThangType' -EditorConfigModal = require '../modal/EditorConfigModal' +LevelOptions = require 'lib/LevelOptions' N_ROWS = 4 @@ -20,9 +20,6 @@ module.exports = class SpellPaletteView extends CocoView 'surface:frame-changed': 'onFrameChanged' 'tome:change-language': 'onTomeChangedLanguage' - events: - 'click .code-language-logo': 'onEditEditorConfig' - constructor: (options) -> super options @thang = options.thang @@ -54,7 +51,7 @@ module.exports = class SpellPaletteView extends CocoView @entryGroupElements = {} for group, entries of @entryGroups @entryGroupElements[group] = itemGroup = $('
').appendTo @$el.find('.properties') - itemGroup.append $('').attr('src', entries[0].options.item.getPortraitURL()).css('top', Math.max(0, 19 * (entries.length - 2) / 2)) if entries[0].options.item?.getPortraitURL + itemGroup.append $('').attr('src', entries[0].options.item.getPortraitURL()).css('top', Math.max(0, 19 * (entries.length - 2) / 2) + 2) if entries[0].options.item?.getPortraitURL for entry in entries itemGroup.append entry.el entry.render() # Render after appending so that we can access parent container for popover @@ -67,7 +64,6 @@ module.exports = class SpellPaletteView extends CocoView updateCodeLanguage: (language) -> @options.language = language - @$el.find('.code-language-logo').removeClass().addClass 'code-language-logo ' + language updateMaxHeight: -> return unless @isHero @@ -203,7 +199,7 @@ module.exports = class SpellPaletteView extends CocoView # Assign any unassigned properties to the hero itself. for owner, storage of propStorage for prop in _.reject(@thang[storage] ? [], (prop) -> itemsByProp[prop] or prop[0] is '_') # no private properties - if prop is 'say' and @options.level.get('slug') in ['dungeons-of-kithgard', 'gems-in-the-deep', 'forgetful-gemsmith', 'shadow-guard', 'kounter-kithwise', 'crawlways-of-kithgard', 'true-names', 'favorable-odds', 'the-raised-sword', 'the-first-kithmaze', 'haunted-kithmaze', 'descending-further', 'the-second-kithmaze', 'dread-door', 'known-enemy', 'master-of-names', 'lowly-kithmen', 'closing-the-distance', 'tactical-strike', 'the-final-kithmaze', 'the-gauntlet', 'kithgard-gates'] + if prop is 'say' and LevelOptions[@options.level.get('slug')]?.hidesSay # Hide for Dungeon Campaign continue propsByItem['Hero'] ?= [] propsByItem['Hero'].push owner: owner, prop: prop, item: itemThangTypes[@thang.spriteName] @@ -245,6 +241,7 @@ module.exports = class SpellPaletteView extends CocoView return if enabled is @controlsEnabled @controlsEnabled = enabled @$el.find('*').attr('disabled', not enabled) + @$el.toggleClass 'controls-disabled', not enabled @toggleBackground() toggleBackground: => @@ -266,9 +263,6 @@ module.exports = class SpellPaletteView extends CocoView @createPalette() @render() - onEditEditorConfig: (e) -> - @openModalView new EditorConfigModal session: @options.session - destroy: -> entry.destroy() for entry in @entries @toggleBackground = null diff --git a/app/views/play/level/tome/SpellView.coffee b/app/views/play/level/tome/SpellView.coffee index bd9ce0eb4..c2950277c 100644 --- a/app/views/play/level/tome/SpellView.coffee +++ b/app/views/play/level/tome/SpellView.coffee @@ -9,6 +9,7 @@ SpellDebugView = require './SpellDebugView' SpellToolbarView = require './SpellToolbarView' LevelComponent = require 'models/LevelComponent' UserCodeProblem = require 'models/UserCodeProblem' +LevelOptions = require 'lib/LevelOptions' module.exports = class SpellView extends CocoView id: 'spell-view' @@ -104,7 +105,7 @@ module.exports = class SpellView extends CocoView @ace.setKeyboardHandler @keyBindings[aceConfig.keyBindings ? 'default'] @toggleControls null, @writable @aceSession.selection.on 'changeCursor', @onCursorActivity - $(@ace.container).find('.ace_gutter').on 'click', '.ace_error, .ace_warning, .ace_info', @onAnnotationClick + $(@ace.container).find('.ace_gutter').on 'click mouseenter', '.ace_error, .ace_warning, .ace_info', @onAnnotationClick @initAutocomplete aceConfig.liveCompletion ? true createACEShortcuts: -> @@ -186,6 +187,20 @@ module.exports = class SpellView extends CocoView name: 'open-fullscreen-editor' bindKey: {win: 'Ctrl-Shift-M', mac: 'Command-Shift-M|Ctrl-Shift-M'} exec: -> Backbone.Mediator.publish 'tome:toggle-maximize', {} + addCommand + # TODO: Restrict to beginner campaign levels + name: 'enter-skip-delimiters' + bindKey: 'Enter|Return' + exec: => + if @aceSession.selection.isEmpty() + cursor = @ace.getCursorPosition() + line = @aceDoc.getLine(cursor.row) + if delimMatch = line.substring(cursor.column).match /^(["|']?\)+;?)/ # Yay for editors misreading regexes: " + newRange = @ace.getSelectionRange() + newRange.setStart newRange.start.row, newRange.start.column + delimMatch[1].length + newRange.setEnd newRange.end.row, newRange.end.column + delimMatch[1].length + @aceSession.selection.setSelectionRange newRange + @ace.execCommand 'insertstring', '\n' fillACE: -> @ace.setValue @spell.source @@ -298,7 +313,7 @@ module.exports = class SpellView extends CocoView @createToolbarView() createDebugView: -> - return if @options.level.get('type', true) is 'hero' # We'll turn this on later, maybe, but not yet. + return if @options.level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop'] # We'll turn this on later, maybe, but not yet. @debugView = new SpellDebugView ace: @ace, thang: @thang, spell:@spell @$el.append @debugView.render().$el.hide() @@ -360,10 +375,13 @@ module.exports = class SpellView extends CocoView spellPaletteHeight = $('#spell-palette-view').outerHeight() maxHeight = tomeHeight - spellListTabEntryHeight - spellToolbarHeight - spellPaletteHeight linesAtMaxHeight = Math.floor(maxHeight / lineHeight) - lines = Math.max 8, Math.min(screenLineCount + 4, linesAtMaxHeight) - # 2 lines buffer is nice, but 4 leaves room to put problem alerts. + lines = Math.max 8, Math.min(screenLineCount + 2, linesAtMaxHeight) + # 2 lines buffer is nice @ace.setOptions minLines: lines, maxLines: lines - $('#spell-palette-view').css('top', 38 + 45 + lineHeight * lines) # Move spell palette up, slightly underlapping us. + $('#spell-palette-view').css('top', 175 + lineHeight * lines) # Move spell palette up, slightly overlapping us. + + hideProblemAlert: -> + Backbone.Mediator.publish 'tome:hide-problem-alert', {} onManualCast: (e) -> cast = @$el.parent().length @@ -424,6 +442,7 @@ module.exports = class SpellView extends CocoView _.throttle @notifyEditingBegan, 250 _.throttle @notifySpellChanged, 300 _.throttle @updateLines, 500 + _.throttle @hideProblemAlert, 500 ] onSignificantChange.push _.debounce @checkRequiredCode, 1500 if requiredCodePerLevel[@options.level.get('slug')] @onCodeChangeMetaHandler = => @@ -518,10 +537,11 @@ module.exports = class SpellView extends CocoView @problems.push problem = new Problem aether, aetherProblem, @ace, isCast, @spell.levelID if isCast and problemIndex is 0 if problem.aetherProblem.range? - # Line height is 20px - # TODO: Can we get line height dynamically from ace? - lineOffsetPx = problem.aetherProblem.range[0].row * 20 - @ace.session.getScrollTop() - Backbone.Mediator.publish 'tome:show-problem-alert', problem: problem, lineOffsetPx: lineOffsetPx + lineOffsetPx = 0 + for i in [0...problem.aetherProblem.range[0].row] + lineOffsetPx += @aceSession.getRowLength(i) * @ace.renderer.lineHeight + lineOffsetPx -= @ace.session.getScrollTop() + Backbone.Mediator.publish 'tome:show-problem-alert', problem: problem, lineOffsetPx: Math.max lineOffsetPx, 0 @saveUserCodeProblem(aether, aetherProblem) if isCast annotations.push problem.annotation if problem.annotation @aceSession.setAnnotations annotations @@ -723,7 +743,7 @@ module.exports = class SpellView extends CocoView @aceSession.removeGutterDecoration row, 'executed' @decoratedGutter[row] = '' lastExecuted = _.last executed - showToolbarView = executed.length and @spellThang.castAether.metrics.statementsExecuted > 3 and not (@options.level.get('slug') in ['dungeons-of-kithgard', 'gems-in-the-deep', 'forgetful-gemsmith', 'shadow-guard', 'kounter-kithwise', 'crawlways-of-kithgard', 'true-names', 'favorable-odds', 'the-raised-sword', 'the-first-kithmaze', 'haunted-kithmaze', 'descending-further', 'the-second-kithmaze', 'dread-door', 'known-enemy', 'master-of-names', 'lowly-kithmen', 'closing-the-distance', 'tactical-strike', 'the-final-kithmaze', 'the-gauntlet', 'kithgard-gates']) + showToolbarView = executed.length and @spellThang.castAether.metrics.statementsExecuted > 3 and not LevelOptions[@options.level.get('slug')]?.hidesCodeToolbar # Hide for a while if showToolbarView statementIndex = Math.max 0, lastExecuted.length - 1 @@ -773,13 +793,7 @@ module.exports = class SpellView extends CocoView onAnnotationClick: -> # @ is the gutter element - msg = "Edit line #{$(@).index() + 1} to fix it." - alertBox = $("
#{msg}
") - offset = $(@).offset() - offset.left -= 162 # default width of the Bootstrap alert here - alertBox.css(offset).css('z-index', 500).css('position', 'absolute') - $('body').append(alertBox.alert()) - _.delay (-> alertBox.alert('close')), 2500 + Backbone.Mediator.publish 'tome:jiggle-problem-alert', {} onDisableControls: (e) -> @toggleControls e, false onEnableControls: (e) -> @toggleControls e, @writable diff --git a/app/views/play/level/tome/ThangListEntryView.coffee b/app/views/play/level/tome/ThangListEntryView.coffee deleted file mode 100644 index 75d03ac22..000000000 --- a/app/views/play/level/tome/ThangListEntryView.coffee +++ /dev/null @@ -1,178 +0,0 @@ -# TODO: be useful to add error indicator states to the spellsPopoverTemplate -# TODO: reordering based on errors isn't working yet - -CocoView = require 'views/kinds/CocoView' -ThangAvatarView = require 'views/play/level/ThangAvatarView' -template = require 'templates/play/level/tome/thang_list_entry' -spellsPopoverTemplate = require 'templates/play/level/tome/thang_list_entry_spells' -{me} = require 'lib/auth' - -module.exports = class ThangListEntryView extends CocoView - tagName: 'div' #'li' - className: 'thang-list-entry-view' - template: template - controlsEnabled: true - reasonsToBeDisabled: {} - - subscriptions: - 'tome:problems-updated': 'onProblemsUpdated' - 'level:disable-controls': 'onDisableControls' - 'level:enable-controls': 'onEnableControls' - 'surface:frame-changed': 'onFrameChanged' - 'level:set-letterbox': 'onSetLetterbox' - 'tome:thang-list-entry-popover-shown': 'onThangListEntryPopoverShown' - 'surface:coordinates-shown': 'onSurfaceCoordinatesShown' - - events: - 'click': 'onClick' - 'mouseenter': 'onMouseEnter' - 'mouseleave': 'onMouseLeave' - - constructor: (options) -> - super options - @thang = options.thang - @spells = options.spells - @permission = options.permission - @reasonsToBeDisabled = {} - @sortSpells() - - getRenderData: (context={}) -> - context = super context - context.thang = @thang - context.spell = @spells - context - - afterRender: -> - super() - @avatar?.destroy() - @avatar = new ThangAvatarView thang: @thang, includeName: true, supermodel: @supermodel - @$el.append @avatar.el # Before rendering, so render can use parent for popover - @avatar.render() - @avatar.setSharedThangs @spells.length # A bit weird to call it sharedThangs; could refactor if we like this - @$el.toggle Boolean(@thang.exists) - @$el.popover( - animation: false - html: true - placement: 'bottom' - trigger: 'manual' - content: @getSpellListHTML() - container: @$el.parent().parent().parent() - ) - - sortSpells: -> - return if @sorted - # Keep only spells for which we have permissions - spells = _.filter @spells, (s) => @options.permission and me.team in s.permissions[@options.permission] - @spells = _.sortBy spells, @sortScoreForSpell - @sorted = true - - sortScoreForSpell: (s) => - # Sort by errored-out spells first, then spells shared with fewest other Thangs - # Lower comes first - score = 0 - # My errors are highest priority - score -= 9001900190019001 * (s.thangs[@thang.id].aether?.getAllProblems().length or 0) - # Other shared Thangs errors are also high priority - score -= _.reduce s.thangs, (spellThang, num) -> 900190019001 * (spellThang.aether?.getAllProblems().length or 0) - # Read-only spells at the bottom - score += 90019001 unless s.canWrite() - # The more Thangs sharing a spell, the lower - score += 9001 * _.size(s.thangs) - score - - select: -> - @sortSpells() - Backbone.Mediator.publish 'level:select-sprite', thangID: @thang.id, spellName: @spells[0]?.name - - onClick: (e) -> - return unless @controlsEnabled - @select() - - onMouseEnter: (e) -> - return unless @controlsEnabled and @spells.length - @clearTimeouts() - @showSpellsTimeout = _.delay @showSpells, 100 - - onMouseLeave: (e) -> - return unless @controlsEnabled and @spells.length - @clearTimeouts() - @hideSpellsTimeout = _.delay @hideSpells, 100 - - clearTimeouts: -> - clearTimeout @showSpellsTimeout if @showSpellsTimeout - clearTimeout @hideSpellsTimeout if @hideSpellsTimeout - @showSpellsTimeout = @hideSpellsTimeout = null - - onThangListEntryPopoverShown: (e) -> - # I couldn't figure out how to get the mouseenter / mouseleave to always work, so this is a fallback - # to hide our popover if another Thang's popover gets shown. - return if e.entry is @ - @hideSpells() - - onSurfaceCoordinatesShown: (e) -> - # Definitely aren't hovering over this. - @hideSpells() - - showSpells: => - @clearTimeouts() - @sortSpells() - @$el.data('bs.popover').options.content = @getSpellListHTML() - @$el.popover('setContent').popover('show') - @$el.parent().parent().parent().i18n() - @popover = @$el.parent().parent().parent().find('.popover') - @popover.off 'mouseenter mouseleave' - @popover.mouseenter (e) => @showSpells() if @controlsEnabled - @popover.mouseleave (e) => @hideSpells() - thangID = @thang.id - @popover.find('code').click (e) -> - Backbone.Mediator.publish 'level:select-sprite', thangID: thangID, spellName: $(@).data 'spell-name' - Backbone.Mediator.publish 'tome:thang-list-entry-popover-shown', entry: @ - - hideSpells: => - @clearTimeouts() - @$el.popover('hide') - - getSpellListHTML: -> - spellsPopoverTemplate {spells: @spells} - - onProblemsUpdated: (e) -> - return unless e.spell in @spells - @sorted = false - - onSetLetterbox: (e) -> - if e.on then @reasonsToBeDisabled.letterbox = true else delete @reasonsToBeDisabled.letterbox - @updateControls() - - onDisableControls: (e) -> - return if e.controls and not ('surface' in e.controls) # disable selection? - @reasonsToBeDisabled.controls = true - @updateControls() - - onEnableControls: (e) -> - delete @reasonsToBeDisabled.controls - @updateControls() - - updateControls: -> - enabled = _.keys(@reasonsToBeDisabled).length is 0 - return if enabled is @controlsEnabled - @controlsEnabled = enabled - @$el.toggleClass('disabled', not enabled) - - onFrameChanged: (e) -> - # Optimize - return unless currentThang = e.world.thangMap[@thang.id] - exists = Boolean currentThang.exists - if @thangDidExist isnt exists - @$el.toggle exists - @thangDidExist = exists - dead = exists and currentThang.health <= 0 - if @thangWasDead isnt dead - @$el.toggleClass 'dead', dead - @thangWasDead = dead - - destroy: -> - @avatar?.destroy() - @popover?.remove() - @popover?.off 'mouseenter mouseleave' - @popover?.find('code').off 'click' - super() diff --git a/app/views/play/level/tome/ThangListView.coffee b/app/views/play/level/tome/ThangListView.coffee deleted file mode 100644 index f8b0cc9d0..000000000 --- a/app/views/play/level/tome/ThangListView.coffee +++ /dev/null @@ -1,95 +0,0 @@ -# The ThangListView lives in the code area behind the SpellView, so that when you don't have a spell, you can select any Thang. -# It just ha a bunch of ThangListEntryViews (which are mostly ThangAvatarViews) in a few sections. - -CocoView = require 'views/kinds/CocoView' -template = require 'templates/play/level/tome/thang_list' -{me} = require 'lib/auth' -ThangListEntryView = require './ThangListEntryView' - -module.exports = class ThangListView extends CocoView - className: 'thang-list-view' - id: 'thang-list-view' - template: template - - constructor: (options) -> - super options - @spells = options.spells - @thangs = _.filter options.thangs, 'isSelectable' - @sortThangs() - - sortThangs: -> - @readwriteThangs = _.sortBy _.filter(@thangs, (thang) => - return true for spellKey, spell of @spells when thang.id of spell.thangs and spell.canWrite() - false - ), @sortScoreForThang - @readThangs = _.sortBy _.filter(@thangs, (thang) => - return true for spellKey, spell of @spells when thang.id of spell.thangs and spell.canRead() and not spell.canWrite() - false - ), @sortScoreForThang - @muggleThangs = _.sortBy _.without(@thangs, @readwriteThangs..., @readThangs...), @sortScoreForThang - if @muggleThangs.length > 15 - @muggleThangs = [] # Don't render a zillion of these. Slow, too long, maybe not useful. - - sortScoreForThang: (t) => - # Sort by my team, then most spells and fewest shared Thangs per spell, - # then by thang.spriteName alpha, then by thang.id alpha. - # Lower comes first - score = 0 - # Thangs on my team are highest priority - score -= 9001900190019001 if t.team is me.team - # The more spells per Thang, the lower - score -= 900190019001 for spellKey, spell of @spells when t.id of spell.thangs and spell.canRead() - # The more Thangs per spell, the higher - score += 90019001 for t2 of spell.thangs for spellKey, spell of @spells when t.id of spell.thangs - alpha = (s) -> _.reduce [0 ... s.length], ((acc, i) -> acc + s.charCodeAt(i) / Math.pow(100, i)), 0 - # Alpha by spriteName - score += 9001 * alpha t.spriteName - # Alpha by id - score += alpha t.id - score - - afterRender: -> - super() - @addThangListEntries() - - addThangListEntries: -> - @entries = [] - for [thangs, section, permission] in [ - [@readwriteThangs, '#readwrite-thangs', 'readwrite'] # Your Minions - [@readThangs, '#read-thangs', 'read'] # Read-Only - [@muggleThangs, '#muggle-thangs', null] # Non-Castable - ] - section = @$el.find(section).toggle thangs.length > 0 - for thang in thangs - spells = _.filter @spells, (s) -> thang.id of s.thangs - entry = new ThangListEntryView thang: thang, spells: spells, permission: permission, supermodel: @supermodel - section.find('.thang-list').append entry.el # Render after appending so that we can access parent container for popover - entry.render() - @entries.push entry - - topSpellForThang: (thang) -> - for entry in @entries when entry.thang.id is thang.id - return entry.spells[0] - null - - selectPrimarySprite: -> - @entries[0]?.select() - - adjustThangs: (spells, thangs) -> - # TODO: it would be nice to not have to do this any more, like if we migrate to the hero levels. - # Recreating all the ThangListEntryViews and their ThangAvatarViews is pretty slow. - # So they aren't even kept up-to-date during world streaming. - # Updating the existing subviews? Would be kind of complicated to get all the new thangs and spells propagated. - # I would do it, if I didn't think we were perhaps soon to not do the ThangList any more. - # Will temporary reduce the number of muggle thangs we're willing to draw. - @spells = @options.spells = spells - for entry in @entries - entry.$el.remove() - entry.destroy() - @thangs = @options.thangs = thangs - @sortThangs() - @addThangListEntries() - - destroy: -> - entry.destroy() for entry in @entries - super() diff --git a/app/views/play/level/tome/TomeView.coffee b/app/views/play/level/tome/TomeView.coffee index d8335993b..fff2529b4 100644 --- a/app/views/play/level/tome/TomeView.coffee +++ b/app/views/play/level/tome/TomeView.coffee @@ -32,7 +32,6 @@ template = require 'templates/play/level/tome/tome' {me} = require 'lib/auth' Spell = require './Spell' SpellListView = require './SpellListView' -ThangListView = require './ThangListView' SpellPaletteView = require './SpellPaletteView' CastButtonView = require './CastButtonView' @@ -62,9 +61,8 @@ module.exports = class TomeView extends CocoView #programmableThangs = _.filter @options.thangs, (t) -> t.isProgrammable and t.spriteName isnt 'Hero Placeholder' programmableThangs = _.filter @options.thangs, 'isProgrammable' @createSpells programmableThangs, programmableThangs[0]?.world # Do before spellList, thangList, and castButton - @spellList = @insertSubView new SpellListView spells: @spells, supermodel: @supermodel - @thangList = @insertSubView new ThangListView spells: @spells, thangs: @options.thangs, supermodel: @supermodel unless @options.level.get('type', true) is 'hero' - @castButton = @insertSubView new CastButtonView spells: @spells, levelID: @options.levelID + @spellList = @insertSubView new SpellListView spells: @spells, supermodel: @supermodel, level: @options.level + @castButton = @insertSubView new CastButtonView spells: @spells, levelID: @options.levelID, session: @options.session @teamSpellMap = @generateTeamSpellMap(@spells) unless programmableThangs.length @cast() @@ -77,7 +75,6 @@ module.exports = class TomeView extends CocoView thangs = _.filter e.world.thangs, 'inThangList' programmableThangs = _.filter thangs, 'isProgrammable' @createSpells programmableThangs, e.world - @thangList?.adjustThangs @spells, thangs @spellList.adjustSpells @spells onCommentMyCode: (e) -> @@ -90,6 +87,7 @@ module.exports = class TomeView extends CocoView createWorker: -> return null unless Worker? + return null if window.application.isIPadApp # Save memory! return new Worker('/javascripts/workers/aether_worker.js') generateTeamSpellMap: (spellObject) -> @@ -187,7 +185,6 @@ module.exports = class TomeView extends CocoView @spellPaletteView = null @$el.find('#spell-palette-view').hide() @castButton?.$el.hide() - @thangList?.$el.show() onSpriteSelected: (e) -> return if @spellView and @options.level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop'] # Never deselect the hero in the Tome. @@ -207,7 +204,6 @@ module.exports = class TomeView extends CocoView @$el.find('#' + @spellView.id).after(@spellView.el).remove() @$el.find('#' + @spellTabView.id).after(@spellTabView.el).remove() @castButton.attachTo @spellView - @thangList?.$el.hide() Backbone.Mediator.publish 'tome:spell-shown', thang: thang, spell: spell @updateSpellPalette thang, spell @spellList.setThangAndSpell thang, spell @@ -217,7 +213,7 @@ module.exports = class TomeView extends CocoView updateSpellPalette: (thang, spell) -> return unless thang and @spellPaletteView?.thang isnt thang and thang.programmableProperties or thang.apiProperties @spellPaletteView = @insertSubView new SpellPaletteView thang: thang, supermodel: @supermodel, programmable: spell?.canRead(), language: spell?.language ? @options.session.get('codeLanguage'), session: @options.session, level: @options.level - @spellPaletteView.toggleControls {}, spell.view.controlsEnabled if spell # TODO: know when palette should have been disabled but didn't exist + @spellPaletteView.toggleControls {}, spell.view.controlsEnabled if spell?.view # TODO: know when palette should have been disabled but didn't exist spellFor: (thang, spellName) -> return null unless thang?.isProgrammable @@ -225,9 +221,6 @@ module.exports = class TomeView extends CocoView selectedThangSpells = (@spells[spellKey] for spellKey in @thangSpells[thang.id]) if spellName spell = _.find selectedThangSpells, {name: spellName} - else if @thangList - spell = @thangList.topSpellForThang thang - #spell = selectedThangSpells[0] # TODO: remember last selected spell for this thang else spell = _.find selectedThangSpells, (spell) -> true # Just grab one spell @@ -238,13 +231,14 @@ module.exports = class TomeView extends CocoView updateLanguageForAllSpells: (e) -> spell.updateLanguageAether e.language for spellKey, spell of @spells when spell.canWrite() - @cast() + if e.reload + @reloadAllCode() + else + @cast() onSelectPrimarySprite: (e) -> - if @thangList - @thangList.selectPrimarySprite() - else - Backbone.Mediator.publish 'level:select-sprite', thangID: 'Hero Placeholder' + # TODO: this may not be correct + Backbone.Mediator.publish 'level:select-sprite', thangID: 'Hero Placeholder' destroy: -> spell.destroy() for spellKey, spell of @spells diff --git a/app/views/play/modal/BuyGemsModal.coffee b/app/views/play/modal/BuyGemsModal.coffee new file mode 100644 index 000000000..71b0ff9d7 --- /dev/null +++ b/app/views/play/modal/BuyGemsModal.coffee @@ -0,0 +1,52 @@ +ModalView = require 'views/kinds/ModalView' +template = require 'templates/play/modal/buy-gems-modal' + +module.exports = class BuyGemsModal extends ModalView + id: 'buy-gems-modal' + template: template + plain: true + + products: [ + { price: '$4.99', gems: 5000, id: 'gems_5' } + { price: '$9.99', gems: 11000, id: 'gems_10' } + { price: '$19.99', gems: 25000, id: 'gems_20' } + ] + + subscriptions: + 'ipad:products': 'onIPadProducts' + 'ipad:iap-complete': 'onIAPComplete' + + events: + 'click button.product': 'onClickProductButton' + + constructor: (options) -> + super(options) + if application.isIPadApp + @products = [] + Backbone.Mediator.publish 'buy-gems-modal:update-products' + + getRenderData: -> + c = super() + c.products = @products + return c + + onIPadProducts: (e) -> + @products = e.products + @render() + + onClickProductButton: (e) -> + productID = $(e.target).closest('button.product').val() + console.log 'purchasing', _.find @products, { id: productID } + + if application.isIPadApp + Backbone.Mediator.publish 'buy-gems-modal:purchase-initiated', { productID: productID } + + else + @$el.find('.modal-body').append($('
Not implemented
')) + + onIAPComplete: (e) -> + purchased = me.get('purchased') ? {} + purchased.gems ?= 0 + purchased.gems += e.gems + me.set('purchased', purchased) + @hide() \ No newline at end of file diff --git a/app/views/play/modal/ItemDetailsView.coffee b/app/views/play/modal/ItemDetailsView.coffee new file mode 100644 index 000000000..422a86185 --- /dev/null +++ b/app/views/play/modal/ItemDetailsView.coffee @@ -0,0 +1,76 @@ +CocoView = require 'views/kinds/CocoView' +template = require 'templates/play/modal/item-details-view' +CocoCollection = require 'collections/CocoCollection' +LevelComponent = require 'models/LevelComponent' + +utils = require 'lib/utils' + +module.exports = class ItemDetailsView extends CocoView + id: "item-details-view" + template: template + + constructor: -> + super(arguments...) + @propDocs = {} + + setItem: (@item) -> + if @item + @item.name = utils.i18n @item.attributes, 'name' + @item.affordable = me.gems() >= @item.get('gems') + @item.owned = me.ownsItem @item.get('original') + @item.comingSoon = not @item.getFrontFacingStats().props.length and not _.size @item.getFrontFacingStats().stats # Temp: while there are placeholder items + + stats = @item.getFrontFacingStats() + props = (p for p in stats.props when not @propDocs[p]) + if props.length > 0 + + docs = new CocoCollection([], { + url: '/db/level.component?view=prop-doc-lookup' + model: LevelComponent + project: [ + 'propertyDocumentation.name' + 'propertyDocumentation.description' + 'propertyDocumentation.i18n' + ] + }) + + docs.fetch({ data: { + componentOriginals: [c.original for c in @item.get('components')].join(',') + propertyNames: props.join(',') + }}) + @listenToOnce docs, 'sync', @onDocsLoaded + + @render() + @$el.find('.nano:visible').nanoScroller() + + onDocsLoaded: (levelComponents) -> + for component in levelComponents.models + for propDoc in component.get('propertyDocumentation') + @propDocs[propDoc.name] = propDoc + @render() + + getRenderData: -> + c = super() + c.item = @item + if @item + stats = @item.getFrontFacingStats() + c.stats = _.values(stats.stats) + _.last(c.stats).isLast = true if c.stats.length + c.props = [] + progLang = (me.get('aceConfig') ? {}).language or 'python' + for prop in stats.props + description = utils.i18n @propDocs[prop] ? {}, 'description' + + if _.isObject description + description = description[progLang] or _.values(description)[0] + if _.isString description + description = description.replace(/#{spriteName}/g, 'hero') + if fact = stats.stats.shieldDefenseFactor + description = description.replace(/#{shieldDefensePercent}%/g, fact.display) + description = $(marked(description)).html() + + c.props.push { + name: prop + description: description or '...' + } + c \ No newline at end of file diff --git a/app/views/play/modal/PlayHeroesModal.coffee b/app/views/play/modal/PlayHeroesModal.coffee index ff5f841ff..88a78ecbd 100644 --- a/app/views/play/modal/PlayHeroesModal.coffee +++ b/app/views/play/modal/PlayHeroesModal.coffee @@ -29,10 +29,12 @@ module.exports = class PlayHeroesModal extends ModalView @heroes = new CocoCollection([], {model: ThangType}) @heroes.url = '/db/thang.type?view=heroes' @heroes.setProjection ['original','name','slug','soundTriggers','featureImage','gems','heroClass','description','components','extendedName'] + @heroes.comparator = 'gems' @listenToOnce @heroes, 'sync', @onHeroesLoaded @supermodel.loadCollection(@heroes, 'heroes') @stages = {} @session = options.session + @initCodeLanguageList options.hadEverChosenHero onHeroesLoaded: -> for hero in @heroes.models @@ -48,14 +50,7 @@ module.exports = class PlayHeroesModal extends ModalView context = super(context) context.heroes = @heroes.models context.level = @options.level - context.codeLanguages = [ - {id: 'python', name: 'Python (Default)'} - {id: 'javascript', name: 'JavaScript'} - {id: 'coffeescript', name: 'CoffeeScript'} - {id: 'clojure', name: 'Clojure (Experimental)'} - {id: 'lua', name: 'Lua (Experimental)'} - {id: 'io', name: 'Io (Experimental)'} - ] + context.codeLanguages = @codeLanguageList context.codeLanguage = @codeLanguage = @options?.session?.get('codeLanguage') ? me.get('aceConfig')?.language ? 'python' context.confirmButtonI18N = @confirmButtonI18N context @@ -78,6 +73,25 @@ module.exports = class PlayHeroesModal extends ModalView @buildCodeLanguages() Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-open', volume: 1 + initCodeLanguageList: (hadEverChosenHero) -> + @codeLanguageList = [ + {id: 'python', name: 'Python (Default)'} + {id: 'javascript', name: 'JavaScript'} + {id: 'coffeescript', name: 'CoffeeScript'} + ] + + # A/B test showing experimental languages on first hero select + # Group -1 is not participating + # Group 0 is original behavior + # Group 1 isn't shown experimental languages in hero modal when launching beginner campaign level + testGroup = me.getExperimentalLangGroup() + if hadEverChosenHero? or testGroup isnt 1 + @codeLanguageList.push id: 'clojure', name: 'Clojure (Experimental)' + @codeLanguageList.push id: 'lua', name: 'Lua (Experimental)' + @codeLanguageList.push id: 'io', name: 'Io (Experimental)' + unless hadEverChosenHero? or testGroup is -1 + window.tracker?.trackEvent 'Heroes Modal', experimentalLangGroup: testGroup + onHeroChanged: (e) -> direction = e.direction # 'left' or 'right' heroItem = $(e.relatedTarget) @@ -175,6 +189,7 @@ module.exports = class PlayHeroesModal extends ModalView if @session.get('codeLanguage') isnt @codeLanguage @session.set('codeLanguage', @codeLanguage) changed = true + Backbone.Mediator.publish 'tome:change-language', language: @codeLanguage, reload: true @session.patch() if changed diff --git a/app/views/play/modal/PlayItemsModal.coffee b/app/views/play/modal/PlayItemsModal.coffee index ccce43cca..88805a346 100644 --- a/app/views/play/modal/PlayItemsModal.coffee +++ b/app/views/play/modal/PlayItemsModal.coffee @@ -1,8 +1,6 @@ ModalView = require 'views/kinds/ModalView' -CocoView = require 'views/kinds/CocoView' - template = require 'templates/play/modal/play-items-modal' -itemDetailsTemplate = require 'templates/play/modal/item-details-view' +ItemDetailsView = require './ItemDetailsView' CocoCollection = require 'collections/CocoCollection' ThangType = require 'models/ThangType' @@ -64,6 +62,7 @@ module.exports = class PlayItemsModal extends ModalView 'original' 'rasterIcon' 'gems' + 'tier' 'i18n' 'heroClass' ] @@ -79,7 +78,8 @@ module.exports = class PlayItemsModal extends ModalView gemsOwned = me.gems() needMore = itemFetcher.models.length is PAGE_SIZE for model in itemFetcher.models - continue unless cost = model.get('gems') + model.owned = me.ownsItem model.get('original') + continue unless (cost = model.get('gems')) or model.owned category = slotToCategory[model.getAllowedSlots()[0]] or 'misc' @itemCategoryCollections[category] ?= new Backbone.Collection() collection = @itemCategoryCollections[category] @@ -87,10 +87,10 @@ module.exports = class PlayItemsModal extends ModalView collection.add(model) model.name = utils.i18n model.attributes, 'name' model.affordable = cost <= gemsOwned - model.owned = me.ownsItem model.get('original') - model.silhouetted = model.isSilhouettedItem() + model.silhouetted = not model.owned and model.isSilhouettedItem() + model.level = model.levelRequiredForItem() if model.get('tier')? model.equippable = 'Warrior' in model.getAllowedHeroClasses() # Temp: while there are no wizards/rangers - model.comingSoon = not model.getFrontFacingStats().props.length and not _.size model.getFrontFacingStats().stats # Temp: while there are placeholder items + model.comingSoon = not model.getFrontFacingStats().props.length and not _.size model.getFrontFacingStats().stats and not model.owned # Temp: while there are placeholder items @idToItem[model.id] = model if needMore @@ -129,7 +129,7 @@ module.exports = class PlayItemsModal extends ModalView item = null else item = @idToItem[itemEl.data('item-id')] - if item.silhouetted + if item.silhouetted and not item.owned item = null else itemEl.addClass('selected') unless wasSelected @@ -139,7 +139,7 @@ module.exports = class PlayItemsModal extends ModalView $($(e.target).attr('href')).find('.nano').nanoScroller({alwaysVisible: true}) onUnlockButtonClicked: (e) -> - button = $(e.target) + button = $(e.target).closest('button') if button.hasClass('confirm') item = @idToItem[$(e.target).data('item-id')] purchase = Purchase.makeFor(item) @@ -160,67 +160,3 @@ module.exports = class PlayItemsModal extends ModalView button.addClass('confirm').text($.i18n.t('play.confirm')) @$el.one 'click', (e) -> button.removeClass('confirm').text($.i18n.t('play.unlock')) if e.target isnt button[0] - -class ItemDetailsView extends CocoView - id: "item-details-view" - template: itemDetailsTemplate - - constructor: -> - super(arguments...) - @propDocs = {} - - setItem: (@item) -> - @render() - - if @item - stats = @item.getFrontFacingStats() - props = (p for p in stats.props when not @propDocs[p]) - return if props.length is 0 - - docs = new CocoCollection([], { - url: '/db/level.component?view=prop-doc-lookup' - model: LevelComponent - project: [ - 'propertyDocumentation.name' - 'propertyDocumentation.description' - 'propertyDocumentation.i18n' - ] - }) - - docs.fetch({ data: { - componentOriginals: [c.original for c in @item.get('components')].join(',') - propertyNames: props.join(',') - }}) - @listenToOnce docs, 'sync', @onDocsLoaded - - onDocsLoaded: (levelComponents) -> - for component in levelComponents.models - for propDoc in component.get('propertyDocumentation') - @propDocs[propDoc.name] = propDoc - @render() - - getRenderData: -> - c = super() - c.item = @item - if @item - stats = @item.getFrontFacingStats() - c.stats = _.values(stats.stats) - _.last(c.stats).isLast = true if c.stats.length - c.props = [] - progLang = (me.get('aceConfig') ? {}).language or 'python' - for prop in stats.props - description = utils.i18n @propDocs[prop] ? {}, 'description' - - if _.isObject description - description = description[progLang] or _.values(description)[0] - if _.isString description - description = description.replace(/#{spriteName}/g, 'hero') - if fact = stats.stats.shieldDefenseFactor - description = description.replace(/#{shieldDefensePercent}%/g, fact.display) - description = $(marked(description)).html() - - c.props.push { - name: prop - description: description or '...' - } - c diff --git a/app/views/user/JobProfileView.coffee b/app/views/user/JobProfileView.coffee index d6c6e4984..254e651f8 100644 --- a/app/views/user/JobProfileView.coffee +++ b/app/views/user/JobProfileView.coffee @@ -32,12 +32,10 @@ module.exports = class JobProfileView extends UserView showBackground: false usesSocialMedia: true - subscriptions: - 'auth:linkedin-api-loaded': 'onLinkedInLoaded' + subscriptions: {} events: 'click #toggle-editing': 'toggleEditing' - 'click #importLinkedIn': 'importLinkedIn' 'click #toggle-job-profile-active': 'toggleJobProfileActive' 'click #toggle-job-profile-approved': 'toggleJobProfileApproved' 'click #save-notes-button': 'onJobProfileNotesChanged' @@ -58,12 +56,7 @@ module.exports = class JobProfileView extends UserView constructor: (options, userID) -> @onJobProfileNotesChanged = _.debounce @onJobProfileNotesChanged, 1000 @onRemarkChanged = _.debounce @onRemarkChanged, 1000 - @authorizedWithLinkedIn = IN?.User?.isAuthorized() - @linkedInLoaded = Boolean(IN?.parse) - @waitingForLinkedIn = false - window.contractCallback = => - @authorizedWithLinkedIn = IN?.User?.isAuthorized() - @render() + require('lib/services/filepicker')() # Initialize if needed super userID, options onLoaded: -> @@ -104,135 +97,11 @@ module.exports = class JobProfileView extends UserView @remark.set 'user', @userID @remark.set 'userName', name if name = @user.get('name') - onLinkedInLoaded: => - @linkedinLoaded = true - if @waitingForLinkedIn - @renderLinkedInButton() - @authorizedWithLinkedIn = IN?.User?.isAuthorized() - - renderLinkedInButton: => - IN?.parse() - - afterInsert: -> - super() - linkedInButtonParentElement = document.getElementById('linkedInAuthButton') - if linkedInButtonParentElement - if @linkedinLoaded - @renderLinkedInButton() - else - @waitingForLinkedIn = true - - importLinkedIn: => - overwriteConfirm = confirm('Importing LinkedIn data will overwrite your current work experience, skills, name, descriptions, and education. Continue?') - unless overwriteConfirm then return - application.linkedinHandler.getProfileData (err, profileData) => - @processLinkedInProfileData profileData - jobProfileSchema: -> @user.schema().properties.jobProfile.properties - processLinkedInProfileData: (p) -> - #handle formatted-name - currentJobProfile = @user.get('jobProfile') - oldJobProfile = _.cloneDeep(currentJobProfile) - jobProfileSchema = @user.schema().properties.jobProfile.properties - - if p['formattedName']? and p['formattedName'] isnt 'private' - nameMaxLength = jobProfileSchema.name.maxLength - currentJobProfile.name = p['formattedName'].slice(0, nameMaxLength) - if p['skills']?['values'].length - skillNames = [] - skillMaxLength = jobProfileSchema.skills.items.maxLength - for skill in p.skills.values - skillNames.push skill.skill.name.slice(0, skillMaxLength) - currentJobProfile.skills = skillNames - if p['headline'] - shortDescriptionMaxLength = jobProfileSchema.shortDescription.maxLength - currentJobProfile.shortDescription = p['headline'].slice(0, shortDescriptionMaxLength) - if p['summary'] - longDescriptionMaxLength = jobProfileSchema.longDescription.maxLength - currentJobProfile.longDescription = p.summary.slice(0, longDescriptionMaxLength) - if p['positions']?['values']?.length - newWorks = [] - workSchema = jobProfileSchema.work.items.properties - for position in p['positions']['values'] - workObj = {} - descriptionMaxLength = workSchema.description.maxLength - - workObj.description = position.summary?.slice(0, descriptionMaxLength) - workObj.description ?= '' - if position.startDate?.year? - workObj.duration = "#{position.startDate.year} - " - if (not position.endDate?.year) or (position.endDate?.year and position.endDate?.year > (new Date().getFullYear())) - workObj.duration += 'present' - else - workObj.duration += position.endDate.year - else - workObj.duration = '' - durationMaxLength = workSchema.duration.maxLength - workObj.duration = workObj.duration.slice(0, durationMaxLength) - employerMaxLength = workSchema.employer.maxLength - workObj.employer = position.company?.name ? '' - workObj.employer = workObj.employer.slice(0, employerMaxLength) - workObj.role = position.title ? '' - roleMaxLength = workSchema.role.maxLength - workObj.role = workObj.role.slice(0, roleMaxLength) - newWorks.push workObj - currentJobProfile.work = newWorks - - if p['educations']?['values']?.length - newEducation = [] - eduSchema = jobProfileSchema.education.items.properties - for education in p['educations']['values'] - educationObject = {} - educationObject.degree = education.degree ? 'Studied' - - if education.startDate?.year? - educationObject.duration = "#{education.startDate.year} - " - if (not education.endDate?.year) or (education.endDate?.year and education.endDate?.year > (new Date().getFullYear())) - educationObject.duration += 'present' - if educationObject.degree is 'Studied' - educationObject.degree = 'Studying' - else - educationObject.duration += education.endDate.year - else - educationObject.duration = '' - if education.fieldOfStudy - if educationObject.degree is 'Studied' or educationObject.degree is 'Studying' - educationObject.degree += " #{education.fieldOfStudy}" - else - educationObject.degree += " in #{education.fieldOfStudy}" - educationObject.degree = educationObject.degree.slice(0, eduSchema.degree.maxLength) - educationObject.duration = educationObject.duration.slice(0, eduSchema.duration.maxLength) - educationObject.school = education.schoolName ? '' - educationObject.school = educationObject.school.slice(0, eduSchema.school.maxLength) - educationObject.description = '' - newEducation.push educationObject - currentJobProfile.education = newEducation - if p['publicProfileUrl'] - #search for linkedin link - links = currentJobProfile.links - alreadyHasLinkedIn = false - for link in links - if link.link.toLowerCase().indexOf('linkedin') > -1 - alreadyHasLinkedIn = true - break - unless alreadyHasLinkedIn - newLink = - link: p['publicProfileUrl'] - name: 'LinkedIn' - currentJobProfile.links.push newLink - @user.set('jobProfile', currentJobProfile) - validationErrors = @user.validate() - if validationErrors - @user.set('jobProfile', oldJobProfile) - return alert("Please notify team@codecombat.com! There were validation errors from the LinkedIn import: #{JSON.stringify validationErrors}") - else - @render() - getRenderData: -> context = super() context.userID = @userID - context.linkedInAuthorized = @authorizedWithLinkedIn context.profile = @user.get('jobProfile', true) context.rawProfile = @user.get('jobProfile') or {} context.user = @user @@ -310,7 +179,6 @@ module.exports = class JobProfileView extends UserView toggleEditing: -> @editing = not @editing @render() - _.delay @renderLinkedInButton, 1000 @saveEdits() toggleJobProfileApproved: -> diff --git a/scripts/mongodb/migrations/2014-11-10-fix-purchased-objectids.js b/scripts/mongodb/migrations/2014-11-10-fix-purchased-objectids.js new file mode 100644 index 000000000..02619783f --- /dev/null +++ b/scripts/mongodb/migrations/2014-11-10-fix-purchased-objectids.js @@ -0,0 +1,21 @@ +var usersWithPurchases = db.users.find({"purchased.items": {$exists: true}}).toArray(); +var itemsConverted = 0; +var usersConverted = 0; +for (var i = 0; i < usersWithPurchases.length; ++i) { + var user = usersWithPurchases[i]; + var items = user.purchased.items; + var convertThisUser = false; + for (var j = 0; j < items.length; ++j) { + var item = items[j]; + if (typeof item != 'string') { + items[j] = '' + item; + ++itemsConverted; + convertThisUser = true; + } + } + if (convertThisUser) { + db.users.save(user); + ++usersConverted; + } +} +print("Had to convert", itemsConverted, "items and", usersConverted, "users"); diff --git a/server/commons/errors.coffee b/server/commons/errors.coffee index 819cb87a8..3648cc0b9 100644 --- a/server/commons/errors.coffee +++ b/server/commons/errors.coffee @@ -1,13 +1,18 @@ +log = require 'winston' + module.exports.custom = (res, code=500, message='Internal Server Error') -> + log.debug "#{code}: #{message}" res.send code, message res.end() module.exports.unauthorized = (res, message='Unauthorized') -> # TODO: The response MUST include a WWW-Authenticate header field + log.debug "401: #{message}" res.send 401, message res.end() module.exports.forbidden = (res, message='Forbidden') -> + log.debug "403: #{message}" res.send 403, message res.end() @@ -16,27 +21,33 @@ module.exports.notFound = (res, message='Not found.') -> res.end() module.exports.badMethod = (res, allowed=['GET', 'POST', 'PUT', 'PATCH'], message='Method Not Allowed') -> + log.debug "405: #{message}" allowHeader = _.reduce allowed, ((str, current) -> str += ', ' + current) res.set 'Allow', allowHeader # TODO not sure if these are always the case res.send 405, message res.end() module.exports.conflict = (res, message='Conflict. File exists') -> + log.debug "409: #{message}" res.send 409, message res.end() module.exports.badInput = (res, message='Unprocessable Entity. Bad Input.') -> + log.debug "422: #{message}" res.send 422, message res.end() module.exports.serverError = (res, message='Internal Server Error') -> + log.debug "500: #{message}" res.send 500, message res.end() module.exports.gatewayTimeoutError = (res, message='Gateway timeout') -> + log.debug "504: #{message}" res.send 504, message res.end() module.exports.clientTimeout = (res, message='The server did not receive the client response in a timely manner') -> + log.debug "408: #{message}" res.send 408, message res.end() diff --git a/server/commons/mapping.coffee b/server/commons/mapping.coffee index 2afb265d9..c6393a39b 100644 --- a/server/commons/mapping.coffee +++ b/server/commons/mapping.coffee @@ -6,6 +6,7 @@ module.exports.handlers = 'level_session': 'levels/sessions/level_session_handler' 'level_system': 'levels/systems/level_system_handler' 'patch': 'patches/patch_handler' + 'payment': 'payments/payment_handler' 'purchase': 'purchases/purchase_handler' 'thang_type': 'levels/thangs/thang_type_handler' 'user': 'users/user_handler' diff --git a/server/levels/thangs/thang_type_handler.coffee b/server/levels/thangs/thang_type_handler.coffee index 490a1492e..537058fbd 100644 --- a/server/levels/thangs/thang_type_handler.coffee +++ b/server/levels/thangs/thang_type_handler.coffee @@ -1,17 +1,6 @@ ThangType = require './ThangType' Handler = require '../../commons/Handler' -heroes = - captain: '529ec584c423d4e83b000014' - knight: '529ffbf1cf1818f2be000001' - librarian: '52fbf74b7e01835453bd8d8e' - equestrian: '52e95b4222efc8e70900175d' - 'potion-master': '52e9adf7427172ae56002172' - thoktar: '52a00542cf1818f2be000006' - 'robot-walker': '5301696ad82649ec2c0c9b0d' - 'michael-heasell': '53e126a4e06b897606d38bef' - 'ian-elliott': '53e12be0d042f23505c3023b' - ThangTypeHandler = class ThangTypeHandler extends Handler modelClass: ThangType jsonSchema: require '../../../app/schemas/models/thang_type' @@ -40,6 +29,7 @@ ThangTypeHandler = class ThangTypeHandler extends Handler 'description' 'gems' 'heroClass' + 'tier' 'extendedName' ] @@ -61,10 +51,9 @@ ThangTypeHandler = class ThangTypeHandler extends Handler query = slug: {$exists: true} if req.query.view is 'items' query.kind = 'Item' - query.gems = {$exists: true} # Items without gems don't show up anywhere + query.tier = {$exists: true} # Items without a tier don't show up anywhere, whereas items without gems don't show up in the store else if req.query.view is 'heroes' - #query.kind = 'Hero' # TODO: when ChooseHeroView is refactored, just use this - query.original = {$in: _.values heroes} # TODO: when ChooseHeroView is refactored, don't do this + query.kind = 'Hero' else if req.query.view is 'i18n-coverage' query.i18nCoverage = {$exists: true} diff --git a/server/payments/Payment.coffee b/server/payments/Payment.coffee new file mode 100644 index 000000000..f32e8954d --- /dev/null +++ b/server/payments/Payment.coffee @@ -0,0 +1,6 @@ +mongoose = require('mongoose') + +PaymentSchema = new mongoose.Schema({}, {strict: false}) +PaymentSchema.index({recipient: 1, 'stripe.timestamp': 1, 'ios.transactionID'}, {unique: true, name: 'unique payment'}) + +module.exports = mongoose.model('payment', PaymentSchema) diff --git a/server/payments/payment_handler.coffee b/server/payments/payment_handler.coffee new file mode 100644 index 000000000..891d151fa --- /dev/null +++ b/server/payments/payment_handler.coffee @@ -0,0 +1,141 @@ +Payment = require './Payment' +User = require '../users/User' +Handler = require '../commons/Handler' +{handlers} = require '../commons/mapping' +mongoose = require 'mongoose' +log = require 'winston' +sendwithus = require '../sendwithus' +hipchat = require '../hipchat' +config = require '../../server_config' +request = require 'request' + +products = { + 'gems_5': { + amount: 500 + gems: 5000 + } + + 'gems_10': { + amount: 1000 + gems: 11000 + } + + 'gems_20': { + amount: 2000 + gems: 25000 + } +} + +PaymentHandler = class PaymentHandler extends Handler + modelClass: Payment + editableProperties: [] + postEditableProperties: ['purchased'] + jsonSchema: require '../../app/schemas/models/payment.schema' + + makeNewInstance: (req) -> + payment = super(req) + payment.set 'purchaser', req.user._id + payment.set 'recipient', req.user._id + payment.set 'created', new Date().toISOString() + payment + + post: (req, res) -> + appleReceipt = req.body.apple?.rawReceipt + appleTransactionID = req.body.apple?.transactionID + appleLocalPrice = req.body.apple?.localPrice + stripeToken = req.body.stripe?.token + stripeTimestamp = parseInt(req.body.stripe?.timestamp) + + if not (appleReceipt or stripeTimestamp) + return @sendBadInputError(res, 'Need either apple.rawReceipt or stripe.timestamp') + + if appleReceipt + if not appleTransactionID + return @sendBadInputError(res, 'Apple purchase? Need to specify which transaction.') + @handleApplePaymentPost(req, res, appleReceipt, appleTransactionID, appleLocalPrice) + + else + @handleStripePaymentPost(req, res, stripeTimestamp, stripeToken) + + handleApplePaymentPost: (req, res, receipt, transactionID, localPrice) -> + formFields = { 'receipt-data': receipt } + + #- verify receipt with Apple + + verifyReq = request.post({url: config.apple.verifyURL, json: formFields}, (err, verifyRes, body) => + if err or not body?.receipt?.in_app or (not body?.bundle_id is 'com.codecombat.CodeCombat') + console.warn 'apple receipt error?', err, body + @sendBadInputError(res, 'Unable to verify Apple receipt.') + return + + transaction = _.find body.receipt.in_app, { transaction_id: transactionID } + return @sendBadInputError(res, 'Invalid transactionID.') unless transaction + + #- Check existence + transactionID = transaction.transaction_id + criteria = { recipient: req.user._id, 'ios.transactionID': transactionID } + Payment.findOne(criteria).exec((err, payment) => + + if payment + @recalculateGemsFor(req.user, (err) => + return @sendDatabaseError(res, err) if err + @sendSuccess(res, @formatEntity(req, payment)) + ) + return + + payment = @makeNewInstance(req) + payment.set 'service', 'ios' + product = products[transaction.product_id] + + product ?= _.values(products)[0] # TEST + + payment.set 'amount', product.amount + payment.set 'gems', product.gems + payment.set 'ios', { + transactionID: transactionID + rawReceipt: receipt + localPrice: localPrice + } + + validation = @validateDocumentInput(payment.toObject()) + return @sendBadInputError(res, validation.errors) if validation.valid is false + payment.save((err) => + return @sendDatabaseError(res, err) if err + @incrementGemsFor(req.user, product.gems, (err) => + return @sendDatabaseError(res, err) if err + @sendCreated(res, @formatEntity(req, payment)) + ) + ) + ) + ) + + + handleStripePaymentPost: (req, res, timestamp, token) -> + console.log 'lol not implemented yet' + @sendNotFoundError(res) + + + incrementGemsFor: (user, gems, done) -> + purchased = _.clone(user.get('purchased')) + if not purchased?.gems + purchased ?= {} + purchased.gems = gems + user.set('purchased', purchased) + user.save((err) -> done(err)) + + else + user.update({$inc: {'purchased.gems': gems}}, {}, (err) -> done(err)) + + recalculateGemsFor: (user, done) -> + + Payment.find({recipient: user._id}).select('gems').exec((err, payments) -> + gems = _.reduce payments, ((sum, p) -> sum + p.get('gems')), 0 + purchased = _.clone(user.get('purchased')) + purchased ?= {} + purchased.gems = gems + user.set('purchased', purchased) + user.save((err) -> done(err)) + + ) + +module.exports = new PaymentHandler() diff --git a/server/purchases/Purchase.coffee b/server/purchases/Purchase.coffee index b1f34459a..508e5be7b 100644 --- a/server/purchases/Purchase.coffee +++ b/server/purchases/Purchase.coffee @@ -1,9 +1,6 @@ mongoose = require('mongoose') -deltas = require '../../app/lib/deltas' -log = require 'winston' -{handlers} = require '../commons/mapping' PurchaseSchema = new mongoose.Schema({status: String}, {strict: false}) -PurchaseSchema.index({recipient: 1, 'purchase.original': 1}, {unique: true, name: 'unique purchase'}) +PurchaseSchema.index({recipient: 1, 'purchased.original': 1}, {unique: true, name: 'unique purchase'}) module.exports = mongoose.model('purchase', PurchaseSchema) diff --git a/server/purchases/purchase_handler.coffee b/server/purchases/purchase_handler.coffee index 7b0e1a7ef..0b50b8439 100644 --- a/server/purchases/purchase_handler.coffee +++ b/server/purchases/purchase_handler.coffee @@ -40,7 +40,7 @@ PurchaseHandler = class PurchaseHandler extends Handler return @sendDatabaseError(res, err) if err return @sendNotFoundError(res) unless purchasedItem return @sendBadInputError(res, 'This cannot be purchased.') if not cost = purchasedItem.get('gems') - return @sendForbiddenError(res, 'Not enough gems.') if cost > req.user.get('gems') + return @sendForbiddenError(res, 'Not enough gems.') if cost > req.user.gems() req.purchasedItem = purchasedItem # for safekeeping criteria = { @@ -61,7 +61,7 @@ PurchaseHandler = class PurchaseHandler extends Handler addPurchaseToUser: (req) -> user = req.user purchased = user.get('purchased') or {} - purchased = _.clone purchased + purchased = _.cloneDeep purchased item = req.purchasedItem group = switch item.get('kind') @@ -69,7 +69,7 @@ PurchaseHandler = class PurchaseHandler extends Handler when 'Hero' then 'heroes' else 'levels' - original = item.get('original') + original = item.get('original') + '' purchased[group] ?= [] unless original in purchased[group] #- add the purchase to the list of purchases diff --git a/server_config.coffee b/server_config.coffee index f6ff811ad..a51a9fe3a 100644 --- a/server_config.coffee +++ b/server_config.coffee @@ -16,6 +16,9 @@ config.mongo = host: process.env.COCO_MONGO_HOST or 'localhost' db: process.env.COCO_MONGO_DATABASE_NAME or 'coco' mongoose_replica_string: process.env.COCO_MONGO_MONGOOSE_REPLICA_STRING or '' + +config.apple = + verifyURL: process.env.COCO_APPLE_VERIFY_URL or 'https://sandbox.itunes.apple.com/verifyReceipt' # 'https://buy.itunes.apple.com/verifyReceipt' config.redis = port: process.env.COCO_REDIS_PORT or 6379 diff --git a/test/server/common.coffee b/test/server/common.coffee index 82531ee2b..66fe5f40e 100644 --- a/test/server/common.coffee +++ b/test/server/common.coffee @@ -34,6 +34,7 @@ models_path = [ '../../server/patches/Patch' '../../server/achievements/Achievement' '../../server/achievements/EarnedAchievement' + '../../server/payments/Payment' ] for m in models_path diff --git a/test/server/functional/achievement.spec.coffee b/test/server/functional/achievement.spec.coffee index 8ac1ed9ef..3206bb1c1 100644 --- a/test/server/functional/achievement.spec.coffee +++ b/test/server/functional/achievement.spec.coffee @@ -50,15 +50,6 @@ describe 'Achievement', -> expect(res.statusCode).toBe(403) done() - it 'can\'t be updated by ordinary users', (done) -> - loginJoe -> - request.put {uri: url, json: unlockable}, (err, res, body) -> - expect(res.statusCode).toBe(403) - - request {method: 'patch', uri: url, json: unlockable}, (err, res, body) -> - expect(res.statusCode).toBe(403) - done() - it 'can be created by admins', (done) -> loginAdmin -> request.post {uri: url, json: unlockable}, (err, res, body) -> @@ -77,6 +68,17 @@ describe 'Achievement', -> expect(docs.length).toBe 3 done() + it 'can\'t be updated by ordinary users', (done) -> + loginJoe -> + unlockable3 = _.clone(unlockable) + unlockable3.description = 'alsdfkhasdkfhajksdhfjkasdhfj' + request.put {uri: url, json: unlockable3}, (err, res, body) -> + expect(res.statusCode).toBe(403) + + request {method: 'patch', uri: url, json: unlockable}, (err, res, body) -> + expect(res.statusCode).toBe(403) + done() + it 'can get all for ordinary users', (done) -> loginJoe -> request.get {uri: url, json: unlockable}, (err, res, body) -> diff --git a/test/server/functional/payment.spec.coffee b/test/server/functional/payment.spec.coffee new file mode 100644 index 000000000..884f4406e --- /dev/null +++ b/test/server/functional/payment.spec.coffee @@ -0,0 +1,73 @@ +testReceipt = 'MIIVEQYJKoZIhvcNAQcCoIIVAjCCFP4CAQExCzAJBgUrDgMCGgUAMIIEwgYJKoZIhvcNAQcBoIIEswSCBK8xggSrMAoCAQgCAQEEAhYAMAoCARQCAQEEAgwAMAsCAQECAQEEAwIBADALAgEDAgEBBAMMATkwCwIBCwIBAQQDAgEAMAsCAQ4CAQEEAwIBTTALAgEPAgEBBAMCAQAwCwIBEAIBAQQDAgEAMAsCARkCAQEEAwIBAzAMAgEKAgEBBAQWAjQrMA0CAQ0CAQEEBQIDATjkMA0CARMCAQEEBQwDMS4wMA4CAQkCAQEEBgIEUDIzMTAYAgEEAgECBBBFm6ID3eNcNpCJVGMvofTCMBsCAQACAQEEEwwRUHJvZHVjdGlvblNhbmRib3gwHAIBBQIBAQQUshze7K1i43z3C/N8znUlSOq0OpkwHgIBDAIBAQQWFhQyMDE0LTExLTEyVDAwOjUwOjM3WjAeAgESAgEBBBYWFDIwMTMtMDgtMDFUMDc6MDA6MDBaMCMCAQICAQEEGwwZY29tLmNvZGVjb21iYXQuQ29kZUNvbWJhdDBCAgEHAgEBBDqqVISWC4wNjaBXqlNV7plPdTXyDx32V1y7ydj0cF8hhG/4rs/XJxhXtesY4ke9xCSq9+SQbgDWUAgAMF0CAQYCAQEEVfREWcK86WrR/8tApnityEV/y1WFszw7Pso3NclvMXkL5qBE0tBvLF8mO890BdA1Dr0TjkN69uLToEn/uVYjmKJ388shlls6eE3krpaFsl/48qVSADkwggFLAgERAgEBBIIBQTGCAT0wCwICBqwCAQEEAhYAMAsCAgatAgEBBAIMADALAgIGsAIBAQQCFgAwCwICBrICAQEEAgwAMAsCAgazAgEBBAIMADALAgIGtAIBAQQCDAAwCwICBrUCAQEEAgwAMAsCAga2AgEBBAIMADAMAgIGpQIBAQQDAgEBMAwCAgarAgEBBAMCAQEwDAICBq4CAQEEAwIBADAMAgIGrwIBAQQDAgEAMAwCAgaxAgEBBAMCAQAwEQICBqYCAQEECAwGZ2Vtc181MBsCAganAgEBBBIMEDEwMDAwMDAxMzEyNzQ0MzkwGwICBqkCAQEEEgwQMTAwMDAwMDEzMTI3NDQzOTAfAgIGqAIBAQQWFhQyMDE0LTExLTEyVDAwOjUwOjM3WjAfAgIGqgIBAQQWFhQyMDE0LTExLTExVDIxOjQyOjU4WjCCAUwCARECAQEEggFCMYIBPjALAgIGrAIBAQQCFgAwCwICBq0CAQEEAgwAMAsCAgawAgEBBAIWADALAgIGsgIBAQQCDAAwCwICBrMCAQEEAgwAMAsCAga0AgEBBAIMADALAgIGtQIBAQQCDAAwCwICBrYCAQEEAgwAMAwCAgalAgEBBAMCAQEwDAICBqsCAQEEAwIBATAMAgIGrgIBAQQDAgEAMAwCAgavAgEBBAMCAQAwDAICBrECAQEEAwIBADASAgIGpgIBAQQJDAdnZW1zXzEwMBsCAganAgEBBBIMEDEwMDAwMDAxMzEyODM2MDgwGwICBqkCAQEEEgwQMTAwMDAwMDEzMTI4MzYwODAfAgIGqAIBAQQWFhQyMDE0LTExLTEyVDAwOjUwOjM3WjAfAgIGqgIBAQQWFhQyMDE0LTExLTEyVDAwOjUwOjM3WqCCDlUwggVrMIIEU6ADAgECAggYWUMhcnSc/DANBgkqhkiG9w0BAQUFADCBljELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xLDAqBgNVBAsMI0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25zMUQwQgYDVQQDDDtBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9ucyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0xMDExMTEyMTU4MDFaFw0xNTExMTEyMTU4MDFaMHgxJjAkBgNVBAMMHU1hYyBBcHAgU3RvcmUgUmVjZWlwdCBTaWduaW5nMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC2k8K3DyRe7dI0SOiFBeMzlGZb6Cc3v3tDSev5yReXM3MySUrIb2gpFLiUpvRlSztH19EsZku4mNm89RJRy+YvqfSznxzoKPxSwIGiy1ZigFqika5OQMN9KC7X0+1N2a2K+/JnSOzreb0CbQRZGP+MN5+KN/Fi/7uiA1CHCtWS4IYRXiNG9eElYyuiaoyyELeRI02aP4NA8mQJWveNrlZc1PW0bgMbBF0sG68AmRfXpftJkc7ioRExXhkBwNrOUINeyOtJO0kaKurgn7/SRkmc2Kuhg2FsD8H8s62ZdSr8I5vvIgjre1kUEZ9zNC3muTmmO/fmPuzKpvurrybfj4iBAgMBAAGjggHYMIIB1DAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFIgnFwmpthhgi+zruvZHWcVSVKO3ME0GA1UdHwRGMEQwQqBAoD6GPGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2NlcnRpZmljYXRpb25hdXRob3JpdHkvd3dkcmNhLmNybDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0OBBYEFHV2JKJrYgyXNKH6Tl4IDCK/c+++MIIBEQYDVR0gBIIBCDCCAQQwggEABgoqhkiG92NkBQYBMIHxMIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMCkGCCsGAQUFBwIBFh1odHRwOi8vd3d3LmFwcGxlLmNvbS9hcHBsZWNhLzAQBgoqhkiG92NkBgsBBAIFADANBgkqhkiG9w0BAQUFAAOCAQEAoDvxh7xptLeDfBn0n8QCZN8CyY4xc8scPtwmB4v9nvPtvkPWjWEt5PDcFnMB1jSjaRl3FL+5WMdSyYYAf2xsgJepmYXoePOaEqd+ODhk8wTLX/L2QfsHJcsCIXHzRD/Q4nth90Ljq793bN0sUJyAhMWlb1hZekYxQWi7EzVFQqSM+hHVSxbyMjXeH7zSmV3I5gIyWZDojcs53yHaw3b7ejYaFhqYTIUb5itFLS9ZGi3GmtZmkqPSNlJQgCBNM8iymtZTYrFgUvD1930QUOQSv71xvrSAx23Eb1s5NdHnt96BICeOOFyChzpzYMTW8RygqWZEfs4MKJsjf6zs5qA73TCCBCMwggMLoAMCAQICARkwDQYJKoZIhvcNAQEFBQAwYjELMAkGA1UEBhMCVVMxEzARBgNVBAoTCkFwcGxlIEluYy4xJjAkBgNVBAsTHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRYwFAYDVQQDEw1BcHBsZSBSb290IENBMB4XDTA4MDIxNDE4NTYzNVoXDTE2MDIxNDE4NTYzNVowgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQKDApBcHBsZSBJbmMuMSwwKgYDVQQLDCNBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9uczFEMEIGA1UEAww7QXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlvbnMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDKOFSmy1aqyCQ5SOmM7uxfuH8mkbw0U3rOfGOAYXdkXqUHI7Y5/lAtFVZYcC1+xG7BSoU+L/DehBqhV8mvexj/avoVEkkVCBmsqtsqMu2WY2hSFT2Miuy/axiV4AOsAX2XBWfODoWVN2rtCbauZ81RZJ/GXNG8V25nNYB2NqSHgW44j9grFU57Jdhav06DwY3Sk9UacbVgnJ0zTlX5ElgMhrgWDcHld0WNUEi6Ky3klIXh6MSdxmilsKP8Z35wugJZS3dCkTm59c3hTO/AO0iMpuUhXf1qarunFjVg0uat80YpyejDi+l5wGphZxWy8P3laLxiX27Pmd3vG2P+kmWrAgMBAAGjga4wgaswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFIgnFwmpthhgi+zruvZHWcVSVKO3MB8GA1UdIwQYMBaAFCvQaUeUdgn+9GuNLkCm90dNfwheMDYGA1UdHwQvMC0wK6ApoCeGJWh0dHA6Ly93d3cuYXBwbGUuY29tL2FwcGxlY2Evcm9vdC5jcmwwEAYKKoZIhvdjZAYCAQQCBQAwDQYJKoZIhvcNAQEFBQADggEBANoyAJbFVJTTO4I3Zn0uaNXDxrjLJoxIkM8TJGpGjmPU8NATBt3YxME3FfIzEzkmLc4uVUDjCwOv+hLC5w0huNWAz6woL84ts06vhhkExulQ3UwpRxAj/Gy7G5hrSInhW53eRts1hTXvPtDiWEs49O11Wh9ccB1WORLl4Q0R5IklBr3VtBWOXtBZl5DpS4Hi3xivRHQeGaA6R8yRHTrrI1r+pS2X93u71odGQoXrUj0msmOotLHKj/TM4rPIR+C/mlmD+tqYUyqC9XxlLpXZM1317WXMMTfFWgToa+HniANKdZ6bKMtKQIhlQ3XdyzolI8WeV/guztKpkl5zLi8ldRUwggS7MIIDo6ADAgECAgECMA0GCSqGSIb3DQEBBQUAMGIxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpBcHBsZSBJbmMuMSYwJAYDVQQLEx1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEWMBQGA1UEAxMNQXBwbGUgUm9vdCBDQTAeFw0wNjA0MjUyMTQwMzZaFw0zNTAyMDkyMTQwMzZaMGIxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpBcHBsZSBJbmMuMSYwJAYDVQQLEx1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEWMBQGA1UEAxMNQXBwbGUgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOSRqQkfkdseR1DrBe1eeYQt6zaiV0xV7IsZid75S2z1B6siMALoGD74UAnTf0GomPnRymacJGsR0KO75Bsqwx+VnnoMpEeLW9QWNzPLxA9NzhRp0ckZcvVdDtV/X5vyJQO6VY9NXQ3xZDUjFUsVWR2zlPf2nJ7PULrBWFBnjwi0IPfLrCwgb3C2PwEwjLdDzw+dPfMrSSgayP7OtbkO2V4c1ss9tTqt9A8OAJILsSEWLnTVPA3bYharo3GSR1NVwa8vQbP4++NwzeajTEV+H0xrUJZBicR0YgsQg0GHM4qBsTBY7FoEMoxos48d3mVz/2deZbxJ2HafMxRloXeUyS0CAwEAAaOCAXowggF2MA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQr0GlHlHYJ/vRrjS5ApvdHTX8IXjAfBgNVHSMEGDAWgBQr0GlHlHYJ/vRrjS5ApvdHTX8IXjCCAREGA1UdIASCAQgwggEEMIIBAAYJKoZIhvdjZAUBMIHyMCoGCCsGAQUFBwIBFh5odHRwczovL3d3dy5hcHBsZS5jb20vYXBwbGVjYS8wgcMGCCsGAQUFBwICMIG2GoGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wDQYJKoZIhvcNAQEFBQADggEBAFw2mUwteLftjJvc83eb8nbSdzBPwR+Fg4UbmT1HN/Kpm0COLNSxkBLYvvRzm+7SZA/LeU802KI++Xj/a8gH7H05g4tTINM4xLG/mk8Ka/8r/FmnBQl8F0BWER5007eLIztHo9VvJOLr0bdw3w9F4SfK8W147ee1Fxeo3H4iNcol1dkP1mvUoiQjEfehrI9zgWDGG1sJL5Ky+ERI8GA4nhX1PSZnIIozavcNgs/e66Mv+VNqW2TAYzN39zoHLFbr2g8hDtq6cxlPtdk2f8GHVdmnmbkyQvvY1XGefqFStxu9k0IkEirHDx22TZxeY8hLgBdQqorV2uT80AkHN7B1dSExggHLMIIBxwIBATCBozCBljELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFwcGxlIEluYy4xLDAqBgNVBAsMI0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25zMUQwQgYDVQQDDDtBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9ucyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQIIGFlDIXJ0nPwwCQYFKw4DAhoFADANBgkqhkiG9w0BAQEFAASCAQCsTExkCPLotDyUC58PSCh7DBlv/qyZl0JTf/mrx7PPOdO0TB2RjEG7R0TIim9xoKIq1gY0gVdP5X+cpLNRhfB64cHmA5eMXXpyZChQu664gPJ22y0bjcz2q69NF/dDVwrIw7Y6/YGi5+PGE8gQKbIEyFGknKmpz7+r9lUwzaQ8rjS0bYGFlmxTOAvW0bRa1Ok04Qt38K7rs1ondBcSwAilGdp6pVVwJIx/UGGpVsqFuN54n6NwM56TJHX8InBHMvLawMt1eH+4ghwLgpi7uNiIAyvt4IxcHU36ktc42ACswyfEMBCUVA4+bo0QlB0q25EgbQ5MV0J1XCJoYWUjP4iI' + + +require '../common' + +describe '/db/payment', -> + request = require 'request' + paymentURL = getURL('/db/payment') + + firstApplePayment = { + apple: { + rawReceipt: testReceipt + transactionID: '1000000131274439' + localPrice: '$5.00' + } + } + + secondApplePayment = { + apple: { + rawReceipt: testReceipt + transactionID: '1000000131283608' + localPrice: '$10.00' + } + } + + paymentCreated = null + + it 'clears the db first', (done) -> + clearModels [User, Payment], (err) -> + throw err if err + done() + + describe 'posting Apple IAPs', -> + + it 'creates a payment object and credits gems to the user', (done) -> + loginJoe -> + request.post {uri: paymentURL, json: firstApplePayment}, (err, res, body) -> + paymentCreated = body?._id + expect(res.statusCode).toBe 201 + User.findOne({name:'Joe'}).exec(err, (err, user) -> + expect(user.get('purchased').gems).toBe(5000) + done() + ) + + it 'is idempotent', (done) -> + loginJoe -> + request.post {uri: paymentURL, json: firstApplePayment}, (err, res, body) -> + expect(body._id is paymentCreated).toBe(true) + expect(res.statusCode).toBe 200 + User.findOne({name:'Joe'}).exec(err, (err, user) -> + expect(user.get('purchased').gems).toBe(5000) + done() + ) + + it 'processes only the transactionID that is given', (done) -> + loginJoe -> + request.post {uri: paymentURL, json: secondApplePayment}, (err, res, body) -> + expect(body._id is paymentCreated).toBe(false) + expect(res.statusCode).toBe 201 + User.findOne({name:'Joe'}).exec(err, (err, user) -> + expect(user.get('purchased').gems).toBe(16000) + done() + ) + +# describe 'posting Stripe tokens' + + + + + + + + \ No newline at end of file diff --git a/test/server/functional/user.spec.coffee b/test/server/functional/user.spec.coffee index 29966bd2e..7335d47e7 100644 --- a/test/server/functional/user.spec.coffee +++ b/test/server/functional/user.spec.coffee @@ -69,7 +69,7 @@ describe 'POST /db/user', -> expect(user.get('password')).toBeUndefined() expect(user?.get('passwordHash')).not.toBeUndefined() if user?.get('passwordHash')? - expect(user.get('passwordHash')[..5]).toBe('31dc3d') + expect(user.get('passwordHash')[..5]).toBe('948c7e') expect(user.get('permissions').length).toBe(0) done()