staging/sparql-parser.js
define([],function(){
return (function() {
/*
* Generated by PEG.js 0.8.0.
*
* http://pegjs.majda.cz/
*/
function peg$subclass(child, parent) {
function ctor() { this.constructor = child; }
ctor.prototype = parent.prototype;
child.prototype = new ctor();
}
function SyntaxError(message, expected, found, offset, line, column) {
this.message = message;
this.expected = expected;
this.found = found;
this.offset = offset;
this.line = line;
this.column = column;
this.name = "SyntaxError";
}
peg$subclass(SyntaxError, Error);
function parse(input) {
var options = arguments.length > 1 ? arguments[1] : {},
peg$FAILED = {},
peg$startRuleIndices = { DOCUMENT: 0 },
peg$startRuleIndex = 0,
peg$consts = [
{ type: "other", description: "[1] QueryUnit" },
{ type: "other", description: "[2] Query" },
peg$FAILED,
function(p, q) {
return {token: 'query',
kind: 'query',
prologue: p,
units: [q]};
},
{ type: "other", description: "[3] Prologue" },
null,
[],
function(b, pfx) {
return { token: 'prologue',
base: b,
prefixes: pfx }
},
{ type: "other", description: "[4] BaseDecl" },
"B",
{ type: "literal", value: "B", description: "\"B\"" },
"b",
{ type: "literal", value: "b", description: "\"b\"" },
"A",
{ type: "literal", value: "A", description: "\"A\"" },
"a",
{ type: "literal", value: "a", description: "\"a\"" },
"S",
{ type: "literal", value: "S", description: "\"S\"" },
"s",
{ type: "literal", value: "s", description: "\"s\"" },
"E",
{ type: "literal", value: "E", description: "\"E\"" },
"e",
{ type: "literal", value: "e", description: "\"e\"" },
function(i) {
registerDefaultPrefix(i);
base = {};
base.token = 'base';
base.value = i;
return base;
},
{ type: "other", description: "[5] PrefixDecl" },
"P",
{ type: "literal", value: "P", description: "\"P\"" },
"p",
{ type: "literal", value: "p", description: "\"p\"" },
"R",
{ type: "literal", value: "R", description: "\"R\"" },
"r",
{ type: "literal", value: "r", description: "\"r\"" },
"F",
{ type: "literal", value: "F", description: "\"F\"" },
"f",
{ type: "literal", value: "f", description: "\"f\"" },
"I",
{ type: "literal", value: "I", description: "\"I\"" },
"i",
{ type: "literal", value: "i", description: "\"i\"" },
"X",
{ type: "literal", value: "X", description: "\"X\"" },
"x",
{ type: "literal", value: "x", description: "\"x\"" },
function(p, l) {
registerPrefix(p,l);
prefix = {};
prefix.token = 'prefix';
prefix.prefix = p;
prefix.local = l;
return prefix;
},
function(sts) {
return sts;
},
".",
{ type: "literal", value: ".", description: "\".\"" },
function(d) {
return d;
},
function(ts) {
return ts;
},
"@base",
{ type: "literal", value: "@base", description: "\"@base\"" },
"@prefix",
{ type: "literal", value: "@prefix", description: "\"@prefix\"" },
":",
{ type: "literal", value: ":", description: "\":\"" },
{ type: "other", description: "[6] SelectQuery" },
function(s, gs, w, sm) {
var dataset = {'named':[], 'default':[]};
for(var i=0; gs && i<gs.length; i++) {
var g = gs[i];
if(g.kind === 'default') {
dataset['default'].push(g.graph);
} else {
dataset['named'].push(g.graph)
}
}
if(dataset['named'].length === 0 && dataset['default'].length === 0) {
dataset['default'].push({token:'uri',
prefix:null,
suffix:null,
value:'https://github.com/antoniogarrote/rdfstore-js#default_graph'});
}
var query = {};
query.kind = 'select';
query.token = 'executableunit'
query.dataset = dataset;
query.projection = s.vars;
query.modifier = s.modifier;
query.pattern = w
if(sm!=null && sm.limit!=null) {
query.limit = sm.limit;
}
if(sm!=null && sm.offset!=null) {
query.offset = sm.offset;
}
if(sm!=null && (sm.order!=null && sm.order!="")) {
query.order = sm.order;
}
if(sm!=null && sm.group!=null) {
query.group = sm.group;
}
return query
},
{ type: "other", description: "[7] SubSelect" },
{ type: "other", description: "[8] SelectClause" },
"L",
{ type: "literal", value: "L", description: "\"L\"" },
"l",
{ type: "literal", value: "l", description: "\"l\"" },
"C",
{ type: "literal", value: "C", description: "\"C\"" },
"c",
{ type: "literal", value: "c", description: "\"c\"" },
"T",
{ type: "literal", value: "T", description: "\"T\"" },
"t",
{ type: "literal", value: "t", description: "\"t\"" },
"D",
{ type: "literal", value: "D", description: "\"D\"" },
"d",
{ type: "literal", value: "d", description: "\"d\"" },
"N",
{ type: "literal", value: "N", description: "\"N\"" },
"n",
{ type: "literal", value: "n", description: "\"n\"" },
"U",
{ type: "literal", value: "U", description: "\"U\"" },
"u",
{ type: "literal", value: "u", description: "\"u\"" },
"(",
{ type: "literal", value: "(", description: "\"(\"" },
")",
{ type: "literal", value: ")", description: "\")\"" },
"*",
{ type: "literal", value: "*", description: "\"*\"" },
function(mod, proj) {
var vars = [];
if(proj && proj.length === 3 && proj[1]==="*") {
return {vars: [{token: 'variable', kind:'*'}], modifier:arrayToString(mod)};
}
for(var i=0; proj && i< proj.length; i++) {
var aVar = proj[i];
if(aVar.length === 3) {
vars.push({token: 'variable', kind:'var', value:aVar[1]});
} else {
vars.push({token: 'variable', kind:'aliased', expression: aVar[3], alias:aVar[8]})
}
}
return {vars: vars, modifier:arrayToString(mod)};
},
{ type: "other", description: "[9] ConstructQuery" },
"O",
{ type: "literal", value: "O", description: "\"O\"" },
"o",
{ type: "literal", value: "o", description: "\"o\"" },
function(t, gs, w, sm) {
var dataset = {'named':[], 'default':[]};
for(var i=0; gs && i<gs.length; i++) {
var g = gs[i];
if(g.kind === 'default') {
dataset['default'].push(g.graph);
} else {
dataset['named'].push(g.graph)
}
}
if(dataset['named'].length === 0 && dataset['default'].length === 0) {
dataset['default'].push({token:'uri',
prefix:null,
suffix:null,
value:'https://github.com/antoniogarrote/rdfstore-js#default_graph'});
}
var query = {};
query.kind = 'construct';
query.token = 'executableunit'
query.dataset = dataset;
query.template = t;
query.pattern = w
if(sm!=null && sm.limit!=null) {
query.limit = sm.limit;
}
if(sm!=null && sm.offset!=null) {
query.offset = sm.offset;
}
if(sm!=null && (sm.order!=null && sm.order!="")) {
query.order = sm.order;
}
return query
},
{ type: "other", description: "[10] DescribeQuery" },
"DESCRIBE",
{ type: "literal", value: "DESCRIBE", description: "\"DESCRIBE\"" },
{ type: "other", description: "[11] AskQuery" },
"K",
{ type: "literal", value: "K", description: "\"K\"" },
"k",
{ type: "literal", value: "k", description: "\"k\"" },
function(gs, w) {
var dataset = {'named':[], 'default':[]};
for(var i=0; gs && i<gs.length; i++) {
var g = gs[i];
if(g.kind === 'default') {
dataset['default'].push(g.graph);
} else {
dataset['named'].push(g.graph)
}
}
if(dataset['named'].length === 0 && dataset['default'].length === 0) {
dataset['default'].push({token:'uri',
prefix:null,
suffix:null,
value:'https://github.com/antoniogarrote/rdfstore-js#default_graph'});
}
var query = {};
query.kind = 'ask';
query.token = 'executableunit'
query.dataset = dataset;
query.pattern = w
return query
},
{ type: "other", description: "[12] DatasetClause" },
"M",
{ type: "literal", value: "M", description: "\"M\"" },
"m",
{ type: "literal", value: "m", description: "\"m\"" },
function(gs) {
return gs;
},
{ type: "other", description: "[13] DefaultGraphClause" },
function(s) {
return {graph:s , kind:'default', token:'graphClause'}
},
{ type: "other", description: "[14] NamedGraphClause" },
function(s) {
return {graph:s, kind:'named', token:'graphCluase'};
},
{ type: "other", description: "[15] SourceSelector" },
{ type: "other", description: "[16] WhereClause" },
"W",
{ type: "literal", value: "W", description: "\"W\"" },
"w",
{ type: "literal", value: "w", description: "\"w\"" },
"H",
{ type: "literal", value: "H", description: "\"H\"" },
"h",
{ type: "literal", value: "h", description: "\"h\"" },
function(g) {
return g;
},
{ type: "other", description: "[17] SolutionModifier" },
function(gc, oc, lo) {
var acum = {};
if(lo != null) {
if(lo.limit != null) {
acum.limit = lo.limit;
}
if(lo.offset != null) {
acum.offset = lo.offset;
}
}
if(gc != null) {
acum.group = gc;
}
acum.order = oc;
return acum
},
{ type: "other", description: "[18] GroupClause" },
"G",
{ type: "literal", value: "G", description: "\"G\"" },
"g",
{ type: "literal", value: "g", description: "\"g\"" },
"Y",
{ type: "literal", value: "Y", description: "\"Y\"" },
"y",
{ type: "literal", value: "y", description: "\"y\"" },
function(conds) {
return conds;
},
{ type: "other", description: "[19] GroupCondition" },
function(b) {
return b;
},
function(f) {
return f;
},
function(e, alias) {
if(alias.length != 0) {
return {token: 'aliased_expression',
expression: e,
alias: alias[3] };
} else {
return e;
}
},
function(v) {
return v;
},
{ type: "other", description: "[20] HavingClause" },
"HAVING",
{ type: "literal", value: "HAVING", description: "\"HAVING\"" },
{ type: "other", description: "[21] HavingCondition" },
{ type: "other", description: "[22] OrderClause" },
function(os) {
return os;
},
{ type: "other", description: "[23] OrderCondition" },
"ASC",
{ type: "literal", value: "ASC", description: "\"ASC\"" },
"DESC",
{ type: "literal", value: "DESC", description: "\"DESC\"" },
function(direction, e) {
return { direction: direction, expression:e };
},
function(e) {
if(e.token === 'var') {
e = { token:'expression',
expressionType:'atomic',
primaryexpression: 'var',
value: e };
}
return { direction: 'ASC', expression:e };
},
{ type: "other", description: "[24] LimitOffsetClauses" },
function(cls) {
var acum = {};
for(var i=0; cls && i<cls.length; i++) {
var cl = cls[i];
if(cl.limit != null) {
acum['limit'] = cl.limit;
} else if(cl.offset != null){
acum['offset'] = cl.offset;
}
}
return acum;
},
{ type: "other", description: "[25] LimitClause" },
function(i) {
return { limit:parseInt(i.value) };
},
{ type: "other", description: "[26] OffsetClause" },
function(i) {
return { offset:parseInt(i.value) };
},
{ type: "other", description: "[27] BindingsClause" },
"BINDINGS",
{ type: "literal", value: "BINDINGS", description: "\"BINDINGS\"" },
"{",
{ type: "literal", value: "{", description: "\"{\"" },
"}",
{ type: "literal", value: "}", description: "\"}\"" },
{ type: "other", description: "[28] BindingValue" },
"UNDEF",
{ type: "literal", value: "UNDEF", description: "\"UNDEF\"" },
{ type: "other", description: "[29] UpdateUnit" },
{ type: "other", description: "[30] Update" },
";",
{ type: "literal", value: ";", description: "\";\"" },
function(p, u, us) {
var query = {};
query.token = 'query';
query.kind = 'update'
query.prologue = p;
var units = [u];
if(us.length != null && us[3] != null && us[3].units != null) {
units = units.concat(us[3].units);
}
query.units = units;
return query;
},
{ type: "other", description: "[31] Update1" },
{ type: "other", description: "[32] Load" },
function(sg, dg) {
var query = {};
query.kind = 'load';
query.token = 'executableunit'
query.sourceGraph = sg;
query.destinyGraph = dg[5];
return query;
},
{ type: "other", description: "[33] Clear" },
function(ref) {
var query = {};
query.kind = 'clear';
query.token = 'executableunit'
query.destinyGraph = ref;
return query;
},
{ type: "other", description: "[34] Drop" },
function(ref) {
var query = {};
query.kind = 'drop';
query.token = 'executableunit'
query.destinyGraph = ref;
return query;
},
{ type: "other", description: "[35] Create" },
function(ref) {
var query = {};
query.kind = 'create';
query.token = 'executableunit'
query.destinyGraph = ref;
return query;
},
{ type: "other", description: "[36] InsertData" },
function(qs) {
var query = {};
query.kind = 'insertdata';
query.token = 'executableunit'
query.quads = qs;
return query;
},
{ type: "other", description: "[37] DeleteData" },
function(qs) {
var query = {};
query.kind = 'deletedata';
query.token = 'executableunit'
query.quads = qs;
return query;
},
{ type: "other", description: "[38] DeleteWhere" },
function(p) {
var query = {};
query.kind = 'modify';
query.pattern = p;
query.with = null;
query.using = null;
var quads = [];
var patternsCollection = p.patterns[0];
if(patternsCollection.triplesContext == null && patternsCollection.patterns!=null) {
patternsCollection = patternsCollection.patterns[0].triplesContext;
} else {
patternsCollection = patternsCollection.triplesContext;
}
for(var i=0; patternsCollection && i<patternsCollection.length; i++) {
var quad = {};
var contextQuad = patternsCollection[i];
quad['subject'] = contextQuad['subject'];
quad['predicate'] = contextQuad['predicate'];
quad['object'] = contextQuad['object'];
quad['graph'] = contextQuad['graph'];
quads.push(quad);
}
query.delete = quads;
return query;
},
{ type: "other", description: "[39] Modify" },
function(wg, dic, uc, p) {
var query = {};
query.kind = 'modify';
if(wg != "") {
query.with = wg[5];
} else {
query.with = null;
}
if(dic.length === 3 && dic[2] === '') {
query.delete = dic[0];
query.insert = null;
} else if(dic.length === 3 && dic[0].length != null && dic[1].length != null && dic[2].length != null) {
query.delete = dic[0];
query.insert = dic[2];
} else {
query.insert = dic;
query.delete = null;
}
if(uc != '') {
query.using = uc;
}
query.pattern = p;
return query;
},
{ type: "other", description: "[40] DeleteClause" },
function(q) {
return q;
},
{ type: "other", description: "[41] InsertClause" },
function(q) {
return q;
},
{ type: "other", description: "[42] UsingClause" },
function(g) {
if(g.length!=null) {
return {kind: 'named', uri: g[6]};
} else {
return {kind: 'default', uri: g};
}
},
{ type: "other", description: "[43] GraphRef" },
function(i) {
return i;
},
{ type: "other", description: "[44] GraphRefAll" },
function() {
return 'default';
},
function() {
return 'named';
},
function() {
return 'all';
},
{ type: "other", description: "[45] QuadPattern" },
function(qs) {
return qs.quadsContext;
},
{ type: "other", description: "[46] QuadData" },
{ type: "other", description: "[47] Quads" },
function(ts, qs) {
var quads = []
if(ts && ts.triplesContext != null && ts.triplesContext != null) {
for(var i=0; ts.triplesContext && i<ts.triplesContext.length; i++) {
var triple = ts.triplesContext[i]
triple.graph = null;
quads.push(triple)
}
}
if(qs && qs.length>0 && qs[0].length > 0) {
quads = quads.concat(qs[0][0].quadsContext);
if( qs[0][2] != null && qs[0][2].triplesContext != null) {
for(var i=0; i<qs[0][2].triplesContext.length; i++) {
var triple = qs[0][2].triplesContext[i]
triple.graph = null;
quads.push(triple)
}
}
}
return {token:'quads',
quadsContext: quads}
},
{ type: "other", description: "[48] QuadsNotTriples" },
function(g, ts) {
var quads = []
for(var i=0; ts && i<ts.triplesContext.length; i++) {
var triple = ts.triplesContext[i]
triple.graph = g;
quads.push(triple)
}
return {token:'quadsnottriples',
quadsContext: quads}
},
{ type: "other", description: "[49] TriplesTemplate" },
function(b, bs) {
var triples = b.triplesContext;
var toTest = null;
if(bs && typeof(bs) === 'object') {
if(bs.length != null) {
if(bs[3].triplesContext!=null) {
triples = triples.concat(bs[3].triplesContext);
}
}
}
return {token:'triplestemplate',
triplesContext: triples}
},
{ type: "other", description: "[50] GroupGraphPattern" },
function(p) {
return p;
},
{ type: "other", description: "[51] GroupGraphPatternSub" },
function(tb, tbs) {
var subpatterns = [];
if(tb != null && tb != []) {
subpatterns.push(tb);
}
for(var i=0; tbs && tbs && i<tbs.length; i++) {
for(var j=0; j< tbs[i].length; j++) {
if(tbs[i][j].token != null) {
subpatterns.push(tbs[i][j]);
}
}
}
var compactedSubpatterns = [];
var currentBasicGraphPatterns = [];
var currentFilters = [];
for(var i=0; subpatterns && i<subpatterns.length; i++) {
if(subpatterns[i].token!='triplespattern' && subpatterns[i].token != 'filter') {
if(currentBasicGraphPatterns.length != 0 || currentFilters.length != 0) {
var triplesContext = [];
for(var j=0; j<currentBasicGraphPatterns.length; j++) {
triplesContext = triplesContext.concat(currentBasicGraphPatterns[j].triplesContext);
}
if(triplesContext.length > 0) {
compactedSubpatterns.push({token: 'basicgraphpattern',
triplesContext: triplesContext});
}
currentBasicGraphPatterns = [];
}
compactedSubpatterns.push(subpatterns[i]);
} else {
if(subpatterns[i].token === 'triplespattern') {
currentBasicGraphPatterns.push(subpatterns[i]);
} else {
currentFilters.push(subpatterns[i]);
}
}
}
if(currentBasicGraphPatterns.length != 0 || currentFilters.length != 0) {
var triplesContext = [];
for(var j=0; j<currentBasicGraphPatterns.length; j++) {
triplesContext = triplesContext.concat(currentBasicGraphPatterns[j].triplesContext);
}
if(triplesContext.length > 0) {
compactedSubpatterns.push({token: 'basicgraphpattern',
triplesContext: triplesContext});
}
}
// if(compactedSubpatterns.length == 1) {
// compactedSubpatterns[0].filters = currentFilters;
// return compactedSubpatterns[0];
// } else {
return { token: 'groupgraphpattern',
patterns: compactedSubpatterns,
filters: currentFilters }
// }
},
{ type: "other", description: "[54] TriplesBlock" },
function(b, bs) {
var triples = b.triplesContext;
var toTest = null;
if(bs && typeof(bs) === 'object') {
if(bs.length != null) {
if(bs[2].triplesContext!=null) {
triples = triples.concat(bs[2].triplesContext);
}
}
}
return {token:'triplespattern',
triplesContext: triples}
},
{ type: "other", description: "[53] GraphPatternNotTriples" },
{ type: "other", description: "[54] OptionalGraphPattern" },
"OPTIONAL",
{ type: "literal", value: "OPTIONAL", description: "\"OPTIONAL\"" },
function(v) {
return { token: 'optionalgraphpattern',
value: v }
},
{ type: "other", description: "[55] GraphGraphPattern" },
function(g, gg) {
for(var i=0; i<gg.patterns.length; i++) {
var quads = []
var ts = gg.patterns[i];
for(var j=0; j<ts.triplesContext.length; j++) {
var triple = ts.triplesContext[j]
triple.graph = g;
}
}
gg.token = 'groupgraphpattern'
return gg;
},
{ type: "other", description: "[56] ServiceGraphPattern" },
"SERVICE",
{ type: "literal", value: "SERVICE", description: "\"SERVICE\"" },
function(v, ts) {
return {token: 'servicegraphpattern',
status: 'todo',
value: [v,ts] }
},
{ type: "other", description: "[57] MinusGraphPattern" },
"MINUS",
{ type: "literal", value: "MINUS", description: "\"MINUS\"" },
function(ts) {
return {token: 'minusgraphpattern',
status: 'todo',
value: ts}
},
{ type: "other", description: "[58] GroupOrUnionGraphPattern" },
function(a, b) {
if(b.length === 0) {
return a;
} else {
var lastToken = {token: 'graphunionpattern',
value: [a]};
for(var i=0; b && i<b.length; i++) {
if(i==b.length-1) {
lastToken.value.push(b[i][7]);
} else {
lastToken.value.push(b[i][7]);
var newToken = {token: 'graphunionpattern',
value: [lastToken]}
lastToken = newToken;
}
}
return lastToken;
}
},
{ type: "other", description: "[59] Filter" },
function(c) {
return {token: 'filter',
value: c}
},
{ type: "other", description: "[60] Constraint" },
{ type: "other", description: "[61] FunctionCall" },
function(i, args) {
var fcall = {};
fcall.token = "expression";
fcall.expressionType = 'irireforfunction'
fcall.iriref = i;
fcall.args = args.value;
return fcall;
},
{ type: "other", description: "[62] ArgList" },
function() {
var args = {};
args.token = 'args';
args.value = [];
return args;
},
"DISTINCT",
{ type: "literal", value: "DISTINCT", description: "\"DISTINCT\"" },
",",
{ type: "literal", value: ",", description: "\",\"" },
function(d, e, es) {
cleanEx = [];
for(var i=0; i<es.length; i++) {
cleanEx.push(es[i][1]);
}
var args = {};
args.token = 'args';
args.value = [e].concat(cleanEx);
if(d==="DISTINCT") {
args.distinct = true;
} else {
args.distinct = false;
}
return args;
},
{ type: "other", description: "[63] ExpressionList" },
function(e, es) {
cleanEx = [];
for(var i=0; i<es.length; i++) {
cleanEx.push(es[i][1]);
}
var args = {};
args.token = 'args';
args.value = [e].concat(cleanEx);
return args;
},
{ type: "other", description: "[64] ConstructTemplate" },
function(ts) {
return ts;
},
{ type: "other", description: "[65] ConstructTriples" },
{ type: "other", description: "[66] TriplesSameSubject" },
function(s, pairs) {
var triplesContext = pairs.triplesContext;
var subject = s;
if(pairs.pairs) {
for(var i=0; i< pairs.pairs.length; i++) {
var pair = pairs.pairs[i];
var triple = null;
if(pair[1].length != null)
pair[1] = pair[1][0]
if(subject.token && subject.token==='triplesnodecollection') {
triple = {subject: subject.chainSubject[0], predicate: pair[0], object: pair[1]}
triplesContext.push(triple);
triplesContext = triplesContext.concat(subject.triplesContext);
} else {
triple = {subject: subject, predicate: pair[0], object: pair[1]}
triplesContext.push(triple);
}
}
}
var token = {};
token.token = "triplessamesubject";
token.triplesContext = triplesContext;
token.chainSubject = subject;
return token;
},
function(tn, pairs) {
var triplesContext = tn.triplesContext;
var subject = tn.chainSubject;
if(pairs.pairs) {
for(var i=0; i< pairs.pairs.length; i++) {
var pair = pairs.pairs[i];
if(pair[1].length != null)
pair[1] = pair[1][0]
if(tn.token === "triplesnodecollection") {
for(var j=0; j<subject.length; j++) {
var subj = subject[j];
if(subj.triplesContext != null) {
var triple = {subject: subj.chainSubject, predicate: pair[0], object: pair[1]}
triplesContext.concat(subj.triplesContext);
} else {
var triple = {subject: subject[j], predicate: pair[0], object: pair[1]}
triplesContext.push(triple);
}
}
} else {
var triple = {subject: subject, predicate: pair[0], object: pair[1]}
triplesContext.push(triple);
}
}
}
var token = {};
token.token = "triplessamesubject";
token.triplesContext = triplesContext;
token.chainSubject = subject;
return token;
},
{ type: "other", description: "[67] PropertyListNotEmpty" },
function(v, ol, rest) {
token = {}
token.token = 'propertylist';
var triplesContext = [];
var pairs = [];
var test = [];
for( var i=0; i<ol.length; i++) {
if(ol[i].triplesContext != null) {
triplesContext = triplesContext.concat(ol[i].triplesContext);
if(ol[i].token==='triplesnodecollection' && ol[i].chainSubject.length != null) {
pairs.push([v, ol[i].chainSubject[0]]);
} else {
pairs.push([v, ol[i].chainSubject]);
}
} else {
pairs.push([v, ol[i]])
}
}
for(var i=0; i<rest.length; i++) {
var tok = rest[i][3];
var newVerb = tok[0];
var newObjsList = tok[2] || [];
for(var j=0; j<newObjsList.length; j++) {
if(newObjsList[j].triplesContext != null) {
triplesContext = triplesContext.concat(newObjsList[j].triplesContext);
pairs.push([newVerb, newObjsList[j].chainSubject]);
} else {
pairs.push([newVerb, newObjsList[j]])
}
}
}
token.pairs = pairs;
token.triplesContext = triplesContext;
return token;
},
{ type: "other", description: "[68] PropertyList" },
{ type: "other", description: "[69] ObjectList" },
function(obj, objs) {
var toReturn = [];
toReturn.push(obj);
for(var i=0; i<objs.length; i++) {
for(var j=0; j<objs[i].length; j++) {
if(typeof(objs[i][j])=="object" && objs[i][j].token != null) {
toReturn.push(objs[i][j]);
}
}
}
return toReturn;
},
{ type: "other", description: "[70] Object" },
{ type: "other", description: "[71] Verb" },
function() {
return{token: 'uri', prefix:null, suffix:null, value:"http://www.w3.org/1999/02/22-rdf-syntax-ns#type"}
},
{ type: "other", description: "[72] TriplesSameSubjectPath" },
function(tn, pairs) {
var triplesContext = tn.triplesContext;
var subject = tn.chainSubject;
if(pairs.pairs) {
for(var i=0; i< pairs.pairs.length; i++) {
var pair = pairs.pairs[i];
if(pair[1].length != null)
pair[1] = pair[1][0]
if(tn.token === "triplesnodecollection") {
for(var j=0; j<subject.length; j++) {
var subj = subject[j];
if(subj.triplesContext != null) {
var triple = {subject: subj.chainSubject, predicate: pair[0], object: pair[1]}
triplesContext.concat(subj.triplesContext);
} else {
var triple = {subject: subject[j], predicate: pair[0], object: pair[1]}
triplesContext.push(triple);
}
}
} else {
var triple = {subject: subject, predicate: pair[0], object: pair[1]}
triplesContext.push(triple);
}
}
}
var token = {};
token.token = "triplessamesubject";
token.triplesContext = triplesContext;
token.chainSubject = subject;
return token;
},
{ type: "other", description: "[73] PropertyListNotEmptyPath" },
function(v, ol, rest) {
token = {}
token.token = 'propertylist';
var triplesContext = [];
var pairs = [];
var test = [];
for( var i=0; i<ol.length; i++) {
if(ol[i].triplesContext != null) {
triplesContext = triplesContext.concat(ol[i].triplesContext);
if(ol[i].token==='triplesnodecollection' && ol[i].chainSubject.length != null) {
pairs.push([v, ol[i].chainSubject[0]]);
} else {
pairs.push([v, ol[i].chainSubject]);
}
} else {
pairs.push([v, ol[i]])
}
}
for(var i=0; i<rest.length; i++) {
var tok = rest[i][3];
var newVerb = tok[0];
var newObjsList = tok[1] || [];
for(var j=0; j<newObjsList.length; j++) {
if(newObjsList[j].triplesContext != null) {
triplesContext = triplesContext.concat(newObjsList[j].triplesContext);
pairs.push([newVerb, newObjsList[j].chainSubject]);
} else {
pairs.push([newVerb, newObjsList[j]])
}
}
}
token.pairs = pairs;
token.triplesContext = triplesContext;
return token;
},
{ type: "other", description: "[74] PropertyListPath" },
{ type: "other", description: "[75]" },
function(p) {
var path = {};
path.token = 'path';
path.kind = 'element';
path.value = p;
return p;
},
{ type: "other", description: "[76] VerbSimple" },
{ type: "other", description: "[77] Path" },
{ type: "other", description: "[78] PathAlternative" },
"|",
{ type: "literal", value: "|", description: "\"|\"" },
function(first, rest) {
if(rest == null || rest.length === 0) {
return first;
} else {
var acum = [];
for(var i=0; i<rest.length; i++)
acum.push(rest[1]);
var path = {};
path.token = 'path';
path.kind = 'alternative';
path.value = acum;
return path;
}
},
{ type: "other", description: "[79] PathSequence" },
"/",
{ type: "literal", value: "/", description: "\"/\"" },
function(first, rest) {
if(rest == null || rest.length === 0) {
return first;
} else {
var acum = [first];
for(var i=0; i<rest.length; i++)
acum.push(rest[i][1]);
var path = {};
path.token = 'path';
path.kind = 'sequence';
path.value = acum;
return path;
}
},
{ type: "other", description: "[88] PathElt" },
function(p, mod) {
if(p.token && p.token != 'path' && mod == '') {
return p;
} else if(p.token && p.token != path && mod != '') {
var path = {};
path.token = 'path';
path.kind = 'element';
path.value = p;
path.modifier = mod;
return path;
} else {
p.modifier = mod;
return p;
}
},
{ type: "other", description: "[81] PathEltOrInverse" },
"^",
{ type: "literal", value: "^", description: "\"^\"" },
function(elt) {
var path = {};
path.token = 'path';
path.kind = 'inversePath';
path.value = elt;
return path;
},
{ type: "other", description: "[82] PathMod" },
"?",
{ type: "literal", value: "?", description: "\"?\"" },
"+",
{ type: "literal", value: "+", description: "\"+\"" },
{ type: "other", description: "[83] PathPrimary" },
function() {
return{token: 'uri', prefix:null, suffix:null, value:"http://www.w3.org/1999/02/22-rdf-syntax-ns#type"}
},
"!",
{ type: "literal", value: "!", description: "\"!\"" },
function(p) {
return p;
},
{ type: "other", description: "[85] PathOneInPropertySet" },
{ type: "other", description: "[86] Integer" },
{ type: "other", description: "[87] TriplesNode" },
function(c) {
triplesContext = [];
chainSubject = [];
var triple = null;
// catch NIL
/*
if(c.length == 1 && c[0].token && c[0].token === 'nil') {
GlobalBlankNodeCounter++;
return {token: "triplesnodecollection",
triplesContext:[{subject: {token:'blank', label:("_:"+GlobalBlankNodeCounter)},
predicate:{token:'uri', prefix:null, suffix:null, value:'http://www.w3.org/1999/02/22-rdf-syntax-ns#rest'},
object: {token:'blank', label:("_:"+(GlobalBlankNodeCounter+1))}}],
chainSubject:{token:'blank', label:("_:"+GlobalBlankNodeCounter)}};
}
*/
// other cases
for(var i=0; i<c.length; i++) {
GlobalBlankNodeCounter++;
//_:b0 rdf:first 1 ;
//rdf:rest _:b1 .
var nextObject = null;
if(c[i].chainSubject == null && c[i].triplesContext == null) {
nextObject = c[i];
} else {
nextObject = c[i].chainSubject;
triplesContext = triplesContext.concat(nextSubject.triplesContext);
}
var currentSubject = null;
triple = {subject: {token:'blank', label:("_:"+GlobalBlankNodeCounter)},
predicate:{token:'uri', prefix:null, suffix:null, value:'http://www.w3.org/1999/02/22-rdf-syntax-ns#first'},
object:nextObject };
if(i==0) {
chainSubject.push(triple.subject);
}
triplesContext.push(triple);
if(i===(c.length-1)) {
triple = {subject: {token:'blank', label:("_:"+GlobalBlankNodeCounter)},
predicate:{token:'uri', prefix:null, suffix:null, value:'http://www.w3.org/1999/02/22-rdf-syntax-ns#rest'},
object: {token:'uri', prefix:null, suffix:null, value:'http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'}};
} else {
triple = {subject: {token:'blank', label:("_:"+GlobalBlankNodeCounter)},
predicate:{token:'uri', prefix:null, suffix:null, value:'http://www.w3.org/1999/02/22-rdf-syntax-ns#rest'},
object: {token:'blank', label:("_:"+(GlobalBlankNodeCounter+1))} };
}
triplesContext.push(triple);
}
return {token:"triplesnodecollection", triplesContext:triplesContext, chainSubject:chainSubject};
},
{ type: "other", description: "[88] BlankNodePropertyList" },
"[",
{ type: "literal", value: "[", description: "\"[\"" },
"]",
{ type: "literal", value: "]", description: "\"]\"" },
function(pl) {
GlobalBlankNodeCounter++;
var subject = {token:'blank', label:'_:'+GlobalBlankNodeCounter};
var newTriples = [];
for(var i=0; i< pl.pairs.length; i++) {
var pair = pl.pairs[i];
var triple = {}
triple.subject = subject;
triple.predicate = pair[0];
if(pair[1].length != null)
pair[1] = pair[1][0]
triple.object = pair[1];
newTriples.push(triple);
}
return {token: 'triplesnode',
kind: 'blanknodepropertylist',
triplesContext: pl.triplesContext.concat(newTriples),
chainSubject: subject};
},
{ type: "other", description: "[89] Collection" },
function(gn) {
return gn;
},
{ type: "other", description: "[90] GraphNode" },
function(gn) {
return gn[1];
},
{ type: "other", description: "[91] VarOrTerm" },
{ type: "other", description: "[92] VarOrIRIref" },
{ type: "other", description: "[93] Var" },
function(v) {
var term = {};
term.token = 'var';
term.value = v;
return term;
},
{ type: "other", description: "[94] GraphTerm" },
{ type: "other", description: "[95] Expression" },
{ type: "other", description: "[96] ConditionalOrExpression" },
"||",
{ type: "literal", value: "||", description: "\"||\"" },
function(v, vs) {
if(vs.length === 0) {
return v;
}
var exp = {};
exp.token = "expression";
exp.expressionType = "conditionalor";
var ops = [v];
for(var i=0; i<vs.length; i++) {
ops.push(vs[i][3]);
}
exp.operands = ops;
return exp;
},
{ type: "other", description: "[97] ConditionalAndExpression" },
"&&",
{ type: "literal", value: "&&", description: "\"&&\"" },
function(v, vs) {
if(vs.length === 0) {
return v;
}
var exp = {};
exp.token = "expression";
exp.expressionType = "conditionaland";
var ops = [v];
for(var i=0; i<vs.length; i++) {
ops.push(vs[i][3]);
}
exp.operands = ops;
return exp;
},
{ type: "other", description: "[98] ValueLogical" },
{ type: "other", description: "[99] RelationalExpression" },
"=",
{ type: "literal", value: "=", description: "\"=\"" },
"!=",
{ type: "literal", value: "!=", description: "\"!=\"" },
"<",
{ type: "literal", value: "<", description: "\"<\"" },
">",
{ type: "literal", value: ">", description: "\">\"" },
"<=",
{ type: "literal", value: "<=", description: "\"<=\"" },
">=",
{ type: "literal", value: ">=", description: "\">=\"" },
function(op1, op2) {
if(op2.length === 0) {
return op1;
} else if(op2[0][1] === 'i' || op2[0][1] === 'I' || op2[0][1] === 'n' || op2[0][1] === 'N'){
var exp = {};
if(op2[0][1] === 'i' || op2[0][1] === 'I') {
var operator = "=";
exp.expressionType = "conditionalor"
} else {
var operator = "!=";
exp.expressionType = "conditionaland"
}
var lop = op1;
var rops = []
for(var opi=0; opi<op2[0].length; opi++) {
if(op2[0][opi].token ==="args") {
rops = op2[0][opi].value;
break;
}
}
exp.token = "expression";
exp.operands = [];
for(var i=0; i<rops.length; i++) {
var nextOperand = {};
nextOperand.token = "expression";
nextOperand.expressionType = "relationalexpression";
nextOperand.operator = operator;
nextOperand.op1 = lop;
nextOperand.op2 = rops[i];
exp.operands.push(nextOperand);
}
return exp;
} else {
var exp = {};
exp.expressionType = "relationalexpression"
exp.operator = op2[0][1];
exp.op1 = op1;
exp.op2 = op2[0][3];
exp.token = "expression";
return exp;
}
},
{ type: "other", description: "[100] NumericExpression" },
{ type: "other", description: "[101] AdditiveExpression" },
"-",
{ type: "literal", value: "-", description: "\"-\"" },
function(op1, ops) {
if(ops.length === 0) {
return op1;
}
var ex = {};
ex.token = 'expression';
ex.expressionType = 'additiveexpression';
ex.summand = op1;
ex.summands = [];
for(var i=0; i<ops.length; i++) {
var summand = ops[i];
var sum = {};
if(summand.length == 4 && typeof(summand[1]) === "string") {
sum.operator = summand[1];
sum.expression = summand[3];
} else {
var subexp = {}
var firstFactor = sum[0];
var operator = sum[1][1];
var secondFactor = sum[1][3];
var operator = null;
if(firstFactor.value < 0) {
sum.operator = '-';
firstFactor.value = - firstFactor.value;
} else {
sum.operator = '+';
}
subexp.token = 'expression';
subexp.expressionType = 'multiplicativeexpression';
subexp.operator = firstFactor;
subexp.factors = [{operator: operator, expression: secondFactor}];
sum.expression = subexp;
}
ex.summands.push(sum);
}
return ex;
},
{ type: "other", description: "[102] MultiplicativeExpression" },
function(exp, exps) {
if(exps.length === 0) {
return exp;
}
var ex = {};
ex.token = 'expression';
ex.expressionType = 'multiplicativeexpression';
ex.factor = exp;
ex.factors = [];
for(var i=0; i<exps.length; i++) {
var factor = exps[i];
var fact = {};
fact.operator = factor[1];
fact.expression = factor[3];
ex.factors.push(fact);
}
return ex;
},
{ type: "other", description: "[103] UnaryExpression" },
function(e) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'unaryexpression';
ex.unaryexpression = "!";
ex.expression = e;
return ex;
},
function(v) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'unaryexpression';
ex.unaryexpression = "+";
ex.expression = v;
return ex;
},
function(v) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'unaryexpression';
ex.unaryexpression = "-";
ex.expression = v;
return ex;
},
{ type: "other", description: "[104] PrimaryExpression" },
function(v) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'atomic';
ex.primaryexpression = 'rdfliteral';
ex.value = v;
return ex;
},
function(v) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'atomic';
ex.primaryexpression = 'numericliteral';
ex.value = v;
return ex;
},
function(v) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'atomic';
ex.primaryexpression = 'booleanliteral';
ex.value = v;
return ex;
},
function(v) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'atomic';
ex.primaryexpression = 'var';
ex.value = v;
return ex;
},
{ type: "other", description: "[105] BrackettedExpression" },
function(e) {
return e;
},
{ type: "other", description: "[106] BuiltInCall" },
function(e) {
var ex = {};
ex.token = 'expression'
ex.expressionType = 'builtincall'
ex.builtincall = 'str'
ex.args = [e]
return ex;
},
function(e) {
var ex = {};
ex.token = 'expression'
ex.expressionType = 'builtincall'
ex.builtincall = 'lang'
ex.args = [e]
return ex;
},
"LANGMATCHES",
{ type: "literal", value: "LANGMATCHES", description: "\"LANGMATCHES\"" },
function(e1, e2) {
var ex = {};
ex.token = 'expression'
ex.expressionType = 'builtincall'
ex.builtincall = 'langmatches'
ex.args = [e1,e2]
return ex;
},
function(e) {
var ex = {};
ex.token = 'expression'
ex.expressionType = 'builtincall'
ex.builtincall = 'datatype'
ex.args = [e]
return ex;
},
"BOUND",
{ type: "literal", value: "BOUND", description: "\"BOUND\"" },
function(v) {
var ex = {};
ex.token = 'expression'
ex.expressionType = 'builtincall'
ex.builtincall = 'bound'
ex.args = [v]
return ex;
},
"IRI",
{ type: "literal", value: "IRI", description: "\"IRI\"" },
function(e) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'builtincall';
ex.builtincall = 'iri'
ex.args = [e];
return ex;
},
"URI",
{ type: "literal", value: "URI", description: "\"URI\"" },
function(e) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'builtincall';
ex.builtincall = 'uri'
ex.args = [e];
return ex;
},
"BNODE",
{ type: "literal", value: "BNODE", description: "\"BNODE\"" },
function(arg) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'builtincall';
ex.builtincall = 'bnode';
if(arg.length === 5) {
ex.args = [arg[2]];
} else {
ex.args = null;
}
return ex;
},
"COALESCE",
{ type: "literal", value: "COALESCE", description: "\"COALESCE\"" },
function(args) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'builtincall';
ex.builtincall = 'coalesce';
ex.args = args;
return ex;
},
"IF",
{ type: "literal", value: "IF", description: "\"IF\"" },
function(test, trueCond, falseCond) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'builtincall';
ex.builtincall = 'if';
ex.args = [test,trueCond,falseCond];
return ex;
},
"ISLITERAL",
{ type: "literal", value: "ISLITERAL", description: "\"ISLITERAL\"" },
function(arg) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'builtincall';
ex.builtincall = 'isliteral';
ex.args = [arg];
return ex;
},
"ISBLANK",
{ type: "literal", value: "ISBLANK", description: "\"ISBLANK\"" },
function(arg) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'builtincall';
ex.builtincall = 'isblank';
ex.args = [arg];
return ex;
},
"SAMETERM",
{ type: "literal", value: "SAMETERM", description: "\"SAMETERM\"" },
function(e1, e2) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'builtincall';
ex.builtincall = 'sameterm';
ex.args = [e1, e2];
return ex;
},
function(arg) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'builtincall';
ex.builtincall = 'isuri';
ex.args = [arg];
return ex;
},
{ type: "other", description: "[107] RegexExpression" },
function(e1, e2, eo) {
var regex = {};
regex.token = 'expression';
regex.expressionType = 'regex';
regex.text = e1;
regex.pattern = e2;
regex.flags = eo[2];
return regex;
},
{ type: "other", description: "[108] ExistsFunc" },
function(ggp) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'builtincall';
ex.builtincall = 'exists';
ex.args = [ggp];
return ex;
},
{ type: "other", description: "[109] NotExistsFunc" },
function(ggp) {
var ex = {};
ex.token = 'expression';
ex.expressionType = 'builtincall';
ex.builtincall = 'notexists';
ex.args = [ggp];
return ex;
},
{ type: "other", description: "[110] Aggregate" },
function(d, e) {
exp = {};
exp.token = 'expression';
exp.expressionType = 'aggregate';
exp.aggregateType = 'count';
exp.distinct = (d != "" ? 'DISTINCT' : d);
exp.expression = e;
return exp;
},
function(d, e) {
exp = {};
exp.token = 'expression';
exp.expressionType = 'aggregate';
exp.aggregateType = 'sum';
exp.distinct = (d != "" ? 'DISTINCT' : d);
exp.expression = e;
return exp;
},
function(d, e) {
exp = {};
exp.token = 'expression';
exp.expressionType = 'aggregate';
exp.aggregateType = 'min';
exp.distinct = (d != "" ? 'DISTINCT' : d);
exp.expression = e;
return exp;
},
function(d, e) {
exp = {};
exp.token = 'expression'
exp.expressionType = 'aggregate'
exp.aggregateType = 'max'
exp.distinct = (d != "" ? 'DISTINCT' : d);
exp.expression = e
return exp
},
"V",
{ type: "literal", value: "V", description: "\"V\"" },
"v",
{ type: "literal", value: "v", description: "\"v\"" },
function(d, e) {
exp = {};
exp.token = 'expression'
exp.expressionType = 'aggregate'
exp.aggregateType = 'avg'
exp.distinct = (d != "" ? 'DISTINCT' : d);
exp.expression = e
return exp
},
{ type: "other", description: "[117] IRIrefOrFunction" },
function(i, args) {
var fcall = {};
fcall.token = "expression";
fcall.expressionType = 'irireforfunction';
fcall.iriref = i;
fcall.args = args.value;
return fcall;
},
{ type: "other", description: "[112] RDFLiteral" },
"^^",
{ type: "literal", value: "^^", description: "\"^^\"" },
function(s, e) {
if(typeof(e) === "string" && e.length > 0) {
return {token:'literal', value:s.value, lang:e.slice(1), type:null}
} else {
if(typeof(e) === "object") {
e.shift(); // remove the '^^' char
return {token:'literal', value:s.value, lang:null, type:e[0] }
} else {
return { token:'literal', value:s.value, lang:null, type:null }
}
}
},
{ type: "other", description: "[113] NumericLiteral" },
{ type: "other", description: "[114] NumericLiteralUnsigned" },
{ type: "other", description: "[115] NumericLiteralPositive" },
{ type: "other", description: "[116] NumericLiteralNegative" },
{ type: "other", description: "[117] BooleanLiteral" },
function() {
lit = {};
lit.token = "literal";
lit.lang = null;
lit.type = "http://www.w3.org/2001/XMLSchema#boolean";
lit.value = true;
return lit;
},
function() {
lit = {};
lit.token = "literal";
lit.lang = null;
lit.type = "http://www.w3.org/2001/XMLSchema#boolean";
lit.value = false;
return lit;
},
{ type: "other", description: "[118] String" },
function(s) { return {token:'string', value:s} },
{ type: "other", description: "[119] IRIref" },
function(iri) { return {token: 'uri', prefix:null, suffix:null, value:iri} },
function(p) { return p },
{ type: "other", description: "[120] PrefixedName" },
function(p) { return {token: 'uri', prefix:p[0], suffix:p[1], value:null } },
function(p) { return {token: 'uri', prefix:p, suffix:'', value:null } },
{ type: "other", description: "[121] BlankNode" },
function(l) { return {token:'blank', label:l}},
function() { GlobalBlankNodeCounter++; return {token:'blank', label:'_:'+GlobalBlankNodeCounter} },
{ type: "other", description: "[122] IRI_REF" },
/^[^<>"{}|\^`\\]/,
{ type: "class", value: "[^<>\"{}|\\^`\\\\]", description: "[^<>\"{}|\\^`\\\\]" },
function(iri_ref) { return iri_ref.join('') },
{ type: "other", description: "[123] PNAME_NS" },
{ type: "other", description: "[124] PNAME_LN" },
function(p, s) { return [p, s] },
{ type: "other", description: "[125] BLANK_NODE_LABEL" },
"_:",
{ type: "literal", value: "_:", description: "\"_:\"" },
function(l) { return l },
{ type: "other", description: "[126] VAR1" },
function(v) { return v },
{ type: "other", description: "[127] VAR2" },
"$",
{ type: "literal", value: "$", description: "\"$\"" },
{ type: "other", description: "[128] LANGTAG" },
"@",
{ type: "literal", value: "@", description: "\"@\"" },
/^[a-zA-Z]/,
{ type: "class", value: "[a-zA-Z]", description: "[a-zA-Z]" },
/^[a-zA-Z0-9]/,
{ type: "class", value: "[a-zA-Z0-9]", description: "[a-zA-Z0-9]" },
function(a, b) {
if(b.length===0) {
return ("@"+a.join('')).toLowerCase();
} else {
return ("@"+a.join('')+"-"+b[0][1].join('')).toLowerCase();
}
},
{ type: "other", description: "[129] INTEGER" },
/^[0-9]/,
{ type: "class", value: "[0-9]", description: "[0-9]" },
function(d) {
lit = {};
lit.token = "literal";
lit.lang = null;
lit.type = "http://www.w3.org/2001/XMLSchema#integer";
lit.value = flattenString(d);
return lit;
},
{ type: "other", description: "[130] DECIMAL" },
function(a, b, c) {
lit = {};
lit.token = "literal";
lit.lang = null;
lit.type = "http://www.w3.org/2001/XMLSchema#decimal";
lit.value = flattenString([a,b,c]);
return lit;
},
function(a, b) {
lit = {};
lit.token = "literal";
lit.lang = null;
lit.type = "http://www.w3.org/2001/XMLSchema#decimal";
lit.value = flattenString([a,b]);
return lit;
},
{ type: "other", description: "[131] DOUBLE" },
function(a, b, c, e) {
lit = {};
lit.token = "literal";
lit.lang = null;
lit.type = "http://www.w3.org/2001/XMLSchema#double";
lit.value = flattenString([a,b,c,e]);
return lit;
},
function(a, b, c) {
lit = {};
lit.token = "literal";
lit.lang = null;
lit.type = "http://www.w3.org/2001/XMLSchema#double";
lit.value = flattenString([a,b,c]);
return lit;
},
function(a, b) {
lit = {};
lit.token = "literal";
lit.lang = null;
lit.type = "http://www.w3.org/2001/XMLSchema#double";
lit.value = flattenString([a,b]);
return lit;
},
{ type: "other", description: "[132] INTEGER_POSITIVE" },
function(d) { d.value = "+"+d.value; return d; },
{ type: "other", description: "[133] DECIMAL_POSITIVE" },
function(d) { d.value = "+"+d.value; return d },
{ type: "other", description: "[134] DOUBLE_POSITIVE" },
{ type: "other", description: "[135] INTEGER_NEGATIVE" },
function(d) { d.value = "-"+d.value; return d; },
{ type: "other", description: "[136] DECIMAL_NEGATIVE" },
{ type: "other", description: "[137] DOUBLE_NEGATIVE" },
{ type: "other", description: "[138] EXPONENT" },
/^[eE]/,
{ type: "class", value: "[eE]", description: "[eE]" },
/^[+\-]/,
{ type: "class", value: "[+\\-]", description: "[+\\-]" },
function(a, b, c) { return flattenString([a,b,c]) },
{ type: "other", description: "[139] STRING_LITERAL1" },
"'",
{ type: "literal", value: "'", description: "\"'\"" },
/^[^'\\\n\r]/,
{ type: "class", value: "[^'\\\\\\n\\r]", description: "[^'\\\\\\n\\r]" },
function(content) { return flattenString(content) },
{ type: "other", description: "[140] STRING_LITERAL2" },
"\"",
{ type: "literal", value: "\"", description: "\"\\\"\"" },
/^[^"\\\n\r]/,
{ type: "class", value: "[^\"\\\\\\n\\r]", description: "[^\"\\\\\\n\\r]" },
{ type: "other", description: "[141] STRING_LITERAL_LONG1" },
"'''",
{ type: "literal", value: "'''", description: "\"'''\"" },
/^[^'\\]/,
{ type: "class", value: "[^'\\\\]", description: "[^'\\\\]" },
{ type: "other", description: "[142] STRING_LITERAL_LONG2" },
"\"\"\"",
{ type: "literal", value: "\"\"\"", description: "\"\\\"\\\"\\\"\"" },
/^[^"\\]/,
{ type: "class", value: "[^\"\\\\]", description: "[^\"\\\\]" },
{ type: "other", description: "[143] ECHAR" },
"\\",
{ type: "literal", value: "\\", description: "\"\\\\\"" },
/^[tbnrf"']/,
{ type: "class", value: "[tbnrf\"']", description: "[tbnrf\"']" },
{ type: "other", description: "[144] NIL" },
function() {
return {token: "triplesnodecollection",
triplesContext:[],
chainSubject:[{token:'uri', value:"http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"}]};
},
{ type: "other", description: "[145] WS" },
/^[ ]/,
{ type: "class", value: "[ ]", description: "[ ]" },
/^[\t]/,
{ type: "class", value: "[\\t]", description: "[\\t]" },
/^[\r]/,
{ type: "class", value: "[\\r]", description: "[\\r]" },
/^[\n]/,
{ type: "class", value: "[\\n]", description: "[\\n]" },
{ type: "other", description: " COMMENT" },
"#",
{ type: "literal", value: "#", description: "\"#\"" },
/^[^\n\r]/,
{ type: "class", value: "[^\\n\\r]", description: "[^\\n\\r]" },
{ type: "other", description: "[146] ANON" },
{ type: "other", description: "[147] PN_CHARS_BASE" },
/^[A-Z]/,
{ type: "class", value: "[A-Z]", description: "[A-Z]" },
/^[a-z]/,
{ type: "class", value: "[a-z]", description: "[a-z]" },
/^[\xC0-\xD6]/,
{ type: "class", value: "[\\xC0-\\xD6]", description: "[\\xC0-\\xD6]" },
/^[\xD8-\xF6]/,
{ type: "class", value: "[\\xD8-\\xF6]", description: "[\\xD8-\\xF6]" },
/^[\xF8-\u02FF]/,
{ type: "class", value: "[\\xF8-\\u02FF]", description: "[\\xF8-\\u02FF]" },
/^[\u0370-\u037D]/,
{ type: "class", value: "[\\u0370-\\u037D]", description: "[\\u0370-\\u037D]" },
/^[\u037F-\u1FFF]/,
{ type: "class", value: "[\\u037F-\\u1FFF]", description: "[\\u037F-\\u1FFF]" },
/^[\u200C-\u200D]/,
{ type: "class", value: "[\\u200C-\\u200D]", description: "[\\u200C-\\u200D]" },
/^[\u2070-\u218F]/,
{ type: "class", value: "[\\u2070-\\u218F]", description: "[\\u2070-\\u218F]" },
/^[\u2C00-\u2FEF]/,
{ type: "class", value: "[\\u2C00-\\u2FEF]", description: "[\\u2C00-\\u2FEF]" },
/^[\u3001-\uD7FF]/,
{ type: "class", value: "[\\u3001-\\uD7FF]", description: "[\\u3001-\\uD7FF]" },
/^[\uF900-\uFDCF]/,
{ type: "class", value: "[\\uF900-\\uFDCF]", description: "[\\uF900-\\uFDCF]" },
/^[\uFDF0-\uFFFD]/,
{ type: "class", value: "[\\uFDF0-\\uFFFD]", description: "[\\uFDF0-\\uFFFD]" },
/^[\u1000-\uEFFF]/,
{ type: "class", value: "[\\u1000-\\uEFFF]", description: "[\\u1000-\\uEFFF]" },
{ type: "other", description: "[148] PN_CHARS_U" },
"_",
{ type: "literal", value: "_", description: "\"_\"" },
{ type: "other", description: "[149] VARNAME" },
/^[\xB7]/,
{ type: "class", value: "[\\xB7]", description: "[\\xB7]" },
/^[\u0300-\u036F]/,
{ type: "class", value: "[\\u0300-\\u036F]", description: "[\\u0300-\\u036F]" },
/^[\u203F-\u2040]/,
{ type: "class", value: "[\\u203F-\\u2040]", description: "[\\u203F-\\u2040]" },
function(init, rpart) { return init+rpart.join('') },
{ type: "other", description: "[150] PN_CHARS" },
{ type: "other", description: "[151] PN_PREFIX" },
function(base, rest) { if(rest[rest.length-1] == '.'){
throw new Error("Wrong PN_PREFIX, cannot finish with '.'")
} else {
return base + rest.join('');
}},
{ type: "other", description: "[152] PN_LOCAL" },
function(base, rest) {
return base + rest.join('');
}
],
peg$bytecode = [
peg$decode("7!*# \"7'"),
peg$decode("7\"*# \"7C"),
peg$decode("87#9*\" 3 "),
peg$decode("8!7$+E$7,*/ \"7/*) \"70*# \"71+)%4\"6#\"\"! %$\"# \"\"# \"9*\" 3!"),
peg$decode("8!7%*# \" %+M$ &7\xB7,#&7\xB7\"+;% &7&,#&7&\"+)%4#6'#\"\" %$## \"$\"# \"\"# \"9*\" 3$"),
peg$decode("8! &7\xB7,#&7\xB7\"+\xB4$.)\"\"2)3**) \".+\"\"2+3,+\x98%.-\"\"2-3.*) \"./\"\"2/30+|%.1\"\"2132*) \".3\"\"2334+`%.5\"\"2536*) \".7\"\"2738+D% &7\xB7,#&7\xB7\"+2%7\xA0+(%4'69'! %$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3("),
peg$decode("8! &7\xB7,#&7\xB7\"+\u0109$.;\"\"2;3<*) \".=\"\"2=3>+\xED%.?\"\"2?3@*) \".A\"\"2A3B+\xD1%.5\"\"2536*) \".7\"\"2738+\xB5%.C\"\"2C3D*) \".E\"\"2E3F+\x99%.G\"\"2G3H*) \".I\"\"2I3J+}%.K\"\"2K3L*) \".M\"\"2M3N+a% &7\xB7,#&7\xB7\"+O%7\xA1+E% &7\xB7,#&7\xB7\"+3%7\xA0+)%4+6O+\"\" %$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3:"),
peg$decode("! &7(,#&7(\"+' 4!6P!! %"),
peg$decode("! &7\xB7,#&7\xB7\"+f$7)+\\% &7\xB7,#&7\xB7\"+J%.Q\"\"2Q3R+:% &7\xB7,#&7\xB7\"+(%4%6S%!#%$%# \"$$# \"$## \"$\"# \"\"# \"*l \"! &7\xB7,#&7\xB7\"+D$7Z+:% &7\xB7,#&7\xB7\"+(%4#6T#!!%$## \"$\"# \"\"# \"*2 \" &7\xB7+&$,#&7\xB7\"\"\" \""),
peg$decode("7+*# \"7*"),
peg$decode("! &7\xB7,#&7\xB7\"+[$.U\"\"2U3V+K% &7\xB7+&$,#&7\xB7\"\"\" \"+2%7\xA0+(%4$69$! %$$# \"$## \"$\"# \"\"# \""),
peg$decode("! &7\xB7,#&7\xB7\"+\x8E$.W\"\"2W3X+~% &7\xB7+&$,#&7\xB7\"\"\" \"+e%7\xBE*# \" %+U%.Y\"\"2Y3Z+E% &7\xB7,#&7\xB7\"+3%7\xA0+)%4'6O'\"# %$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \""),
peg$decode("8!7.+\xA3$ &7\xB7,#&7\xB7\"+\x91% &72,#&72\"+% &7\xB7,#&7\xB7\"+m%76+c% &7\xB7,#&7\xB7\"+Q%77+G% &7\xB7,#&7\xB7\"+5%7A++%4)6\\)$(&$\"%$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3["),
peg$decode("8!7.+7$76+-%77+#%'#%$## \"$\"# \"\"# \"9*\" 3]"),
peg$decode("8! &7\xB7,#&7\xB7\"+\u0521$.1\"\"2132*) \".3\"\"2334+\u0505%.5\"\"2536*) \".7\"\"2738+\u04E9%._\"\"2_3`*) \".a\"\"2a3b+\u04CD%.5\"\"2536*) \".7\"\"2738+\u04B1%.c\"\"2c3d*) \".e\"\"2e3f+\u0495%.g\"\"2g3h*) \".i\"\"2i3j+\u0479% &7\xB7,#&7\xB7\"+\u0467%!.k\"\"2k3l*) \".m\"\"2m3n+\xE7$.G\"\"2G3H*) \".I\"\"2I3J+\xCB%.1\"\"2132*) \".3\"\"2334+\xAF%.g\"\"2g3h*) \".i\"\"2i3j+\x93%.G\"\"2G3H*) \".I\"\"2I3J+w%.o\"\"2o3p*) \".q\"\"2q3r+[%.c\"\"2c3d*) \".e\"\"2e3f+?%.g\"\"2g3h*) \".i\"\"2i3j+#%'(%$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\xE8 \"!.?\"\"2?3@*) \".A\"\"2A3B+\xCB$.5\"\"2536*) \".7\"\"2738+\xAF%.k\"\"2k3l*) \".m\"\"2m3n+\x93%.s\"\"2s3t*) \".u\"\"2u3v+w%.c\"\"2c3d*) \".e\"\"2e3f+[%.5\"\"2536*) \".7\"\"2738+?%.k\"\"2k3l*) \".m\"\"2m3n+#%''%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+\u02AB% &7\xB7,#&7\xB7\"+\u0299% &! &7\xB7,#&7\xB7\"+?$7\x83+5% &7\xB7,#&7\xB7\"+#%'#%$## \"$\"# \"\"# \"*\xFC \"! &7\xB7,#&7\xB7\"+\xE9$.w\"\"2w3x+\xD9% &7\xB7,#&7\xB7\"+\xC7%7\x85+\xBD% &7\xB7,#&7\xB7\"+\xAB%.-\"\"2-3.*) \"./\"\"2/30+\x8F%.1\"\"2132*) \".3\"\"2334+s% &7\xB7,#&7\xB7\"+a%7\x83+W% &7\xB7,#&7\xB7\"+E%.y\"\"2y3z+5% &7\xB7,#&7\xB7\"+#%',%$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"+\u0134$,\u0131&! &7\xB7,#&7\xB7\"+?$7\x83+5% &7\xB7,#&7\xB7\"+#%'#%$## \"$\"# \"\"# \"*\xFC \"! &7\xB7,#&7\xB7\"+\xE9$.w\"\"2w3x+\xD9% &7\xB7,#&7\xB7\"+\xC7%7\x85+\xBD% &7\xB7,#&7\xB7\"+\xAB%.-\"\"2-3.*) \"./\"\"2/30+\x8F%.1\"\"2132*) \".3\"\"2334+s% &7\xB7,#&7\xB7\"+a%7\x83+W% &7\xB7,#&7\xB7\"+E%.y\"\"2y3z+5% &7\xB7,#&7\xB7\"+#%',%$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"\"\"\" \"*X \"! &7\xB7,#&7\xB7\"+E$.{\"\"2{3|+5% &7\xB7,#&7\xB7\"+#%'#%$## \"$\"# \"\"# \"+)%4+6}+\"\" %$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3^"),
peg$decode("8! &7\xB7,#&7\xB7\"+\u019F$.c\"\"2c3d*) \".e\"\"2e3f+\u0183%.\"\"23\x80*) \".\x81\"\"2\x813\x82+\u0167%.o\"\"2o3p*) \".q\"\"2q3r+\u014B%.1\"\"2132*) \".3\"\"2334+\u012F%.g\"\"2g3h*) \".i\"\"2i3j+\u0113%.?\"\"2?3@*) \".A\"\"2A3B+\xF7%.s\"\"2s3t*) \".u\"\"2u3v+\xDB%.c\"\"2c3d*) \".e\"\"2e3f+\xBF%.g\"\"2g3h*) \".i\"\"2i3j+\xA3% &7\xB7,#&7\xB7\"+\x91%7f+\x87% &7\xB7,#&7\xB7\"+u% &72,#&72\"+c% &7\xB7,#&7\xB7\"+Q%76+G% &7\xB7,#&7\xB7\"+5%77++%426\x832$&$\" %$2# \"$1# \"$0# \"$/# \"$.# \"$-# \"$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3~"),
peg$decode("8!.\x85\"\"2\x853\x86+t$ &7\x82+&$,#&7\x82\"\"\" \"*) \".{\"\"2{3|+O% &72,#&72\"+=%76*# \" %+-%77+#%'%%$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\x84"),
peg$decode("8! &7\xB7,#&7\xB7\"+\xBD$.-\"\"2-3.*) \"./\"\"2/30+\xA1%.1\"\"2132*) \".3\"\"2334+\x85%.\x88\"\"2\x883\x89*) \".\x8A\"\"2\x8A3\x8B+i% &7\xB7,#&7\xB7\"+W% &72,#&72\"+E% &7\xB7,#&7\xB7\"+3%76+)%4(6\x8C(\"\" %$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\x87"),
peg$decode("8!.C\"\"2C3D*) \".E\"\"2E3F+\xB0$.?\"\"2?3@*) \".A\"\"2A3B+\x94%.\"\"23\x80*) \".\x81\"\"2\x813\x82+x%.\x8E\"\"2\x8E3\x8F*) \".\x90\"\"2\x903\x91+\\% &7\xB7,#&7\xB7\"+J%73*# \"74+:% &7\xB7,#&7\xB7\"+(%4'6\x92'!!%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\x8D"),
peg$decode("8! &7\xB7,#&7\xB7\"+2$75+(%4\"6\x94\"! %$\"# \"\"# \"9*\" 3\x93"),
peg$decode("8!.o\"\"2o3p*) \".q\"\"2q3r+\xB4$.-\"\"2-3.*) \"./\"\"2/30+\x98%.\x8E\"\"2\x8E3\x8F*) \".\x90\"\"2\x903\x91+|%.5\"\"2536*) \".7\"\"2738+`%.k\"\"2k3l*) \".m\"\"2m3n+D% &7\xB7,#&7\xB7\"+2%75+(%4'6\x96'! %$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\x95"),
peg$decode("87\x9D9*\" 3\x97"),
peg$decode("8!!.\x99\"\"2\x993\x9A*) \".\x9B\"\"2\x9B3\x9C+\x93$.\x9D\"\"2\x9D3\x9E*) \".\x9F\"\"2\x9F3\xA0+w%.5\"\"2536*) \".7\"\"2738+[%.?\"\"2?3@*) \".A\"\"2A3B+?%.5\"\"2536*) \".7\"\"2738+#%'%%$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+V$ &7\xB7,#&7\xB7\"+D%7X+:% &7\xB7,#&7\xB7\"+(%4$6\xA1$!!%$$# \"$## \"$\"# \"\"# \"9*\" 3\x98"),
peg$decode("8!78*# \" %+Z$7:*# \" %+J%7<*# \" %+:%7>*# \" %+*%4$6\xA3$##! %$$# \"$## \"$\"# \"\"# \"9*\" 3\xA2"),
peg$decode("8!.\xA5\"\"2\xA53\xA6*) \".\xA7\"\"2\xA73\xA8+\u010D$.?\"\"2?3@*) \".A\"\"2A3B+\xF1%.\"\"23\x80*) \".\x81\"\"2\x813\x82+\xD5%.s\"\"2s3t*) \".u\"\"2u3v+\xB9%.;\"\"2;3<*) \".=\"\"2=3>+\x9D% &7\xB7,#&7\xB7\"+\x8B%.)\"\"2)3**) \".+\"\"2+3,+o%.\xA9\"\"2\xA93\xAA*) \".\xAB\"\"2\xAB3\xAC+S% &7\xB7,#&7\xB7\"+A% &79+&$,#&79\"\"\" \"+(%4*6\xAD*! %$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xA4"),
peg$decode("8! &7\xB7,#&7\xB7\"+D$7\x90+:% &7\xB7,#&7\xB7\"+(%4#6\xAF#!!%$## \"$\"# \"\"# \"*\u0187 \"! &7\xB7,#&7\xB7\"+D$7c+:% &7\xB7,#&7\xB7\"+(%4#6\xB0#!!%$## \"$\"# \"\"# \"*\u014D \"! &7\xB7,#&7\xB7\"+\u0100$.w\"\"2w3x+\xF0% &7\xB7,#&7\xB7\"+\xDE%7\x85+\xD4% &7\xB7,#&7\xB7\"+\xC2%!.-\"\"2-3.*) \"./\"\"2/30+[$.1\"\"2132*) \".3\"\"2334+?% &7\xB7,#&7\xB7\"+-%7\x83+#%'$%$$# \"$## \"$\"# \"\"# \"*# \" %+]% &7\xB7,#&7\xB7\"+K%.y\"\"2y3z+;% &7\xB7,#&7\xB7\"+)%4)6\xB1)\"%#%$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*W \"! &7\xB7,#&7\xB7\"+D$7\x83+:% &7\xB7,#&7\xB7\"+(%4#6\xB2#!!%$## \"$\"# \"\"# \"9*\" 3\xAE"),
peg$decode("8!.\xB4\"\"2\xB43\xB5+<$ &7;+&$,#&7;\"\"\" \"+#%'\"%$\"# \"\"# \"9*\" 3\xB3"),
peg$decode("87b9*\" 3\xB6"),
peg$decode("8!.\"\"23\x80*) \".\x81\"\"2\x813\x82+\u011F$.?\"\"2?3@*) \".A\"\"2A3B+\u0103%.k\"\"2k3l*) \".m\"\"2m3n+\xE7%.5\"\"2536*) \".7\"\"2738+\xCB%.?\"\"2?3@*) \".A\"\"2A3B+\xAF% &7\xB7,#&7\xB7\"+\x9D%.)\"\"2)3**) \".+\"\"2+3,+\x81%.\xA9\"\"2\xA93\xAA*) \".\xAB\"\"2\xAB3\xAC+e% &7\xB7,#&7\xB7\"+S% &7=+&$,#&7=\"\"\" \"+:% &7\xB7,#&7\xB7\"+(%4+6\xB8+!!%$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xB7"),
peg$decode("8!.\xBA\"\"2\xBA3\xBB*) \".\xBC\"\"2\xBC3\xBD+W$ &7\xB7,#&7\xB7\"+E%7\x8F+;% &7\xB7,#&7\xB7\"+)%4$6\xBE$\"#!%$$# \"$## \"$\"# \"\"# \"*K \"!7b*# \"7\x83+:$ &7\xB7,#&7\xB7\"+(%4\"6\xBF\"!!%$\"# \"\"# \"9*\" 3\xB9"),
peg$decode("8!!7?+3$7@*# \" %+#%'\"%$\"# \"\"# \"*> \"!7@+3$7?*# \" %+#%'\"%$\"# \"\"# \"+' 4!6\xC1!! %9*\" 3\xC0"),
peg$decode("8!._\"\"2_3`*) \".a\"\"2a3b+\xC6$.G\"\"2G3H*) \".I\"\"2I3J+\xAA%.\x8E\"\"2\x8E3\x8F*) \".\x90\"\"2\x903\x91+\x8E%.G\"\"2G3H*) \".I\"\"2I3J+r%.g\"\"2g3h*) \".i\"\"2i3j+V% &7\xB7,#&7\xB7\"+D%7\xA7+:% &7\xB7,#&7\xB7\"+(%4(6\xC3(!!%$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xC2"),
peg$decode("8!.\"\"23\x80*) \".\x81\"\"2\x813\x82+\xE2$.C\"\"2C3D*) \".E\"\"2E3F+\xC6%.C\"\"2C3D*) \".E\"\"2E3F+\xAA%.1\"\"2132*) \".3\"\"2334+\x8E%.5\"\"2536*) \".7\"\"2738+r%.g\"\"2g3h*) \".i\"\"2i3j+V% &7\xB7,#&7\xB7\"+D%7\xA7+:% &7\xB7,#&7\xB7\"+(%4)6\xC5)!!%$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xC4"),
peg$decode("8!.\xC7\"\"2\xC73\xC8+\xE7$ &7\x83,#&7\x83\"+\xD5%.\xC9\"\"2\xC93\xCA+\xC5% &!.w\"\"2w3x+L$ &7B+&$,#&7B\"\"\" \"+3%.y\"\"2y3z+#%'#%$## \"$\"# \"\"# \"*# \"7\xB6,c&!.w\"\"2w3x+L$ &7B+&$,#&7B\"\"\" \"+3%.y\"\"2y3z+#%'#%$## \"$\"# \"\"# \"*# \"7\xB6\"+3%.\xCB\"\"2\xCB3\xCC+#%'%%$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %9*\" 3\xC6"),
peg$decode("87\x9D*; \"7\x96*5 \"7\x97*/ \"7\x9B*) \".\xCE\"\"2\xCE3\xCF9*\" 3\xCD"),
peg$decode("87D9*\" 3\xD0"),
peg$decode("8!7$+\x9B$ &7\xB7,#&7\xB7\"+\x89%7E+%! &7\xB7,#&7\xB7\"+U$.\xD2\"\"2\xD23\xD3+E% &7\xB7,#&7\xB7\"+3%7D*# \" %+#%'$%$$# \"$## \"$\"# \"\"# \"*# \" %+*%4$6\xD4$##! %$$# \"$## \"$\"# \"\"# \"9*\" 3\xD1"),
peg$decode("87F*G \"7G*A \"7H*; \"7I*5 \"7J*/ \"7K*) \"7L*# \"7M9*\" 3\xD5"),
peg$decode("8!._\"\"2_3`*) \".a\"\"2a3b+\u0148$.\"\"23\x80*) \".\x81\"\"2\x813\x82+\u012C%.-\"\"2-3.*) \"./\"\"2/30+\u0110%.k\"\"2k3l*) \".m\"\"2m3n+\xF4% &7\xB7,#&7\xB7\"+\xE2%7\x9D+\xD8% &7\xB7,#&7\xB7\"+\xC6%!.G\"\"2G3H*) \".I\"\"2I3J+\x93$.o\"\"2o3p*) \".q\"\"2q3r+w%.g\"\"2g3h*) \".i\"\"2i3j+[%.\"\"23\x80*) \".\x81\"\"2\x813\x82+?% &7\xB7,#&7\xB7\"+-%7Q+#%'&%$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+)%4(6\xD7(\"\" %$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xD6"),
peg$decode("8!.c\"\"2c3d*) \".e\"\"2e3f+\u017F$._\"\"2_3`*) \".a\"\"2a3b+\u0163%.5\"\"2536*) \".7\"\"2738+\u0147%.-\"\"2-3.*) \"./\"\"2/30+\u012B%.?\"\"2?3@*) \".A\"\"2A3B+\u010F% &7\xB7,#&7\xB7\"+\xFD%!.1\"\"2132*) \".3\"\"2334+\xAF$.G\"\"2G3H*) \".I\"\"2I3J+\x93%._\"\"2_3`*) \".a\"\"2a3b+w%.5\"\"2536*) \".7\"\"2738+[%.o\"\"2o3p*) \".q\"\"2q3r+?%.g\"\"2g3h*) \".i\"\"2i3j+#%'&%$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+D% &7\xB7,#&7\xB7\"+2%7R+(%4)6\xD9)! %$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xD8"),
peg$decode("8!.k\"\"2k3l*) \".m\"\"2m3n+\u0163$.?\"\"2?3@*) \".A\"\"2A3B+\u0147%.\"\"23\x80*) \".\x81\"\"2\x813\x82+\u012B%.;\"\"2;3<*) \".=\"\"2=3>+\u010F% &7\xB7,#&7\xB7\"+\xFD%!.1\"\"2132*) \".3\"\"2334+\xAF$.G\"\"2G3H*) \".I\"\"2I3J+\x93%._\"\"2_3`*) \".a\"\"2a3b+w%.5\"\"2536*) \".7\"\"2738+[%.o\"\"2o3p*) \".q\"\"2q3r+?%.g\"\"2g3h*) \".i\"\"2i3j+#%'&%$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+D% &7\xB7,#&7\xB7\"+2%7R+(%4(6\xDB(! %$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xDA"),
peg$decode("8!.c\"\"2c3d*) \".e\"\"2e3f+\u019B$.?\"\"2?3@*) \".A\"\"2A3B+\u017F%.5\"\"2536*) \".7\"\"2738+\u0163%.-\"\"2-3.*) \"./\"\"2/30+\u0147%.g\"\"2g3h*) \".i\"\"2i3j+\u012B%.5\"\"2536*) \".7\"\"2738+\u010F% &7\xB7,#&7\xB7\"+\xFD%!.1\"\"2132*) \".3\"\"2334+\xAF$.G\"\"2G3H*) \".I\"\"2I3J+\x93%._\"\"2_3`*) \".a\"\"2a3b+w%.5\"\"2536*) \".7\"\"2738+[%.o\"\"2o3p*) \".q\"\"2q3r+?%.g\"\"2g3h*) \".i\"\"2i3j+#%'&%$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+D% &7\xB7,#&7\xB7\"+2%7Q+(%4*6\xDD*! %$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xDC"),
peg$decode("8!.G\"\"2G3H*) \".I\"\"2I3J+\u0152$.o\"\"2o3p*) \".q\"\"2q3r+\u0136%.1\"\"2132*) \".3\"\"2334+\u011A%.5\"\"2536*) \".7\"\"2738+\xFE%.?\"\"2?3@*) \".A\"\"2A3B+\xE2%.g\"\"2g3h*) \".i\"\"2i3j+\xC6% &7\xB7,#&7\xB7\"+\xB4%.k\"\"2k3l*) \".m\"\"2m3n+\x98%.-\"\"2-3.*) \"./\"\"2/30+|%.g\"\"2g3h*) \".i\"\"2i3j+`%.-\"\"2-3.*) \"./\"\"2/30+D% &7\xB7,#&7\xB7\"+2%7T+(%4-6\xDF-! %$-# \"$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xDE"),
peg$decode("8!.k\"\"2k3l*) \".m\"\"2m3n+\u0140$.5\"\"2536*) \".7\"\"2738+\u0124%._\"\"2_3`*) \".a\"\"2a3b+\u0108%.5\"\"2536*) \".7\"\"2738+\xEC%.g\"\"2g3h*) \".i\"\"2i3j+\xD0%.5\"\"2536*) \".7\"\"2738+\xB4% &7\xB7,#&7\xB7\"+\xA2%.k\"\"2k3l*) \".m\"\"2m3n+\x86%.-\"\"2-3.*) \"./\"\"2/30+j%.g\"\"2g3h*) \".i\"\"2i3j+N%.-\"\"2-3.*) \"./\"\"2/30+2%7T+(%4,6\xE1,! %$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xE0"),
peg$decode("8!.k\"\"2k3l*) \".m\"\"2m3n+\u016E$.5\"\"2536*) \".7\"\"2738+\u0152%._\"\"2_3`*) \".a\"\"2a3b+\u0136%.5\"\"2536*) \".7\"\"2738+\u011A%.g\"\"2g3h*) \".i\"\"2i3j+\xFE%.5\"\"2536*) \".7\"\"2738+\xE2% &7\xB7,#&7\xB7\"+\xD0%.\x99\"\"2\x993\x9A*) \".\x9B\"\"2\x9B3\x9C+\xB4%.\x9D\"\"2\x9D3\x9E*) \".\x9F\"\"2\x9F3\xA0+\x98%.5\"\"2536*) \".7\"\"2738+|%.?\"\"2?3@*) \".A\"\"2A3B+`%.5\"\"2536*) \".7\"\"2738+D% &7\xB7,#&7\xB7\"+2%7X+(%4.6\xE3.! %$.# \"$-# \"$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xE2"),
peg$decode("8!!.\x99\"\"2\x993\x9A*) \".\x9B\"\"2\x9B3\x9C+\x93$.G\"\"2G3H*) \".I\"\"2I3J+w%.g\"\"2g3h*) \".i\"\"2i3j+[%.\x9D\"\"2\x9D3\x9E*) \".\x9F\"\"2\x9F3\xA0+?% &7\xB7,#&7\xB7\"+-%7\x9D+#%'&%$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+\u016A$ &7\xB7,#&7\xB7\"+\u0158%!7N+E$ &7\xB7,#&7\xB7\"+3%7O*# \" %+#%'#%$## \"$\"# \"\"# \"*# \"7O+\u011B% &7\xB7,#&7\xB7\"+\u0109% &7P,#&7P\"+\xF7% &7\xB7,#&7\xB7\"+\xE5%.\x99\"\"2\x993\x9A*) \".\x9B\"\"2\x9B3\x9C+\xC9%.\x9D\"\"2\x9D3\x9E*) \".\x9F\"\"2\x9F3\xA0+\xAD%.5\"\"2536*) \".7\"\"2738+\x91%.?\"\"2?3@*) \".A\"\"2A3B+u%.5\"\"2536*) \".7\"\"2738+Y% &7\xB7,#&7\xB7\"+G%7X+=% &7\xB7,#&7\xB7\"++%4.6\xE5.$-+)!%$.# \"$-# \"$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xE4"),
peg$decode("8!.k\"\"2k3l*) \".m\"\"2m3n+\xBE$.5\"\"2536*) \".7\"\"2738+\xA2%._\"\"2_3`*) \".a\"\"2a3b+\x86%.5\"\"2536*) \".7\"\"2738+j%.g\"\"2g3h*) \".i\"\"2i3j+N%.5\"\"2536*) \".7\"\"2738+2%7S+(%4'6\xE7'! %$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xE6"),
peg$decode("8!.G\"\"2G3H*) \".I\"\"2I3J+\xBE$.o\"\"2o3p*) \".q\"\"2q3r+\xA2%.1\"\"2132*) \".3\"\"2334+\x86%.5\"\"2536*) \".7\"\"2738+j%.?\"\"2?3@*) \".A\"\"2A3B+N%.g\"\"2g3h*) \".i\"\"2i3j+2%7S+(%4'6\xE9'! %$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xE8"),
peg$decode("8! &7\xB7,#&7\xB7\"+\u017F$.s\"\"2s3t*) \".u\"\"2u3v+\u0163%.1\"\"2132*) \".3\"\"2334+\u0147%.G\"\"2G3H*) \".I\"\"2I3J+\u012B%.o\"\"2o3p*) \".q\"\"2q3r+\u010F%.\xA5\"\"2\xA53\xA6*) \".\xA7\"\"2\xA73\xA8+\xF3% &7\xB7,#&7\xB7\"+\xE1%7\x9D*\xCC \"!.o\"\"2o3p*) \".q\"\"2q3r+\xAF$.-\"\"2-3.*) \"./\"\"2/30+\x93%.\x8E\"\"2\x8E3\x8F*) \".\x90\"\"2\x903\x91+w%.5\"\"2536*) \".7\"\"2738+[%.k\"\"2k3l*) \".m\"\"2m3n+?% &7\xB7,#&7\xB7\"+-%7\x9D+#%''%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"+(%4(6\xEB(! %$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xEA"),
peg$decode("8!.\xA5\"\"2\xA53\xA6*) \".\xA7\"\"2\xA73\xA8+\xB4$.?\"\"2?3@*) \".A\"\"2A3B+\x98%.-\"\"2-3.*) \"./\"\"2/30+|%.;\"\"2;3<*) \".=\"\"2=3>+`%.\x9D\"\"2\x9D3\x9E*) \".\x9F\"\"2\x9F3\xA0+D% &7\xB7,#&7\xB7\"+2%7\x9D+(%4'6\xED'! %$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xEC"),
peg$decode("8!7Q+' 4!6\xA1!! %*\u01E2 \"!.k\"\"2k3l*) \".m\"\"2m3n+\xCF$.5\"\"2536*) \".7\"\"2738+\xB3%.C\"\"2C3D*) \".E\"\"2E3F+\x97%.-\"\"2-3.*) \"./\"\"2/30+{%.s\"\"2s3t*) \".u\"\"2u3v+_%._\"\"2_3`*) \".a\"\"2a3b+C%.g\"\"2g3h*) \".i\"\"2i3j+'%4'6\xEF' %$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u0113 \"!.o\"\"2o3p*) \".q\"\"2q3r+\x97$.-\"\"2-3.*) \"./\"\"2/30+{%.\x8E\"\"2\x8E3\x8F*) \".\x90\"\"2\x903\x91+_%.5\"\"2536*) \".7\"\"2738+C%.k\"\"2k3l*) \".m\"\"2m3n+'%4%6\xF0% %$%# \"$$# \"$## \"$\"# \"\"# \"*| \"!.-\"\"2-3.*) \"./\"\"2/30+_$._\"\"2_3`*) \".a\"\"2a3b+C%._\"\"2_3`*) \".a\"\"2a3b+'%4#6\xF1# %$## \"$\"# \"\"# \"9*\" 3\xEE"),
peg$decode("8! &7\xB7,#&7\xB7\"+\x88$.\xC9\"\"2\xC93\xCA+x% &7\xB7,#&7\xB7\"+f%7U+\\% &7\xB7,#&7\xB7\"+J%.\xCB\"\"2\xCB3\xCC+:% &7\xB7,#&7\xB7\"+(%4'6\xF3'!#%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xF2"),
peg$decode("8! &7\xB7,#&7\xB7\"+\x88$.\xC9\"\"2\xC93\xCA+x% &7\xB7,#&7\xB7\"+f%7U+\\% &7\xB7,#&7\xB7\"+J%.\xCB\"\"2\xCB3\xCC+:% &7\xB7,#&7\xB7\"+(%4'6\xF3'!#%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xF4"),
peg$decode("8!7W*# \" %+\x9D$ &!7V+I$.Q\"\"2Q3R*# \" %+3%7W*# \" %+#%'#%$## \"$\"# \"\"# \",T&!7V+I$.Q\"\"2Q3R*# \" %+3%7W*# \" %+#%'#%$## \"$\"# \"\"# \"\"+)%4\"6\xF6\"\"! %$\"# \"\"# \"9*\" 3\xF5"),
peg$decode("8! &7\xB7,#&7\xB7\"+\u0149$.\xA5\"\"2\xA53\xA6*) \".\xA7\"\"2\xA73\xA8+\u012D%.?\"\"2?3@*) \".A\"\"2A3B+\u0111%.-\"\"2-3.*) \"./\"\"2/30+\xF5%.;\"\"2;3<*) \".=\"\"2=3>+\xD9%.\x9D\"\"2\x9D3\x9E*) \".\x9F\"\"2\x9F3\xA0+\xBD% &7\xB7,#&7\xB7\"+\xAB%7\x82+\xA1% &7\xB7,#&7\xB7\"+\x8F%.\xC9\"\"2\xC93\xCA+% &7\xB7,#&7\xB7\"+m%7W*# \" %+]% &7\xB7,#&7\xB7\"+K%.\xCB\"\"2\xCB3\xCC+;% &7\xB7,#&7\xB7\"+)%4/6\xF8/\"'#%$/# \"$.# \"$-# \"$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xF7"),
peg$decode("8!7h+~$! &7\xB7,#&7\xB7\"+U$.Q\"\"2Q3R+E% &7\xB7,#&7\xB7\"+3%7W*# \" %+#%'$%$$# \"$## \"$\"# \"\"# \"*# \" %+)%4\"6\xFA\"\"! %$\"# \"\"# \"9*\" 3\xF9"),
peg$decode("8!.\xC9\"\"2\xC93\xCA+f$ &7\xB7,#&7\xB7\"+T%7-+J% &7\xB7,#&7\xB7\"+8%.\xCB\"\"2\xCB3\xCC+(%4%6\xFC%!\"%$%# \"$$# \"$## \"$\"# \"\"# \"*w \"!.\xC9\"\"2\xC93\xCA+f$ &7\xB7,#&7\xB7\"+T%7Y+J% &7\xB7,#&7\xB7\"+8%.\xCB\"\"2\xCB3\xCC+(%4%6\xFC%!\"%$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\xFB"),
peg$decode("8!7Z*# \" %+\xF7$ &7\xB7,#&7\xB7\"+\xE5% &!7[+m$ &7\xB7,#&7\xB7\"+[%.Q\"\"2Q3R*# \" %+E% &7\xB7,#&7\xB7\"+3%7Z*# \" %+#%'%%$%# \"$$# \"$## \"$\"# \"\"# \",x&!7[+m$ &7\xB7,#&7\xB7\"+[%.Q\"\"2Q3R*# \" %+E% &7\xB7,#&7\xB7\"+3%7Z*# \" %+#%'%%$%# \"$$# \"$## \"$\"# \"\"# \"\"+)%4#6\xFE#\"\" %$## \"$\"# \"\"# \"9*\" 3\xFD"),
peg$decode("8!7n+l$! &7\xB7,#&7\xB7\"+C$.Q\"\"2Q3R+3%7Z*# \" %+#%'#%$## \"$\"# \"\"# \"*# \" %+)%4\"6\u0100\"\"! %$\"# \"\"# \"9*\" 3\xFF"),
peg$decode("87`*; \"7\\*5 \"7_*/ \"7]*) \"7^*# \"7a9*\" 3\u0101"),
peg$decode("8! &7\xB7,#&7\xB7\"+T$.\u0103\"\"2\u01033\u0104+D% &7\xB7,#&7\xB7\"+2%7X+(%4$6\u0105$! %$$# \"$## \"$\"# \"\"# \"9*\" 3\u0102"),
peg$decode("8! &7\xB7,#&7\xB7\"+\xED$.\xA5\"\"2\xA53\xA6*) \".\xA7\"\"2\xA73\xA8+\xD1%.?\"\"2?3@*) \".A\"\"2A3B+\xB5%.-\"\"2-3.*) \"./\"\"2/30+\x99%.;\"\"2;3<*) \".=\"\"2=3>+}%.\x9D\"\"2\x9D3\x9E*) \".\x9F\"\"2\x9F3\xA0+a% &7\xB7,#&7\xB7\"+O%7\x82+E% &7\xB7,#&7\xB7\"+3%7X+)%4*6\u0107*\"\" %$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u0106"),
peg$decode("8!.\u0109\"\"2\u01093\u010A+=$7\x82+3%7X+)%4#6\u010B#\"! %$## \"$\"# \"\"# \"9*\" 3\u0108"),
peg$decode("8!.\u010D\"\"2\u010D3\u010E+2$7X+(%4\"6\u010F\"! %$\"# \"\"# \"9*\" 3\u010C"),
peg$decode("8!7X+\u01B1$ &! &7\xB7,#&7\xB7\"+\xCB$.s\"\"2s3t*) \".u\"\"2u3v+\xAF%.o\"\"2o3p*) \".q\"\"2q3r+\x93%.G\"\"2G3H*) \".I\"\"2I3J+w%.\"\"23\x80*) \".\x81\"\"2\x813\x82+[%.o\"\"2o3p*) \".q\"\"2q3r+?% &7\xB7,#&7\xB7\"+-%7X+#%'(%$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \",\xDE&! &7\xB7,#&7\xB7\"+\xCB$.s\"\"2s3t*) \".u\"\"2u3v+\xAF%.o\"\"2o3p*) \".q\"\"2q3r+\x93%.G\"\"2G3H*) \".I\"\"2I3J+w%.\"\"23\x80*) \".\x81\"\"2\x813\x82+[%.o\"\"2o3p*) \".q\"\"2q3r+?% &7\xB7,#&7\xB7\"+-%7X+#%'(%$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"\"+)%4\"6\u0111\"\"! %$\"# \"\"# \"9*\" 3\u0110"),
peg$decode("8! &7\xB7,#&7\xB7\"+\xEC$.C\"\"2C3D*) \".E\"\"2E3F+\xD0%.G\"\"2G3H*) \".I\"\"2I3J+\xB4%._\"\"2_3`*) \".a\"\"2a3b+\x98%.g\"\"2g3h*) \".i\"\"2i3j+|%.5\"\"2536*) \".7\"\"2738+`%.?\"\"2?3@*) \".A\"\"2A3B+D% &7\xB7,#&7\xB7\"+2%7b+(%4)6\u0113)! %$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u0112"),
peg$decode("87\x8F*) \"7\x90*# \"7c9*\" 3\u0114"),
peg$decode("8!7\x9D+3$7d+)%4\"6\u0116\"\"! %$\"# \"\"# \"9*\" 3\u0115"),
peg$decode("8!7\xB6+& 4!6\u0118! %*\xB3 \"!.w\"\"2w3x+\xA2$.\u0119\"\"2\u01193\u011A*# \" %+\x8C%7\x85+\x82% &!.\u011B\"\"2\u011B3\u011C+-$7\x85+#%'\"%$\"# \"\"# \",>&!.\u011B\"\"2\u011B3\u011C+-$7\x85+#%'\"%$\"# \"\"# \"\"+:%.y\"\"2y3z+*%4%6\u011D%##\"!%$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u0117"),
peg$decode("8!7\xB6+& 4!6\u0118! %*\x9C \"!.w\"\"2w3x+\x8B$7\x85+\x81% &!.\u011B\"\"2\u011B3\u011C+-$7\x85+#%'\"%$\"# \"\"# \",>&!.\u011B\"\"2\u011B3\u011C+-$7\x85+#%'\"%$\"# \"\"# \"\"+9%.y\"\"2y3z+)%4$6\u011F$\"\"!%$$# \"$## \"$\"# \"\"# \"9*\" 3\u011E"),
peg$decode("8!.\xC9\"\"2\xC93\xCA+l$ &7\xB7,#&7\xB7\"+Z%7g*# \" %+J% &7\xB7,#&7\xB7\"+8%.\xCB\"\"2\xCB3\xCC+(%4%6\u0121%!\"%$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u0120"),
peg$decode("8!7h+~$! &7\xB7,#&7\xB7\"+U$.Q\"\"2Q3R+E% &7\xB7,#&7\xB7\"+3%7g*# \" %+#%'$%$$# \"$## \"$\"# \"\"# \"*# \" %+)%4\"6\xFA\"\"! %$\"# \"\"# \"9*\" 3\u0122"),
peg$decode("8! &7\xB7,#&7\xB7\"+O$7\x81+E% &7\xB7,#&7\xB7\"+3%7i+)%4$6\u0124$\"\" %$$# \"$## \"$\"# \"\"# \"*b \"! &7\xB7,#&7\xB7\"+O$7}+E% &7\xB7,#&7\xB7\"+3%7j+)%4$6\u0125$\"\" %$$# \"$## \"$\"# \"\"# \"9*\" 3\u0123"),
peg$decode("8!7m+\u0130$ &7\xB7,#&7\xB7\"+\u011E%7k+\u0114% &! &7\xB7,#&7\xB7\"+|$.\xD2\"\"2\xD23\xD3+l% &7\xB7,#&7\xB7\"+Z%!7m+?$ &7\xB7,#&7\xB7\"+-%7k+#%'#%$## \"$\"# \"\"# \"*# \" %+#%'$%$$# \"$## \"$\"# \"\"# \",\x8F&! &7\xB7,#&7\xB7\"+|$.\xD2\"\"2\xD23\xD3+l% &7\xB7,#&7\xB7\"+Z%!7m+?$ &7\xB7,#&7\xB7\"+-%7k+#%'#%$## \"$\"# \"\"# \"*# \" %+#%'$%$$# \"$## \"$\"# \"\"# \"\"+*%4$6\u0127$##! %$$# \"$## \"$\"# \"\"# \"9*\" 3\u0126"),
peg$decode("87i*# \" %9*\" 3\u0128"),
peg$decode("8!7l+\xA7$ &7\xB7,#&7\xB7\"+\x95% &!.\u011B\"\"2\u011B3\u011C+?$ &7\xB7,#&7\xB7\"+-%7l+#%'#%$## \"$\"# \"\"# \",P&!.\u011B\"\"2\u011B3\u011C+?$ &7\xB7,#&7\xB7\"+-%7l+#%'#%$## \"$\"# \"\"# \"\"+)%4#6\u012A#\"\" %$## \"$\"# \"\"# \"9*\" 3\u0129"),
peg$decode("87\x809*\" 3\u012B"),
peg$decode("87\x82*4 \"!./\"\"2/30+& 4!6\u012D! %9*\" 3\u012C"),
peg$decode("8! &7\xB7,#&7\xB7\"+O$7\x81+E% &7\xB7,#&7\xB7\"+3%7o+)%4$6\u0124$\"\" %$$# \"$## \"$\"# \"\"# \"*b \"! &7\xB7,#&7\xB7\"+O$7}+E% &7\xB7,#&7\xB7\"+3%7p+)%4$6\u012F$\"\" %$$# \"$## \"$\"# \"\"# \"9*\" 3\u012E"),
peg$decode("8!7q*# \"7r+\u0118$ &7\xB7,#&7\xB7\"+\u0106%7k+\xFC% &! &7\xB7,#&7\xB7\"+p$.\xD2\"\"2\xD23\xD3+`% &7\xB7,#&7\xB7\"+N%!7q*# \"7r+-$7k+#%'\"%$\"# \"\"# \"*# \" %+#%'$%$$# \"$## \"$\"# \"\"# \",\x83&! &7\xB7,#&7\xB7\"+p$.\xD2\"\"2\xD23\xD3+`% &7\xB7,#&7\xB7\"+N%!7q*# \"7r+-$7k+#%'\"%$\"# \"\"# \"*# \" %+#%'$%$$# \"$## \"$\"# \"\"# \"\"+*%4$6\u0131$##! %$$# \"$## \"$\"# \"\"# \"9*\" 3\u0130"),
peg$decode("87i*# \" %9*\" 3\u0132"),
peg$decode("8!7s+' 4!6\u0134!! %9*\" 3\u0133"),
peg$decode("87\x839*\" 3\u0135"),
peg$decode("87t9*\" 3\u0136"),
peg$decode("8!7u+q$ &!.\u0138\"\"2\u01383\u0139+-$7u+#%'\"%$\"# \"\"# \",>&!.\u0138\"\"2\u01383\u0139+-$7u+#%'\"%$\"# \"\"# \"\"+)%4\"6\u013A\"\"! %$\"# \"\"# \"9*\" 3\u0137"),
peg$decode("8!7w+q$ &!.\u013C\"\"2\u013C3\u013D+-$7w+#%'\"%$\"# \"\"# \",>&!.\u013C\"\"2\u013C3\u013D+-$7w+#%'\"%$\"# \"\"# \"\"+)%4\"6\u013E\"\"! %$\"# \"\"# \"9*\" 3\u013B"),
peg$decode("8!7y+9$7x*# \" %+)%4\"6\u0140\"\"! %$\"# \"\"# \"9*\" 3\u013F"),
peg$decode("87v*C \"!.\u0142\"\"2\u01423\u0143+2$7v+(%4\"6\u0144\"! %$\"# \"\"# \"9*\" 3\u0141"),
peg$decode("8.{\"\"2{3|*\xEA \".\u0146\"\"2\u01463\u0147*\xDE \".\u0148\"\"2\u01483\u0149*\xD2 \"!.\xC9\"\"2\xC93\xCA+\xC1$!7|+{$!.\u011B\"\"2\u011B3\u011C+T$.\xCB\"\"2\xCB3\xCC*> \"!7|+3$.\xCB\"\"2\xCB3\xCC+#%'\"%$\"# \"\"# \"+#%'\"%$\"# \"\"# \"*) \".\xCB\"\"2\xCB3\xCC+#%'\"%$\"# \"\"# \"*N \"!.\u011B\"\"2\u011B3\u011C+=$7|+3%.\xCB\"\"2\xCB3\xCC+#%'#%$## \"$\"# \"\"# \"+#%'\"%$\"# \"\"# \"9*\" 3\u0145"),
peg$decode("87\x9D*\x8B \"!./\"\"2/30+& 4!6\u014B! %*t \"!.\u014C\"\"2\u014C3\u014D+-$7z+#%'\"%$\"# \"\"# \"*S \"!.w\"\"2w3x+B$7s+8%.y\"\"2y3z+(%4#6\u014E#!!%$## \"$\"# \"\"# \"9*\" 3\u014A"),
peg$decode("7{*\xA7 \"!.w\"\"2w3x+\x96$!7{+k$ &!.\u0138\"\"2\u01383\u0139+-$7{+#%'\"%$\"# \"\"# \",>&!.\u0138\"\"2\u01383\u0139+-$7{+#%'\"%$\"# \"\"# \"\"+#%'\"%$\"# \"\"# \"*# \" %+3%.y\"\"2y3z+#%'#%$## \"$\"# \"\"# \""),
peg$decode("87\x9D*V \"./\"\"2/30*J \"!.\u0142\"\"2\u01423\u0143+9$7\x9D*) \"./\"\"2/30+#%'\"%$\"# \"\"# \"9*\" 3\u014F"),
peg$decode("87\xA79*\" 3\u0150"),
peg$decode("8!7+' 4!6\u0152!! %*# \"7~9*\" 3\u0151"),
peg$decode("8! &7\xB7,#&7\xB7\"+\x88$.\u0154\"\"2\u01543\u0155+x% &7\xB7,#&7\xB7\"+f%7i+\\% &7\xB7,#&7\xB7\"+J%.\u0156\"\"2\u01563\u0157+:% &7\xB7,#&7\xB7\"+(%4'6\u0158'!#%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u0153"),
peg$decode("8! &7\xB7,#&7\xB7\"+\x97$.w\"\"2w3x+\x87% &7\xB7,#&7\xB7\"+u% &7\x80+&$,#&7\x80\"\"\" \"+\\% &7\xB7,#&7\xB7\"+J%.y\"\"2y3z+:% &7\xB7,#&7\xB7\"+(%4'6\u015A'!#%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u0159"),
peg$decode("8!! &7\xB7,#&7\xB7\"+?$7\x81+5% &7\xB7,#&7\xB7\"+#%'#%$## \"$\"# \"\"# \"*R \"! &7\xB7,#&7\xB7\"+?$7}+5% &7\xB7,#&7\xB7\"+#%'#%$## \"$\"# \"\"# \"+' 4!6\u015C!! %9*\" 3\u015B"),
peg$decode("87\x83*# \"7\x849*\" 3\u015D"),
peg$decode("87\x83*# \"7\x9D9*\" 3\u015E"),
peg$decode("8!7\xA4*# \"7\xA5+' 4!6\u0160!! %9*\" 3\u015F"),
peg$decode("87\x9D*; \"7\x96*5 \"7\x97*/ \"7\x9B*) \"7\x9F*# \"7\xB69*\" 3\u0161"),
peg$decode("87\x869*\" 3\u0162"),
peg$decode("8!7\x87+\xB9$ &! &7\xB7,#&7\xB7\"+O$.\u0164\"\"2\u01643\u0165+?% &7\xB7,#&7\xB7\"+-%7\x87+#%'$%$$# \"$## \"$\"# \"\"# \",b&! &7\xB7,#&7\xB7\"+O$.\u0164\"\"2\u01643\u0165+?% &7\xB7,#&7\xB7\"+-%7\x87+#%'$%$$# \"$## \"$\"# \"\"# \"\"+)%4\"6\u0166\"\"! %$\"# \"\"# \"9*\" 3\u0163"),
peg$decode("8!7\x88+\xB9$ &! &7\xB7,#&7\xB7\"+O$.\u0168\"\"2\u01683\u0169+?% &7\xB7,#&7\xB7\"+-%7\x88+#%'$%$$# \"$## \"$\"# \"\"# \",b&! &7\xB7,#&7\xB7\"+O$.\u0168\"\"2\u01683\u0169+?% &7\xB7,#&7\xB7\"+-%7\x88+#%'$%$$# \"$## \"$\"# \"\"# \"\"+)%4\"6\u016A\"\"! %$\"# \"\"# \"9*\" 3\u0167"),
peg$decode("87\x899*\" 3\u016B"),
peg$decode("8!7\x8A+\u05EB$ &! &7\xB7,#&7\xB7\"+O$.\u016D\"\"2\u016D3\u016E+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u02B6 \"! &7\xB7,#&7\xB7\"+O$.\u016F\"\"2\u016F3\u0170+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u0271 \"! &7\xB7,#&7\xB7\"+O$.\u0171\"\"2\u01713\u0172+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u022C \"! &7\xB7,#&7\xB7\"+O$.\u0173\"\"2\u01733\u0174+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u01E7 \"! &7\xB7,#&7\xB7\"+O$.\u0175\"\"2\u01753\u0176+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u01A2 \"! &7\xB7,#&7\xB7\"+O$.\u0177\"\"2\u01773\u0178+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u015D \"! &7\xB7,#&7\xB7\"+w$.G\"\"2G3H*) \".I\"\"2I3J+[%.o\"\"2o3p*) \".q\"\"2q3r+?% &7\xB7,#&7\xB7\"+-%7e+#%'%%$%# \"$$# \"$## \"$\"# \"\"# \"*\xF0 \"! &7\xB7,#&7\xB7\"+\xDD$.o\"\"2o3p*) \".q\"\"2q3r+\xC1%.\"\"23\x80*) \".\x81\"\"2\x813\x82+\xA5%.g\"\"2g3h*) \".i\"\"2i3j+\x89% &7\xB7,#&7\xB7\"+w%.G\"\"2G3H*) \".I\"\"2I3J+[%.o\"\"2o3p*) \".q\"\"2q3r+?% &7\xB7,#&7\xB7\"+-%7e+#%')%$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \",\u02FB&! &7\xB7,#&7\xB7\"+O$.\u016D\"\"2\u016D3\u016E+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u02B6 \"! &7\xB7,#&7\xB7\"+O$.\u016F\"\"2\u016F3\u0170+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u0271 \"! &7\xB7,#&7\xB7\"+O$.\u0171\"\"2\u01713\u0172+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u022C \"! &7\xB7,#&7\xB7\"+O$.\u0173\"\"2\u01733\u0174+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u01E7 \"! &7\xB7,#&7\xB7\"+O$.\u0175\"\"2\u01753\u0176+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u01A2 \"! &7\xB7,#&7\xB7\"+O$.\u0177\"\"2\u01773\u0178+?% &7\xB7,#&7\xB7\"+-%7\x8A+#%'$%$$# \"$## \"$\"# \"\"# \"*\u015D \"! &7\xB7,#&7\xB7\"+w$.G\"\"2G3H*) \".I\"\"2I3J+[%.o\"\"2o3p*) \".q\"\"2q3r+?% &7\xB7,#&7\xB7\"+-%7e+#%'%%$%# \"$$# \"$## \"$\"# \"\"# \"*\xF0 \"! &7\xB7,#&7\xB7\"+\xDD$.o\"\"2o3p*) \".q\"\"2q3r+\xC1%.\"\"23\x80*) \".\x81\"\"2\x813\x82+\xA5%.g\"\"2g3h*) \".i\"\"2i3j+\x89% &7\xB7,#&7\xB7\"+w%.G\"\"2G3H*) \".I\"\"2I3J+[%.o\"\"2o3p*) \".q\"\"2q3r+?% &7\xB7,#&7\xB7\"+-%7e+#%')%$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"\"+)%4\"6\u0179\"\"! %$\"# \"\"# \"9*\" 3\u016C"),
peg$decode("87\x8B9*\" 3\u017A"),
peg$decode("8!7\x8C+\u0299$ &! &7\xB7,#&7\xB7\"+O$.\u0148\"\"2\u01483\u0149+?% &7\xB7,#&7\xB7\"+-%7\x8C+#%'$%$$# \"$## \"$\"# \"\"# \"*\u010D \"! &7\xB7,#&7\xB7\"+O$.\u017C\"\"2\u017C3\u017D+?% &7\xB7,#&7\xB7\"+-%7\x8C+#%'$%$$# \"$## \"$\"# \"\"# \"*\xC8 \"!7\x9A*# \"7\x9A+\xB7$! &7\xB7,#&7\xB7\"+O$.{\"\"2{3|+?% &7\xB7,#&7\xB7\"+-%7\x8D+#%'$%$$# \"$## \"$\"# \"\"# \"*b \"! &7\xB7,#&7\xB7\"+O$.\u013C\"\"2\u013C3\u013D+?% &7\xB7,#&7\xB7\"+-%7\x8D+#%'$%$$# \"$## \"$\"# \"\"# \"*# \" %+#%'\"%$\"# \"\"# \",\u0152&! &7\xB7,#&7\xB7\"+O$.\u0148\"\"2\u01483\u0149+?% &7\xB7,#&7\xB7\"+-%7\x8C+#%'$%$$# \"$## \"$\"# \"\"# \"*\u010D \"! &7\xB7,#&7\xB7\"+O$.\u017C\"\"2\u017C3\u017D+?% &7\xB7,#&7\xB7\"+-%7\x8C+#%'$%$$# \"$## \"$\"# \"\"# \"*\xC8 \"!7\x9A*# \"7\x9A+\xB7$! &7\xB7,#&7\xB7\"+O$.{\"\"2{3|+?% &7\xB7,#&7\xB7\"+-%7\x8D+#%'$%$$# \"$## \"$\"# \"\"# \"*b \"! &7\xB7,#&7\xB7\"+O$.\u013C\"\"2\u013C3\u013D+?% &7\xB7,#&7\xB7\"+-%7\x8D+#%'$%$$# \"$## \"$\"# \"\"# \"*# \" %+#%'\"%$\"# \"\"# \"\"+)%4\"6\u017E\"\"! %$\"# \"\"# \"9*\" 3\u017B"),
peg$decode("8!7\x8D+\u0143$ &! &7\xB7,#&7\xB7\"+O$.{\"\"2{3|+?% &7\xB7,#&7\xB7\"+-%7\x8D+#%'$%$$# \"$## \"$\"# \"\"# \"*b \"! &7\xB7,#&7\xB7\"+O$.\u013C\"\"2\u013C3\u013D+?% &7\xB7,#&7\xB7\"+-%7\x8D+#%'$%$$# \"$## \"$\"# \"\"# \",\xA7&! &7\xB7,#&7\xB7\"+O$.{\"\"2{3|+?% &7\xB7,#&7\xB7\"+-%7\x8D+#%'$%$$# \"$## \"$\"# \"\"# \"*b \"! &7\xB7,#&7\xB7\"+O$.\u013C\"\"2\u013C3\u013D+?% &7\xB7,#&7\xB7\"+-%7\x8D+#%'$%$$# \"$## \"$\"# \"\"# \"\"+)%4\"6\u0180\"\"! %$\"# \"\"# \"9*\" 3\u017F"),
peg$decode("8!.\u014C\"\"2\u014C3\u014D+D$ &7\xB7,#&7\xB7\"+2%7\x8E+(%4#6\u0182#! %$## \"$\"# \"\"# \"*\x93 \"!.\u0148\"\"2\u01483\u0149+D$ &7\xB7,#&7\xB7\"+2%7\x8E+(%4#6\u0183#! %$## \"$\"# \"\"# \"*[ \"!.\u017C\"\"2\u017C3\u017D+D$ &7\xB7,#&7\xB7\"+2%7\x8E+(%4#6\u0184#! %$## \"$\"# \"\"# \"*# \"7\x8E9*\" 3\u0181"),
peg$decode("87\x8F*w \"7\x90*q \"7\x95*k \"!7\x96+' 4!6\u0186!! %*Y \"!7\x97+' 4!6\u0187!! %*G \"!7\x9B+' 4!6\u0188!! %*5 \"7\x94*/ \"!7\x83+' 4!6\u0189!! %9*\" 3\u0185"),
peg$decode("8!.w\"\"2w3x+f$ &7\xB7,#&7\xB7\"+T%7\x85+J% &7\xB7,#&7\xB7\"+8%.y\"\"2y3z+(%4%6\u018B%!\"%$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u018A"),
peg$decode("8!.1\"\"2132*) \".3\"\"2334+\xC0$.g\"\"2g3h*) \".i\"\"2i3j+\xA4%.?\"\"2?3@*) \".A\"\"2A3B+\x88% &7\xB7,#&7\xB7\"+v%.w\"\"2w3x+f% &7\xB7,#&7\xB7\"+T%7\x85+J% &7\xB7,#&7\xB7\"+8%.y\"\"2y3z+(%4)6\u018D)!\"%$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u09E8 \"!._\"\"2_3`*) \".a\"\"2a3b+\xDC$.-\"\"2-3.*) \"./\"\"2/30+\xC0%.o\"\"2o3p*) \".q\"\"2q3r+\xA4%.\xA5\"\"2\xA53\xA6*) \".\xA7\"\"2\xA73\xA8+\x88% &7\xB7,#&7\xB7\"+v%.w\"\"2w3x+f% &7\xB7,#&7\xB7\"+T%7\x85+J% &7\xB7,#&7\xB7\"+8%.y\"\"2y3z+(%4*6\u018E*!\"%$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u090C \"!.\u018F\"\"2\u018F3\u0190+\xC7$ &7\xB7,#&7\xB7\"+\xB5%.w\"\"2w3x+\xA5% &7\xB7,#&7\xB7\"+\x93%7\x85+\x89% &7\xB7,#&7\xB7\"+w%.\u011B\"\"2\u011B3\u011C+g% &7\xB7,#&7\xB7\"+U%7\x85+K% &7\xB7,#&7\xB7\"+9%.y\"\"2y3z+)%4+6\u0191+\"&\"%$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u0851 \"!.k\"\"2k3l*) \".m\"\"2m3n+\u014C$.-\"\"2-3.*) \"./\"\"2/30+\u0130%.g\"\"2g3h*) \".i\"\"2i3j+\u0114%.-\"\"2-3.*) \"./\"\"2/30+\xF8%.g\"\"2g3h*) \".i\"\"2i3j+\xDC%.\xA9\"\"2\xA93\xAA*) \".\xAB\"\"2\xAB3\xAC+\xC0%.;\"\"2;3<*) \".=\"\"2=3>+\xA4%.5\"\"2536*) \".7\"\"2738+\x88% &7\xB7,#&7\xB7\"+v%.w\"\"2w3x+f% &7\xB7,#&7\xB7\"+T%7\x85+J% &7\xB7,#&7\xB7\"+8%.y\"\"2y3z+(%4.6\u0192.!\"%$.# \"$-# \"$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u0705 \"!.\u0193\"\"2\u01933\u0194+\x88$ &7\xB7,#&7\xB7\"+v%.w\"\"2w3x+f% &7\xB7,#&7\xB7\"+T%7\x83+J% &7\xB7,#&7\xB7\"+8%.y\"\"2y3z+(%4'6\u0195'!\"%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u0689 \"!.\u0196\"\"2\u01963\u0197+\x88$ &7\xB7,#&7\xB7\"+v%.w\"\"2w3x+f% &7\xB7,#&7\xB7\"+T%7\x85+J% &7\xB7,#&7\xB7\"+8%.y\"\"2y3z+(%4'6\u0198'!\"%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u060D \"!.\u0199\"\"2\u01993\u019A+\x88$ &7\xB7,#&7\xB7\"+v%.w\"\"2w3x+f% &7\xB7,#&7\xB7\"+T%7\x85+J% &7\xB7,#&7\xB7\"+8%.y\"\"2y3z+(%4'6\u019B'!\"%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u0591 \"!.\u019C\"\"2\u019C3\u019D+\x99$ &7\xB7,#&7\xB7\"+\x87%!.w\"\"2w3x+a$ &7\xB7,#&7\xB7\"+O%7\x85+E% &7\xB7,#&7\xB7\"+3%.y\"\"2y3z+#%'%%$%# \"$$# \"$## \"$\"# \"\"# \"*# \"7\xB6+(%4#6\u019E#! %$## \"$\"# \"\"# \"*\u0504 \"!.\u019F\"\"2\u019F3\u01A0+D$ &7\xB7,#&7\xB7\"+2%7e+(%4#6\u01A1#! %$## \"$\"# \"\"# \"*\u04CC \"!.\u01A2\"\"2\u01A23\u01A3+\u0106$ &7\xB7,#&7\xB7\"+\xF4%.w\"\"2w3x+\xE4% &7\xB7,#&7\xB7\"+\xD2%7\x85+\xC8% &7\xB7,#&7\xB7\"+\xB6%.\u011B\"\"2\u011B3\u011C+\xA6% &7\xB7,#&7\xB7\"+\x94%7\x85+\x8A% &7\xB7,#&7\xB7\"+x%.\u011B\"\"2\u011B3\u011C+h% &7\xB7,#&7\xB7\"+V%7\x85+L% &7\xB7,#&7\xB7\"+:%.y\"\"2y3z+*%4/6\u01A4/#*&\"%$/# \"$.# \"$-# \"$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u03D2 \"!.\u01A5\"\"2\u01A53\u01A6+\x88$ &7\xB7,#&7\xB7\"+v%.w\"\"2w3x+f% &7\xB7,#&7\xB7\"+T%7\x85+J% &7\xB7,#&7\xB7\"+8%.y\"\"2y3z+(%4'6\u01A7'!\"%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u0356 \"!.\u01A8\"\"2\u01A83\u01A9+\x88$ &7\xB7,#&7\xB7\"+v%.w\"\"2w3x+f% &7\xB7,#&7\xB7\"+T%7\x85+J% &7\xB7,#&7\xB7\"+8%.y\"\"2y3z+(%4'6\u01AA'!\"%$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u02DA \"!.\u01AB\"\"2\u01AB3\u01AC+\xC7$ &7\xB7,#&7\xB7\"+\xB5%.w\"\"2w3x+\xA5% &7\xB7,#&7\xB7\"+\x93%7\x85+\x89% &7\xB7,#&7\xB7\"+w%.\u011B\"\"2\u011B3\u011C+g% &7\xB7,#&7\xB7\"+U%7\x85+K% &7\xB7,#&7\xB7\"+9%.y\"\"2y3z+)%4+6\u01AD+\"&\"%$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u021F \"!.G\"\"2G3H*) \".I\"\"2I3J+\xF8$.1\"\"2132*) \".3\"\"2334+\xDC%.s\"\"2s3t*) \".u\"\"2u3v+\xC0%.?\"\"2?3@*) \".A\"\"2A3B+\xA4%.G\"\"2G3H*) \".I\"\"2I3J+\x88% &7\xB7,#&7\xB7\"+v%.w\"\"2w3x+f% &7\xB7,#&7\xB7\"+T%7\x85+J% &7\xB7,#&7\xB7\"+8%.y\"\"2y3z+(%4+6\u01AE+!\"%$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u0127 \"!.G\"\"2G3H*) \".I\"\"2I3J+\xF8$.1\"\"2132*) \".3\"\"2334+\xDC%.G\"\"2G3H*) \".I\"\"2I3J+\xC0%.?\"\"2?3@*) \".A\"\"2A3B+\xA4%.G\"\"2G3H*) \".I\"\"2I3J+\x88% &7\xB7,#&7\xB7\"+v%.w\"\"2w3x+f% &7\xB7,#&7\xB7\"+T%7\x85+J% &7\xB7,#&7\xB7\"+8%.y\"\"2y3z+(%4+6\u01AE+!\"%$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*/ \"7\x91*) \"7\x92*# \"7\x939*\" 3\u018C"),
peg$decode("8!.?\"\"2?3@*) \".A\"\"2A3B+\u0187$.5\"\"2536*) \".7\"\"2738+\u016B%.\xA5\"\"2\xA53\xA6*) \".\xA7\"\"2\xA73\xA8+\u014F%.5\"\"2536*) \".7\"\"2738+\u0133%.K\"\"2K3L*) \".M\"\"2M3N+\u0117% &7\xB7,#&7\xB7\"+\u0105%.w\"\"2w3x+\xF5% &7\xB7,#&7\xB7\"+\xE3%7\x85+\xD9% &7\xB7,#&7\xB7\"+\xC7%.\u011B\"\"2\u011B3\u011C+\xB7% &7\xB7,#&7\xB7\"+\xA5%7\x85+\x9B% &7\xB7,#&7\xB7\"+\x89%!.\u011B\"\"2\u011B3\u011C+?$ &7\xB7,#&7\xB7\"+-%7\x85+#%'#%$## \"$\"# \"\"# \"*# \" %+L% &7\xB7,#&7\xB7\"+:%.y\"\"2y3z+*%416\u01B01#($\"%$1# \"$0# \"$/# \"$.# \"$-# \"$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u01AF"),
peg$decode("8!.5\"\"2536*) \".7\"\"2738+\xD0$.K\"\"2K3L*) \".M\"\"2M3N+\xB4%.G\"\"2G3H*) \".I\"\"2I3J+\x98%.1\"\"2132*) \".3\"\"2334+|%.g\"\"2g3h*) \".i\"\"2i3j+`%.1\"\"2132*) \".3\"\"2334+D% &7\xB7,#&7\xB7\"+2%7X+(%4(6\u01B2(! %$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u01B1"),
peg$decode("8!.o\"\"2o3p*) \".q\"\"2q3r+\u0136$.\"\"23\x80*) \".\x81\"\"2\x813\x82+\u011A%.g\"\"2g3h*) \".i\"\"2i3j+\xFE% &7\xB7,#&7\xB7\"+\xEC%.5\"\"2536*) \".7\"\"2738+\xD0%.K\"\"2K3L*) \".M\"\"2M3N+\xB4%.G\"\"2G3H*) \".I\"\"2I3J+\x98%.1\"\"2132*) \".3\"\"2334+|%.g\"\"2g3h*) \".i\"\"2i3j+`%.1\"\"2132*) \".3\"\"2334+D% &7\xB7,#&7\xB7\"+2%7X+(%4,6\u01B4,! %$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u01B3"),
peg$decode("8!.c\"\"2c3d*) \".e\"\"2e3f+\u021A$.\"\"23\x80*) \".\x81\"\"2\x813\x82+\u01FE%.s\"\"2s3t*) \".u\"\"2u3v+\u01E2%.o\"\"2o3p*) \".q\"\"2q3r+\u01C6%.g\"\"2g3h*) \".i\"\"2i3j+\u01AA% &7\xB7,#&7\xB7\"+\u0198%.w\"\"2w3x+\u0188% &7\xB7,#&7\xB7\"+\u0176%!.k\"\"2k3l*) \".m\"\"2m3n+\xE7$.G\"\"2G3H*) \".I\"\"2I3J+\xCB%.1\"\"2132*) \".3\"\"2334+\xAF%.g\"\"2g3h*) \".i\"\"2i3j+\x93%.G\"\"2G3H*) \".I\"\"2I3J+w%.o\"\"2o3p*) \".q\"\"2q3r+[%.c\"\"2c3d*) \".e\"\"2e3f+?%.g\"\"2g3h*) \".i\"\"2i3j+#%'(%$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+\x85% &7\xB7,#&7\xB7\"+s%.{\"\"2{3|*# \"7\x85+]% &7\xB7,#&7\xB7\"+K%.y\"\"2y3z+;% &7\xB7,#&7\xB7\"+)%4.6\u01B6.\"%#%$.# \"$-# \"$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u0775 \"!.1\"\"2132*) \".3\"\"2334+\u01D6$.s\"\"2s3t*) \".u\"\"2u3v+\u01BA%.\x8E\"\"2\x8E3\x8F*) \".\x90\"\"2\x903\x91+\u019E% &7\xB7,#&7\xB7\"+\u018C%.w\"\"2w3x+\u017C% &7\xB7,#&7\xB7\"+\u016A%!.k\"\"2k3l*) \".m\"\"2m3n+\xE7$.G\"\"2G3H*) \".I\"\"2I3J+\xCB%.1\"\"2132*) \".3\"\"2334+\xAF%.g\"\"2g3h*) \".i\"\"2i3j+\x93%.G\"\"2G3H*) \".I\"\"2I3J+w%.o\"\"2o3p*) \".q\"\"2q3r+[%.c\"\"2c3d*) \".e\"\"2e3f+?%.g\"\"2g3h*) \".i\"\"2i3j+#%'(%$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+y% &7\xB7,#&7\xB7\"+g%7\x85+]% &7\xB7,#&7\xB7\"+K%.y\"\"2y3z+;% &7\xB7,#&7\xB7\"+)%4,6\u01B7,\"%#%$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u059F \"!.\x8E\"\"2\x8E3\x8F*) \".\x90\"\"2\x903\x91+\u01D6$.G\"\"2G3H*) \".I\"\"2I3J+\u01BA%.o\"\"2o3p*) \".q\"\"2q3r+\u019E% &7\xB7,#&7\xB7\"+\u018C%.w\"\"2w3x+\u017C% &7\xB7,#&7\xB7\"+\u016A%!.k\"\"2k3l*) \".m\"\"2m3n+\xE7$.G\"\"2G3H*) \".I\"\"2I3J+\xCB%.1\"\"2132*) \".3\"\"2334+\xAF%.g\"\"2g3h*) \".i\"\"2i3j+\x93%.G\"\"2G3H*) \".I\"\"2I3J+w%.o\"\"2o3p*) \".q\"\"2q3r+[%.c\"\"2c3d*) \".e\"\"2e3f+?%.g\"\"2g3h*) \".i\"\"2i3j+#%'(%$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+y% &7\xB7,#&7\xB7\"+g%7\x85+]% &7\xB7,#&7\xB7\"+K%.y\"\"2y3z+;% &7\xB7,#&7\xB7\"+)%4,6\u01B8,\"%#%$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u03C9 \"!.\x8E\"\"2\x8E3\x8F*) \".\x90\"\"2\x903\x91+\u01D6$.-\"\"2-3.*) \"./\"\"2/30+\u01BA%.K\"\"2K3L*) \".M\"\"2M3N+\u019E% &7\xB7,#&7\xB7\"+\u018C%.w\"\"2w3x+\u017C% &7\xB7,#&7\xB7\"+\u016A%!.k\"\"2k3l*) \".m\"\"2m3n+\xE7$.G\"\"2G3H*) \".I\"\"2I3J+\xCB%.1\"\"2132*) \".3\"\"2334+\xAF%.g\"\"2g3h*) \".i\"\"2i3j+\x93%.G\"\"2G3H*) \".I\"\"2I3J+w%.o\"\"2o3p*) \".q\"\"2q3r+[%.c\"\"2c3d*) \".e\"\"2e3f+?%.g\"\"2g3h*) \".i\"\"2i3j+#%'(%$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+y% &7\xB7,#&7\xB7\"+g%7\x85+]% &7\xB7,#&7\xB7\"+K%.y\"\"2y3z+;% &7\xB7,#&7\xB7\"+)%4,6\u01B9,\"%#%$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*\u01F3 \"!.-\"\"2-3.*) \"./\"\"2/30+\u01D6$.\u01BA\"\"2\u01BA3\u01BB*) \".\u01BC\"\"2\u01BC3\u01BD+\u01BA%.\xA5\"\"2\xA53\xA6*) \".\xA7\"\"2\xA73\xA8+\u019E% &7\xB7,#&7\xB7\"+\u018C%.w\"\"2w3x+\u017C% &7\xB7,#&7\xB7\"+\u016A%!.k\"\"2k3l*) \".m\"\"2m3n+\xE7$.G\"\"2G3H*) \".I\"\"2I3J+\xCB%.1\"\"2132*) \".3\"\"2334+\xAF%.g\"\"2g3h*) \".i\"\"2i3j+\x93%.G\"\"2G3H*) \".I\"\"2I3J+w%.o\"\"2o3p*) \".q\"\"2q3r+[%.c\"\"2c3d*) \".e\"\"2e3f+?%.g\"\"2g3h*) \".i\"\"2i3j+#%'(%$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"*# \" %+y% &7\xB7,#&7\xB7\"+g%7\x85+]% &7\xB7,#&7\xB7\"+K%.y\"\"2y3z+;% &7\xB7,#&7\xB7\"+)%4,6\u01BE,\"%#%$,# \"$+# \"$*# \"$)# \"$(# \"$'# \"$&# \"$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u01B5"),
peg$decode("8!7\x9D+9$7d*# \" %+)%4\"6\u01C0\"\"! %$\"# \"\"# \"9*\" 3\u01BF"),
peg$decode("8!7\x9C+Z$7\xA6*> \"!.\u01C2\"\"2\u01C23\u01C3+-$7\x9D+#%'\"%$\"# \"\"# \"*# \" %+)%4\"6\u01C4\"\"! %$\"# \"\"# \"9*\" 3\u01C1"),
peg$decode("87\x98*) \"7\x99*# \"7\x9A9*\" 3\u01C5"),
peg$decode("87\xA9*) \"7\xA8*# \"7\xA79*\" 3\u01C6"),
peg$decode("87\xAC*) \"7\xAB*# \"7\xAA9*\" 3\u01C7"),
peg$decode("87\xAF*) \"7\xAE*# \"7\xAD9*\" 3\u01C8"),
peg$decode("8!.g\"\"2g3h*) \".i\"\"2i3j+{$.?\"\"2?3@*) \".A\"\"2A3B+_%.s\"\"2s3t*) \".u\"\"2u3v+C%.5\"\"2536*) \".7\"\"2738+'%4$6\u01CA$ %$$# \"$## \"$\"# \"\"# \"*\xB4 \"!.C\"\"2C3D*) \".E\"\"2E3F+\x97$.-\"\"2-3.*) \"./\"\"2/30+{%._\"\"2_3`*) \".a\"\"2a3b+_%.1\"\"2132*) \".3\"\"2334+C%.5\"\"2536*) \".7\"\"2738+'%4%6\u01CB% %$%# \"$$# \"$## \"$\"# \"\"# \"9*\" 3\u01C9"),
peg$decode("8!7\xB3+' 4!6\u01CD!! %*S \"!7\xB4+' 4!6\u01CD!! %*A \"!7\xB1+' 4!6\u01CD!! %*/ \"!7\xB2+' 4!6\u01CD!! %9*\" 3\u01CC"),
peg$decode("8!7\xA0+' 4!6\u01CF!! %*/ \"!7\x9E+' 4!6\u01D0!! %9*\" 3\u01CE"),
peg$decode("8!7\xA2+' 4!6\u01D2!! %*/ \"!7\xA1+' 4!6\u01D3!! %9*\" 3\u01D1"),
peg$decode("8!7\xA3+' 4!6\u01D5!! %*. \"!7\xB9+& 4!6\u01D6! %9*\" 3\u01D4"),
peg$decode("8!.\u0171\"\"2\u01713\u0172+V$ &0\u01D8\"\"1!3\u01D9,)&0\u01D8\"\"1!3\u01D9\"+8%.\u0173\"\"2\u01733\u0174+(%4#6\u01DA#!!%$## \"$\"# \"\"# \"9*\" 3\u01D7"),
peg$decode("8!7\xBE*# \" %+8$.Y\"\"2Y3Z+(%4\"6\u01D0\"!!%$\"# \"\"# \"9*\" 3\u01DB"),
peg$decode("8!7\xA1+3$7\xBF+)%4\"6\u01DD\"\"! %$\"# \"\"# \"9*\" 3\u01DC"),
peg$decode("8!.\u01DF\"\"2\u01DF3\u01E0+2$7\xBF+(%4\"6\u01E1\"! %$\"# \"\"# \"9*\" 3\u01DE"),
peg$decode("8!.\u0146\"\"2\u01463\u0147+2$7\xBC+(%4\"6\u01E3\"! %$\"# \"\"# \"9*\" 3\u01E2"),
peg$decode("8!.\u01E5\"\"2\u01E53\u01E6+2$7\xBC+(%4\"6\u01E3\"! %$\"# \"\"# \"9*\" 3\u01E4"),
peg$decode("8!.\u01E8\"\"2\u01E83\u01E9+\xCC$ &0\u01EA\"\"1!3\u01EB+,$,)&0\u01EA\"\"1!3\u01EB\"\"\" \"+\xA7% &!.\u017C\"\"2\u017C3\u017D+H$ &0\u01EC\"\"1!3\u01ED+,$,)&0\u01EC\"\"1!3\u01ED\"\"\" \"+#%'\"%$\"# \"\"# \",Y&!.\u017C\"\"2\u017C3\u017D+H$ &0\u01EC\"\"1!3\u01ED+,$,)&0\u01EC\"\"1!3\u01ED\"\"\" \"+#%'\"%$\"# \"\"# \"\"+)%4#6\u01EE#\"! %$## \"$\"# \"\"# \"9*\" 3\u01E7"),
peg$decode("8! &0\u01F0\"\"1!3\u01F1+,$,)&0\u01F0\"\"1!3\u01F1\"\"\" \"+' 4!6\u01F2!! %9*\" 3\u01EF"),
peg$decode("8! &0\u01F0\"\"1!3\u01F1+,$,)&0\u01F0\"\"1!3\u01F1\"\"\" \"+X$.Q\"\"2Q3R+H% &0\u01F0\"\"1!3\u01F1,)&0\u01F0\"\"1!3\u01F1\"+*%4#6\u01F4##\"! %$## \"$\"# \"\"# \"*_ \"!.Q\"\"2Q3R+N$ &0\u01F0\"\"1!3\u01F1+,$,)&0\u01F0\"\"1!3\u01F1\"\"\" \"+)%4\"6\u01F5\"\"! %$\"# \"\"# \"9*\" 3\u01F3"),
peg$decode("8! &0\u01F0\"\"1!3\u01F1+,$,)&0\u01F0\"\"1!3\u01F1\"\"\" \"+c$.Q\"\"2Q3R+S% &0\u01F0\"\"1!3\u01F1,)&0\u01F0\"\"1!3\u01F1\"+5%7\xB0++%4$6\u01F7$$#\"! %$$# \"$## \"$\"# \"\"# \"*\xA6 \"!.Q\"\"2Q3R+Y$ &0\u01F0\"\"1!3\u01F1+,$,)&0\u01F0\"\"1!3\u01F1\"\"\" \"+4%7\xB0+*%4#6\u01F8##\"! %$## \"$\"# \"\"# \"*Y \"! &0\u01F0\"\"1!3\u01F1+,$,)&0\u01F0\"\"1!3\u01F1\"\"\" \"+3$7\xB0+)%4\"6\u01F9\"\"! %$\"# \"\"# \"9*\" 3\u01F6"),
peg$decode("8!.\u0148\"\"2\u01483\u0149+2$7\xA7+(%4\"6\u01FB\"! %$\"# \"\"# \"9*\" 3\u01FA"),
peg$decode("8!.\u0148\"\"2\u01483\u0149+2$7\xA8+(%4\"6\u01FD\"! %$\"# \"\"# \"9*\" 3\u01FC"),
peg$decode("8!.\u0148\"\"2\u01483\u0149+2$7\xA9+(%4\"6\u01FD\"! %$\"# \"\"# \"9*\" 3\u01FE"),
peg$decode("8!.\u017C\"\"2\u017C3\u017D+2$7\xA7+(%4\"6\u0200\"! %$\"# \"\"# \"9*\" 3\u01FF"),
peg$decode("8!.\u017C\"\"2\u017C3\u017D+2$7\xA8+(%4\"6\u0200\"! %$\"# \"\"# \"9*\" 3\u0201"),
peg$decode("8!.\u017C\"\"2\u017C3\u017D+2$7\xA9+(%4\"6\u0200\"! %$\"# \"\"# \"9*\" 3\u0202"),
peg$decode("8!0\u0204\"\"1!3\u0205+e$0\u0206\"\"1!3\u0207*# \" %+O% &0\u01F0\"\"1!3\u01F1+,$,)&0\u01F0\"\"1!3\u01F1\"\"\" \"+*%4#6\u0208##\"! %$## \"$\"# \"\"# \"9*\" 3\u0203"),
peg$decode("8!.\u020A\"\"2\u020A3\u020B+b$ &0\u020C\"\"1!3\u020D*# \"7\xB5,/&0\u020C\"\"1!3\u020D*# \"7\xB5\"+8%.\u020A\"\"2\u020A3\u020B+(%4#6\u020E#!!%$## \"$\"# \"\"# \"9*\" 3\u0209"),
peg$decode("8!.\u0210\"\"2\u02103\u0211+b$ &0\u0212\"\"1!3\u0213*# \"7\xB5,/&0\u0212\"\"1!3\u0213*# \"7\xB5\"+8%.\u0210\"\"2\u02103\u0211+(%4#6\u020E#!!%$## \"$\"# \"\"# \"9*\" 3\u020F"),
peg$decode("8!.\u0215\"\"2\u02153\u0216+b$ &0\u0217\"\"1!3\u0218*# \"7\xB5,/&0\u0217\"\"1!3\u0218*# \"7\xB5\"+8%.\u0215\"\"2\u02153\u0216+(%4#6\u020E#!!%$## \"$\"# \"\"# \"9*\" 3\u0214"),
peg$decode("8!.\u021A\"\"2\u021A3\u021B+b$ &0\u021C\"\"1!3\u021D*# \"7\xB5,/&0\u021C\"\"1!3\u021D*# \"7\xB5\"+8%.\u021A\"\"2\u021A3\u021B+(%4#6\u020E#!!%$## \"$\"# \"\"# \"9*\" 3\u0219"),
peg$decode("8!.\u021F\"\"2\u021F3\u0220+3$0\u0221\"\"1!3\u0222+#%'\"%$\"# \"\"# \"9*\" 3\u021E"),
peg$decode("8!.w\"\"2w3x+I$ &7\xB7,#&7\xB7\"+7%.y\"\"2y3z+'%4#6\u0224# %$## \"$\"# \"\"# \"9*\" 3\u0223"),
peg$decode("80\u0226\"\"1!3\u0227*G \"0\u0228\"\"1!3\u0229*; \"0\u022A\"\"1!3\u022B*/ \"0\u022C\"\"1!3\u022D*# \"7\xB89*\" 3\u0225"),
peg$decode("8!.\u022F\"\"2\u022F3\u0230+A$ &0\u0231\"\"1!3\u0232,)&0\u0231\"\"1!3\u0232\"+#%'\"%$\"# \"\"# \"9*\" 3\u022E"),
peg$decode("8!.\u0154\"\"2\u01543\u0155+E$ &7\xB7,#&7\xB7\"+3%.\u0156\"\"2\u01563\u0157+#%'#%$## \"$\"# \"\"# \"9*\" 3\u0233"),
peg$decode("80\u0235\"\"1!3\u0236*\xB9 \"0\u0237\"\"1!3\u0238*\xAD \"0\u0239\"\"1!3\u023A*\xA1 \"0\u023B\"\"1!3\u023C*\x95 \"0\u023D\"\"1!3\u023E*\x89 \"0\u023F\"\"1!3\u0240*} \"0\u0241\"\"1!3\u0242*q \"0\u0243\"\"1!3\u0244*e \"0\u0245\"\"1!3\u0246*Y \"0\u0247\"\"1!3\u0248*M \"0\u0249\"\"1!3\u024A*A \"0\u024B\"\"1!3\u024C*5 \"0\u024D\"\"1!3\u024E*) \"0\u024F\"\"1!3\u02509*\" 3\u0234"),
peg$decode("87\xBA*) \".\u0252\"\"2\u02523\u02539*\" 3\u0251"),
peg$decode("8!7\xBB*) \"0\u01F0\"\"1!3\u01F1+\x9B$ &7\xBB*M \"0\u01F0\"\"1!3\u01F1*A \"0\u0255\"\"1!3\u0256*5 \"0\u0257\"\"1!3\u0258*) \"0\u0259\"\"1!3\u025A,S&7\xBB*M \"0\u01F0\"\"1!3\u01F1*A \"0\u0255\"\"1!3\u0256*5 \"0\u0257\"\"1!3\u0258*) \"0\u0259\"\"1!3\u025A\"+)%4\"6\u025B\"\"! %$\"# \"\"# \"9*\" 3\u0254"),
peg$decode("87\xBB*Y \".\u017C\"\"2\u017C3\u017D*M \"0\u01F0\"\"1!3\u01F1*A \"0\u0255\"\"1!3\u0256*5 \"0\u0257\"\"1!3\u0258*) \"0\u0259\"\"1!3\u025A9*\" 3\u025C"),
peg$decode("8!7\xBA+S$ &7\xBD*) \".Q\"\"2Q3R,/&7\xBD*) \".Q\"\"2Q3R\"+)%4\"6\u025E\"\"! %$\"# \"\"# \"9*\" 3\u025D"),
peg$decode("8!7\xBB*) \"0\u01F0\"\"1!3\u01F1+;$ &7\xBD,#&7\xBD\"+)%4\"6\u0260\"\"! %$\"# \"\"# \"9*\" 3\u025F")
],
peg$currPos = 0,
peg$reportedPos = 0,
peg$cachedPos = 0,
peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },
peg$maxFailPos = 0,
peg$maxFailExpected = [],
peg$silentFails = 0,
peg$result;
if ("startRule" in options) {
if (!(options.startRule in peg$startRuleIndices)) {
throw new Error("Can't start parsing from rule \"" + options.startRule + "\".");
}
peg$startRuleIndex = peg$startRuleIndices[options.startRule];
}
function text() {
return input.substring(peg$reportedPos, peg$currPos);
}
function offset() {
return peg$reportedPos;
}
function line() {
return peg$computePosDetails(peg$reportedPos).line;
}
function column() {
return peg$computePosDetails(peg$reportedPos).column;
}
function expected(description) {
throw peg$buildException(
null,
[{ type: "other", description: description }],
peg$reportedPos
);
}
function error(message) {
throw peg$buildException(message, null, peg$reportedPos);
}
function peg$computePosDetails(pos) {
function advance(details, startPos, endPos) {
var p, ch;
for (p = startPos; p < endPos; p++) {
ch = input.charAt(p);
if (ch === "\n") {
if (!details.seenCR) { details.line++; }
details.column = 1;
details.seenCR = false;
} else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") {
details.line++;
details.column = 1;
details.seenCR = true;
} else {
details.column++;
details.seenCR = false;
}
}
}
if (peg$cachedPos !== pos) {
if (peg$cachedPos > pos) {
peg$cachedPos = 0;
peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };
}
advance(peg$cachedPosDetails, peg$cachedPos, pos);
peg$cachedPos = pos;
}
return peg$cachedPosDetails;
}
function peg$fail(expected) {
if (peg$currPos < peg$maxFailPos) { return; }
if (peg$currPos > peg$maxFailPos) {
peg$maxFailPos = peg$currPos;
peg$maxFailExpected = [];
}
peg$maxFailExpected.push(expected);
}
function peg$buildException(message, expected, pos) {
function cleanupExpected(expected) {
var i = 1;
expected.sort(function(a, b) {
if (a.description < b.description) {
return -1;
} else if (a.description > b.description) {
return 1;
} else {
return 0;
}
});
while (i < expected.length) {
if (expected[i - 1] === expected[i]) {
expected.splice(i, 1);
} else {
i++;
}
}
}
function buildMessage(expected, found) {
function stringEscape(s) {
function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }
return s
.replace(/\\/g, '\\\\')
.replace(/"/g, '\\"')
.replace(/\x08/g, '\\b')
.replace(/\t/g, '\\t')
.replace(/\n/g, '\\n')
.replace(/\f/g, '\\f')
.replace(/\r/g, '\\r')
.replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(ch) { return '\\x0' + hex(ch); })
.replace(/[\x10-\x1F\x80-\xFF]/g, function(ch) { return '\\x' + hex(ch); })
.replace(/[\u0180-\u0FFF]/g, function(ch) { return '\\u0' + hex(ch); })
.replace(/[\u1080-\uFFFF]/g, function(ch) { return '\\u' + hex(ch); });
}
var expectedDescs = new Array(expected.length),
expectedDesc, foundDesc, i;
for (i = 0; i < expected.length; i++) {
expectedDescs[i] = expected[i].description;
}
expectedDesc = expected.length > 1
? expectedDescs.slice(0, -1).join(", ")
+ " or "
+ expectedDescs[expected.length - 1]
: expectedDescs[0];
foundDesc = found ? "\"" + stringEscape(found) + "\"" : "end of input";
return "Expected " + expectedDesc + " but " + foundDesc + " found.";
}
var posDetails = peg$computePosDetails(pos),
found = pos < input.length ? input.charAt(pos) : null;
if (expected !== null) {
cleanupExpected(expected);
}
return new SyntaxError(
message !== null ? message : buildMessage(expected, found),
expected,
found,
pos,
posDetails.line,
posDetails.column
);
}
function peg$decode(s) {
var bc = new Array(s.length), i;
for (i = 0; i < s.length; i++) {
bc[i] = s.charCodeAt(i) - 32;
}
return bc;
}
function peg$parseRule(index) {
var bc = peg$bytecode[index],
ip = 0,
ips = [],
end = bc.length,
ends = [],
stack = [],
params, i;
function protect(object) {
return Object.prototype.toString.apply(object) === "[object Array]" ? [] : object;
}
while (true) {
while (ip < end) {
switch (bc[ip]) {
case 0:
stack.push(protect(peg$consts[bc[ip + 1]]));
ip += 2;
break;
case 1:
stack.push(peg$currPos);
ip++;
break;
case 2:
stack.pop();
ip++;
break;
case 3:
peg$currPos = stack.pop();
ip++;
break;
case 4:
stack.length -= bc[ip + 1];
ip += 2;
break;
case 5:
stack.splice(-2, 1);
ip++;
break;
case 6:
stack[stack.length - 2].push(stack.pop());
ip++;
break;
case 7:
stack.push(stack.splice(stack.length - bc[ip + 1], bc[ip + 1]));
ip += 2;
break;
case 8:
stack.pop();
stack.push(input.substring(stack[stack.length - 1], peg$currPos));
ip++;
break;
case 9:
ends.push(end);
ips.push(ip + 3 + bc[ip + 1] + bc[ip + 2]);
if (stack[stack.length - 1]) {
end = ip + 3 + bc[ip + 1];
ip += 3;
} else {
end = ip + 3 + bc[ip + 1] + bc[ip + 2];
ip += 3 + bc[ip + 1];
}
break;
case 10:
ends.push(end);
ips.push(ip + 3 + bc[ip + 1] + bc[ip + 2]);
if (stack[stack.length - 1] === peg$FAILED) {
end = ip + 3 + bc[ip + 1];
ip += 3;
} else {
end = ip + 3 + bc[ip + 1] + bc[ip + 2];
ip += 3 + bc[ip + 1];
}
break;
case 11:
ends.push(end);
ips.push(ip + 3 + bc[ip + 1] + bc[ip + 2]);
if (stack[stack.length - 1] !== peg$FAILED) {
end = ip + 3 + bc[ip + 1];
ip += 3;
} else {
end = ip + 3 + bc[ip + 1] + bc[ip + 2];
ip += 3 + bc[ip + 1];
}
break;
case 12:
if (stack[stack.length - 1] !== peg$FAILED) {
ends.push(end);
ips.push(ip);
end = ip + 2 + bc[ip + 1];
ip += 2;
} else {
ip += 2 + bc[ip + 1];
}
break;
case 13:
ends.push(end);
ips.push(ip + 3 + bc[ip + 1] + bc[ip + 2]);
if (input.length > peg$currPos) {
end = ip + 3 + bc[ip + 1];
ip += 3;
} else {
end = ip + 3 + bc[ip + 1] + bc[ip + 2];
ip += 3 + bc[ip + 1];
}
break;
case 14:
ends.push(end);
ips.push(ip + 4 + bc[ip + 2] + bc[ip + 3]);
if (input.substr(peg$currPos, peg$consts[bc[ip + 1]].length) === peg$consts[bc[ip + 1]]) {
end = ip + 4 + bc[ip + 2];
ip += 4;
} else {
end = ip + 4 + bc[ip + 2] + bc[ip + 3];
ip += 4 + bc[ip + 2];
}
break;
case 15:
ends.push(end);
ips.push(ip + 4 + bc[ip + 2] + bc[ip + 3]);
if (input.substr(peg$currPos, peg$consts[bc[ip + 1]].length).toLowerCase() === peg$consts[bc[ip + 1]]) {
end = ip + 4 + bc[ip + 2];
ip += 4;
} else {
end = ip + 4 + bc[ip + 2] + bc[ip + 3];
ip += 4 + bc[ip + 2];
}
break;
case 16:
ends.push(end);
ips.push(ip + 4 + bc[ip + 2] + bc[ip + 3]);
if (peg$consts[bc[ip + 1]].test(input.charAt(peg$currPos))) {
end = ip + 4 + bc[ip + 2];
ip += 4;
} else {
end = ip + 4 + bc[ip + 2] + bc[ip + 3];
ip += 4 + bc[ip + 2];
}
break;
case 17:
stack.push(input.substr(peg$currPos, bc[ip + 1]));
peg$currPos += bc[ip + 1];
ip += 2;
break;
case 18:
stack.push(peg$consts[bc[ip + 1]]);
peg$currPos += peg$consts[bc[ip + 1]].length;
ip += 2;
break;
case 19:
stack.push(peg$FAILED);
if (peg$silentFails === 0) {
peg$fail(peg$consts[bc[ip + 1]]);
}
ip += 2;
break;
case 20:
peg$reportedPos = stack[stack.length - 1 - bc[ip + 1]];
ip += 2;
break;
case 21:
peg$reportedPos = peg$currPos;
ip++;
break;
case 22:
params = bc.slice(ip + 4, ip + 4 + bc[ip + 3]);
for (i = 0; i < bc[ip + 3]; i++) {
params[i] = stack[stack.length - 1 - params[i]];
}
stack.splice(
stack.length - bc[ip + 2],
bc[ip + 2],
peg$consts[bc[ip + 1]].apply(null, params)
);
ip += 4 + bc[ip + 3];
break;
case 23:
stack.push(peg$parseRule(bc[ip + 1]));
ip += 2;
break;
case 24:
peg$silentFails++;
ip++;
break;
case 25:
peg$silentFails--;
ip++;
break;
default:
throw new Error("Invalid opcode: " + bc[ip] + ".");
}
}
if (ends.length > 0) {
end = ends.pop();
ip = ips.pop();
} else {
break;
}
}
return stack[0];
}
var flattenString = function(arrs) {
var acum ="";
for(var i=0; arrs && i< arrs.length; i++) {
if(typeof(arrs[i])==='string') {
acum = acum + arrs[i];
} else {
acum = acum + arrs[i].join('');
}
}
return acum;
}
var GlobalBlankNodeCounter = 0;
var prefixes = {};
var registerPrefix = function(prefix, uri) {
prefixes[prefix] = uri;
}
var registerDefaultPrefix = function(uri) {
prefixes[null] = uri;
}
var arrayToString = function(array) {
var tmp = "";
for(var i=0; array && i<array.length; i++) {
tmp = tmp + array[i];
}
return tmp.toUpperCase();
}
peg$result = peg$parseRule(peg$startRuleIndex);
if (peg$result !== peg$FAILED && peg$currPos === input.length) {
return peg$result;
} else {
if (peg$result !== peg$FAILED && peg$currPos < input.length) {
peg$fail({ type: "end", description: "end of input" });
}
throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);
}
}
return {
SyntaxError: SyntaxError,
parse: parse
};
})() });