From e8629688f2f2a4a8240ed84d2f2f3045104db1b3 Mon Sep 17 00:00:00 2001 From: Cosmo Myzrail Gorynych Date: Mon, 30 Sep 2019 16:30:17 +1200 Subject: [PATCH 01/44] :bug: Fix unclosed polygon collision shapes with --- app/data/ct.libs/place/index.js | 2 +- src/node_requires/exporter.js | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/data/ct.libs/place/index.js b/app/data/ct.libs/place/index.js index ebe835883..e37cf15b4 100644 --- a/app/data/ct.libs/place/index.js +++ b/app/data/ct.libs/place/index.js @@ -57,7 +57,7 @@ vertices.push(new SSCD.Vector(point.x * copy.scale.x, point.y * copy.scale.y)); } } - return new SSCD.LineStrip(position, vertices, false); + return new SSCD.LineStrip(position, vertices, Boolean(shape.closedStrip)); } if (shape.type === 'line') { return new SSCD.Line( diff --git a/src/node_requires/exporter.js b/src/node_requires/exporter.js index 41b5d2381..187313f9a 100644 --- a/src/node_requires/exporter.js +++ b/src/node_requires/exporter.js @@ -75,7 +75,8 @@ const getTextureShape = texture => { if (texture.shape === 'strip') { return { type: 'strip', - points: texture.stripPoints + points: texture.stripPoints, + closedStrip: texture.closedStrip }; } return { From dcfd5ffa24e9edef93bee80a484fd6e75c6d7289 Mon Sep 17 00:00:00 2001 From: Cosmo Myzrail Gorynych Date: Mon, 30 Sep 2019 16:30:56 +1200 Subject: [PATCH 02/44] :sparkles: Add a debug mode to ct.place (you can find it in the settings tab) --- app/data/ct.libs/.eslintrc.json | 3 +- app/data/ct.libs/place/index.js | 60 ++++++++++++++++---- app/data/ct.libs/place/injects/beforedraw.js | 16 ++++++ app/data/ct.libs/place/injects/oncreate.js | 10 ++++ app/data/ct.libs/place/injects/start.js | 2 +- app/data/ct.libs/place/module.json | 14 +++++ 6 files changed, 92 insertions(+), 13 deletions(-) create mode 100644 app/data/ct.libs/place/injects/beforedraw.js diff --git a/app/data/ct.libs/.eslintrc.json b/app/data/ct.libs/.eslintrc.json index d728f5e97..59a9c57b9 100644 --- a/app/data/ct.libs/.eslintrc.json +++ b/app/data/ct.libs/.eslintrc.json @@ -1,6 +1,7 @@ { "globals": { - "ct": false + "ct": false, + "PIXI": true }, "rules": { "object-shorthand": 0 diff --git a/app/data/ct.libs/place/index.js b/app/data/ct.libs/place/index.js index e37cf15b4..3746e8236 100644 --- a/app/data/ct.libs/place/index.js +++ b/app/data/ct.libs/place/index.js @@ -1,5 +1,5 @@ /* eslint-disable no-underscore-dangle */ -/* global ct SSCD */ +/* global SSCD */ /* eslint prefer-destructuring: 0 */ (function (ct) { const circlePrecision = 16, @@ -12,7 +12,7 @@ position.x -= copy.scale.x > 0? (shape.left * copy.scale.x) : (-copy.scale.x * shape.right); position.y -= copy.scale.y > 0? (shape.top * copy.scale.y) : (-shape.bottom * copy.scale.y); return new SSCD.Rectangle( - position, + position, new SSCD.Vector(Math.abs((shape.left + shape.right) * copy.scale.x), Math.abs((shape.bottom + shape.top) * copy.scale.y)) ); } @@ -92,6 +92,37 @@ } return hashes; }, + /** + * Applied to copies in the debug mode. Draws a collision shape + * @this Copy + * @returns {void} + */ + drawDebugGraphic() { + const shape = this._shape || getSSCDShape(this); + const g = this.$cDebugCollision; + const color = this.$cHadCollision? 0x00ff00 : 0x0066ff; + if (shape instanceof SSCD.Rectangle) { + const pos = shape.get_position(), + size = shape.get_size(); + g.lineStyle(2, color) + .drawRect(pos.x - this.x, pos.y - this.y, size.x, size.y); + } else if (shape instanceof SSCD.LineStrip) { + g.lineStyle(2, color) + .moveTo(shape.__points[0].x, shape.__points[0].y); + for (let i = 1; i < shape.__points.length; i++) { + g.lineTo(shape.__points[i].x, shape.__points[i].y); + } + } else if (shape instanceof SSCD.Circle) { + g.lineStyle(2, color) + .drawCircle(0, 0, shape.get_radius()); + } else { + g.lineStyle(4, 0xff0000) + .moveTo(-40, -40) + .lineTo(40, 40,) + .moveTo(-40, 40) + .lineTo(40, -40); + } + }, collide(c1, c2) { // ct.place.collide() // Test collision between two copies @@ -105,12 +136,19 @@ return false; } } - return SSCD.CollisionManager.test_collision(c1._shape, c2._shape); + if (SSCD.CollisionManager.test_collision(c1._shape, c2._shape)) { + if ([/*%debugMode%*/][0]) { + c1.$cHadCollision = true; + c2.$cHadCollision = true; + } + return true; + } + return false; }, /** - * Determines if the place in (x,y) is occupied. + * Determines if the place in (x,y) is occupied. * Optionally can take 'ctype' as a filter for obstackles' collision group (not shape type) - * + * * @param {Copy} me The object to check collisions on * @param {Number} [x] The x coordinate to check, as if `me` was placed there. * @param {Number} [y] The y coordinate to check, as if `me` was placed there. @@ -120,7 +158,7 @@ * @returns {Copy|Array} The collided copy, or an array of all the detected collisions (if `multiple` is `true`) */ occupied(me, x, y, ctype, multiple) { - var oldx = me.x, + var oldx = me.x, oldy = me.y, shapeCashed = me._shape; let hashes; @@ -184,7 +222,7 @@ meet(me, x, y, type, multiple) { // ct.place.meet([, type: Type]) // detects collision between a given copy and a copy of a certain type - var oldx = me.x, + var oldx = me.x, oldy = me.y, shapeCashed = me._shape; let hashes; @@ -364,7 +402,7 @@ me.y += ct.u.ldy(length, dir); delete me._shape; me.dir = dir; - // otherwise, try to change direction by 30...60...90 degrees. + // otherwise, try to change direction by 30...60...90 degrees. // Direction changes over time (ct.place.m). } else { for (var i = -1; i <= 1; i+= 2) { @@ -382,14 +420,14 @@ }, /** * Throws a ray from point (x1, y1) to (x2, y2), returning all the instances that touched the ray. - * The first copy in the returned array is the closest copy, the last one is the furthest. - * + * The first copy in the returned array is the closest copy, the last one is the furthest. + * * @param {Number} x1 A horizontal coordinate of the starting point of the ray. * @param {Number} y1 A vertical coordinate of the starting point of the ray. * @param {Number} x2 A horizontal coordinate of the ending point of the ray. * @param {Number} y2 A vertical coordinate of the ending point of the ray. * @param {String} [ctype] An optional collision group to trace against. If omitted, will trace through all the copies in the current room. - * + * * @returns {Array} Array of all the copies that touched the ray */ trace(x1, y1, x2, y2, ctype) { diff --git a/app/data/ct.libs/place/injects/beforedraw.js b/app/data/ct.libs/place/injects/beforedraw.js new file mode 100644 index 000000000..e43d1ab52 --- /dev/null +++ b/app/data/ct.libs/place/injects/beforedraw.js @@ -0,0 +1,16 @@ +if ([/*%debugMode%*/][0] && this instanceof ct.types.Copy) { + this.$cDebugText.scale.x = this.$cDebugCollision.scale.x = 1 / this.scale.x; + this.$cDebugText.scale.y = this.$cDebugCollision.scale.y = 1 / this.scale.y; + this.$cDebugText.rotation = this.$cDebugCollision.rotation = -ct.u.degToRad(this.rotation); + + const newtext = `Partitions: ${this.$chashes.join(', ')} +Group: ${this.ctype} +Shape: ${this._shape && this._shape.__type}`; + if (this.$cDebugText.text !== newtext) { + this.$cDebugText.text = newtext; + } + this.$cDebugCollision + .clear(); + ct.place.drawDebugGraphic.apply(this); + this.$cHadCollision = false; +} diff --git a/app/data/ct.libs/place/injects/oncreate.js b/app/data/ct.libs/place/injects/oncreate.js index 1aa5bbeec..9467dcd24 100644 --- a/app/data/ct.libs/place/injects/oncreate.js +++ b/app/data/ct.libs/place/injects/oncreate.js @@ -6,3 +6,13 @@ for (const hash of this.$chashes) { ct.place.grid[hash].push(this); } } +if ([/*%debugMode%*/][0] && this instanceof ct.types.Copy) { + this.$cDebugText = new PIXI.Text('Not initialized', { + fill: 0xffffff, + dropShadow: true, + dropShadowDistance: 2, + fontSize: [/*%debugText%*/][0] || 16 + }); + this.$cDebugCollision = new PIXI.Graphics(); + this.addChild(this.$cDebugCollision, this.$cDebugText); +} diff --git a/app/data/ct.libs/place/injects/start.js b/app/data/ct.libs/place/injects/start.js index c5edbf36e..9dbb4a71f 100644 --- a/app/data/ct.libs/place/injects/start.js +++ b/app/data/ct.libs/place/injects/start.js @@ -23,5 +23,5 @@ Object.defineProperty(ct.types.Copy.prototype, 'moveContinuous', { this.vspeed += this.gravity * ct.delta * Math.sin(this.gravityDir*Math.PI/-180); } return ct.place.moveAlong(this, this.direction, this.speed, ctype, precision); - } + } }); diff --git a/app/data/ct.libs/place/module.json b/app/data/ct.libs/place/module.json index d77e5ab58..6abb29741 100644 --- a/app/data/ct.libs/place/module.json +++ b/app/data/ct.libs/place/module.json @@ -21,6 +21,20 @@ "id": "gridY", "default": 512, "type": "number" + }, { + "name": "Debug mode", + "help": "Displays collision shapes, collision groups and partitions. It will also write additional keys to most colliding objects. Doesn't work on hidden objects.", + "key": "debugMode", + "id": "debugMode", + "default": false, + "type": "checkbox" + }, { + "name": "Debug text size", + "help": "", + "key": "debugText", + "id": "debugText", + "default": 16, + "type": "number" }], "typeExtends": [{ "name": "Collision group", From 11576473fa3549d97b05f486436d5e4086224ce7 Mon Sep 17 00:00:00 2001 From: Cosmo Myzrail Gorynych Date: Mon, 30 Sep 2019 17:47:48 +1200 Subject: [PATCH 03/44] :bug: Fix numerous collision problems that appeared with rotated entities --- app/data/ct.libs/place/index.js | 8 ++++---- app/data/ct.libs/place/injects/afterdraw.js | 3 ++- app/data/ct.release/main.js | 6 ++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/app/data/ct.libs/place/index.js b/app/data/ct.libs/place/index.js index 3746e8236..648203816 100644 --- a/app/data/ct.libs/place/index.js +++ b/app/data/ct.libs/place/index.js @@ -17,14 +17,14 @@ ); } const upperLeft = ct.u.rotate(-shape.left * copy.scale.x, -shape.top * copy.scale.y, copy.rotation), - upperRight = ct.u.rotate(shape.right * copy.scale.x, -shape.top * copy.scale.y, copy.rotation), bottomLeft = ct.u.rotate(-shape.left * copy.scale.x, shape.bottom * copy.scale.y, copy.rotation), - bottomRight = ct.u.rotate(shape.right * copy.scale.x, shape.bottom * copy.scale.y, copy.rotation); + bottomRight = ct.u.rotate(shape.right * copy.scale.x, shape.bottom * copy.scale.y, copy.rotation), + upperRight = ct.u.rotate(shape.right * copy.scale.x, -shape.top * copy.scale.y, copy.rotation); return new SSCD.LineStrip(position, [ new SSCD.Vector(upperLeft[0], upperLeft[1]), - new SSCD.Vector(upperRight[0], upperRight[1]), new SSCD.Vector(bottomLeft[0], bottomLeft[1]), - new SSCD.Vector(bottomRight[0], bottomRight[1]) + new SSCD.Vector(bottomRight[0], bottomRight[1]), + new SSCD.Vector(upperRight[0], upperRight[1]) ], true); } if (shape.type === 'circle') { diff --git a/app/data/ct.libs/place/injects/afterdraw.js b/app/data/ct.libs/place/injects/afterdraw.js index 95a180acf..55b5c3769 100644 --- a/app/data/ct.libs/place/injects/afterdraw.js +++ b/app/data/ct.libs/place/injects/afterdraw.js @@ -1,4 +1,5 @@ -if (this.x !== this.xprev || this.y !== this.yprev) { +/* eslint-disable no-underscore-dangle */ +if ((this.transform && (this.transform._localID !== this.transform._currentLocalID)) || this.x !== this.xprev || this.y !== this.yprev) { delete this._shape; const oldHashes = this.$chashes || []; this.$chashes = ct.place.getHashes(this); diff --git a/app/data/ct.release/main.js b/app/data/ct.release/main.js index 175daf947..c177c397e 100644 --- a/app/data/ct.release/main.js +++ b/app/data/ct.release/main.js @@ -93,9 +93,11 @@ ct.u = { return ct.u.rotateRad(x, y, ct.u.degToRad(deg)); }, rotateRad(x, y, rad) { + const sin = Math.sin(rad), + cos = Math.cos(rad); return [ - Math.cos(rad) * x - Math.sin(rad) * y, - Math.sin(rad) * x - Math.cos(rad) * y + cos * x - sin * y, + cos * y + sin * x ]; }, deltaDir(dir1, dir2) { From 7109715bf3334638821c0bcd3dcf7c508a46e1b2 Mon Sep 17 00:00:00 2001 From: Cosmo Myzrail Gorynych aka Comigo Date: Mon, 30 Sep 2019 23:19:58 +1200 Subject: [PATCH 04/44] :sparkles: Basic support for Yarn --- app/data/ct.libs/yarn/README.md | 4 + app/data/ct.libs/yarn/index.js | 121 +++++++++ app/data/ct.libs/yarn/module.json | 10 + app/package-lock.json | 20 +- src/examples/yarn.ict | 231 ++++++++++++++++++ .../i4a04ffe6-c92a-428e-9fe4-5e8d2ce9c835.png | Bin 0 -> 46694 bytes ...6-c92a-428e-9fe4-5e8d2ce9c835.png_prev.png | Bin 0 -> 2234 bytes ...c92a-428e-9fe4-5e8d2ce9c835.png_prev@2.png | Bin 0 -> 5094 bytes .../i5aabca45-bbbd-4792-b3a9-ba79bd4a66fd.png | Bin 0 -> 49889 bytes ...5-bbbd-4792-b3a9-ba79bd4a66fd.png_prev.png | Bin 0 -> 2401 bytes ...bbbd-4792-b3a9-ba79bd4a66fd.png_prev@2.png | Bin 0 -> 5482 bytes .../ie0cbccef-93ee-4c8a-ab19-4fcef639963c.png | Bin 0 -> 4520 bytes ...f-93ee-4c8a-ab19-4fcef639963c.png_prev.png | Bin 0 -> 298 bytes ...93ee-4c8a-ab19-4fcef639963c.png_prev@2.png | Bin 0 -> 872 bytes .../iec75835b-2afd-4f96-9373-804b4f80a84d.png | Bin 0 -> 48741 bytes ...b-2afd-4f96-9373-804b4f80a84d.png_prev.png | Bin 0 -> 2331 bytes ...2afd-4f96-9373-804b4f80a84d.png_prev@2.png | Bin 0 -> 5341 bytes src/examples/yarn/img/r7a1486b7f1d9.png | Bin 0 -> 7715 bytes src/examples/yarn/img/splash.png | Bin 0 -> 7715 bytes src/examples/yarn/include/theStory.json | 162 ++++++++++++ 20 files changed, 538 insertions(+), 10 deletions(-) create mode 100644 app/data/ct.libs/yarn/README.md create mode 100644 app/data/ct.libs/yarn/index.js create mode 100644 app/data/ct.libs/yarn/module.json create mode 100644 src/examples/yarn.ict create mode 100644 src/examples/yarn/img/i4a04ffe6-c92a-428e-9fe4-5e8d2ce9c835.png create mode 100644 src/examples/yarn/img/i4a04ffe6-c92a-428e-9fe4-5e8d2ce9c835.png_prev.png create mode 100644 src/examples/yarn/img/i4a04ffe6-c92a-428e-9fe4-5e8d2ce9c835.png_prev@2.png create mode 100644 src/examples/yarn/img/i5aabca45-bbbd-4792-b3a9-ba79bd4a66fd.png create mode 100644 src/examples/yarn/img/i5aabca45-bbbd-4792-b3a9-ba79bd4a66fd.png_prev.png create mode 100644 src/examples/yarn/img/i5aabca45-bbbd-4792-b3a9-ba79bd4a66fd.png_prev@2.png create mode 100644 src/examples/yarn/img/ie0cbccef-93ee-4c8a-ab19-4fcef639963c.png create mode 100644 src/examples/yarn/img/ie0cbccef-93ee-4c8a-ab19-4fcef639963c.png_prev.png create mode 100644 src/examples/yarn/img/ie0cbccef-93ee-4c8a-ab19-4fcef639963c.png_prev@2.png create mode 100644 src/examples/yarn/img/iec75835b-2afd-4f96-9373-804b4f80a84d.png create mode 100644 src/examples/yarn/img/iec75835b-2afd-4f96-9373-804b4f80a84d.png_prev.png create mode 100644 src/examples/yarn/img/iec75835b-2afd-4f96-9373-804b4f80a84d.png_prev@2.png create mode 100644 src/examples/yarn/img/r7a1486b7f1d9.png create mode 100644 src/examples/yarn/img/splash.png create mode 100644 src/examples/yarn/include/theStory.json diff --git a/app/data/ct.libs/yarn/README.md b/app/data/ct.libs/yarn/README.md new file mode 100644 index 000000000..8e5463781 --- /dev/null +++ b/app/data/ct.libs/yarn/README.md @@ -0,0 +1,4 @@ +ct.yarn is a tool to read Yarn projects and create dialogues/interactive fiction in your games. + +The Yarn Editor can be found [here](https://github.com/YarnSpinnerTool/YarnEditor). + diff --git a/app/data/ct.libs/yarn/index.js b/app/data/ct.libs/yarn/index.js new file mode 100644 index 000000000..242bda4fa --- /dev/null +++ b/app/data/ct.libs/yarn/index.js @@ -0,0 +1,121 @@ +/* eslint-disable no-cond-assign */ +(function () { + const commandPattern = /<<([\s\S]+?)>>/g; + const optionsPattern = /\[\[(Answer:([^|]+?)\|)?([^|]+?)\]\]/g; + const parse = function(raw) { + try { + let {body} = raw; + const links = {}; + const options = []; + const commands = []; + let rawCommand, rawOption; + while (rawCommand = commandPattern.exec(body)) { + commands.push(rawCommand[1]); + } + while (rawOption = optionsPattern.exec(body)) { + const option = rawOption[2] || rawOption[3]; + // eslint-disable-next-line prefer-destructuring + links[option] = rawOption[3]; + options.push(option); + } + body = body + .replace(commandPattern, '') + .replace(optionsPattern, '') + .trim(); + const tags = raw.tags.split(' ').filter(elt => elt); // filter out empty strings + return { + body, + commands, + options, + tags, + links + }; + } catch (e) { + console.error('An error occured while attempting to parse a node ', raw); + throw e; + } + }; + class YarnStory { + constructor(data) { + if (!data.length) { + throw new Error('An empty entity was given instead of a Yarn project'); + } + this.nodes = {}; + for (const node of data) { + node.title = node.title.trim(); + this.nodes[node.title] = node; + } + this.startingNode = this.nodes.Start || data[0]; + this.start(); + } + start() { + this.jump(this.startingNode.title); + } + get parsed() { + // eslint-disable-next-line no-underscore-dangle + return this.$parsed || (this.$parsed = parse(this.raw)); + } + get options() { + return this.parsed.options; + } + say(line) { + if (!(line in this.parsed.links)) { + this.log(); + throw new Error(`There is no such option as "${line}". It could be a typo, or maybe you are using a title instead of a dialogue option.`); + } + this.jump(this.parsed.links[line]); + } + jump(title) { + if (!(title in this.nodes)) { + this.log(); + throw new Error(`Could not find a node called "${title}".`); + } + this.previousNode = this.raw; + this.raw = this.nodes[title]; + delete this.$parsed; + } + back() { + this.jump(this.previousNode.title); + } + + + get text() { + return this.parsed.body; + } + get body() { + return this.parsed.body; + } + get title() { + return this.raw.title; + } + get commands() { + return this.parsed.commands; + } + get tags() { + return this.parsed.tags; + } + + log() { + setTimeout(() => { + // eslint-disable-next-line no-console + console.log('The story in question is ', this); + // eslint-disable-next-line no-console + console.log('The current node is ', this.raw); + // eslint-disable-next-line no-console + console.log('The parsed data is ', this.parsed); + }, 0); + } + } + + ct.yarn = { + openStory(data) { + return new YarnStory(data); + }, + openFromFile(url) { + return fetch(url) + .then(data => data.json()) + .then(json => new YarnStory(json)); + } + }; +})(); + diff --git a/app/data/ct.libs/yarn/module.json b/app/data/ct.libs/yarn/module.json new file mode 100644 index 000000000..4607b3e36 --- /dev/null +++ b/app/data/ct.libs/yarn/module.json @@ -0,0 +1,10 @@ +{ + "main": { + "name": "ct.yarn", + "version": "0.0.0", + "authors": [{ + "name": "Cosmo Myzrail Gorynych", + "mail": "admin@nersta.ru" + }] + } +} \ No newline at end of file diff --git a/app/package-lock.json b/app/package-lock.json index c26bc397b..2c0d02728 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -549,7 +549,7 @@ }, "bl": { "version": "1.2.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "resolved": "http://registry.npmjs.org/bl/-/bl-1.2.2.tgz", "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", "requires": { "readable-stream": "^2.3.5", @@ -872,7 +872,7 @@ }, "deprecate": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/deprecate/-/deprecate-1.0.0.tgz", "integrity": "sha1-ZhSQ7SQokWpsiIPYg05WRvTkpKg=" }, "dot-prop": { @@ -1044,7 +1044,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, "getpass": { @@ -1088,7 +1088,7 @@ }, "got": { "version": "6.7.1", - "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "resolved": "http://registry.npmjs.org/got/-/got-6.7.1.tgz", "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", "requires": { "create-error-class": "^3.0.0", @@ -1270,7 +1270,7 @@ }, "is-obj": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" }, "is-object": { @@ -1348,7 +1348,7 @@ }, "jsonfile": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "resolved": "http://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", "requires": { "graceful-fs": "^4.1.6" @@ -1535,7 +1535,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" @@ -1543,7 +1543,7 @@ "dependencies": { "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } @@ -1560,7 +1560,7 @@ }, "ncp": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" }, "no-case": { @@ -2445,7 +2445,7 @@ }, "xmlbuilder": { "version": "9.0.7", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" }, "xmldom": { diff --git a/src/examples/yarn.ict b/src/examples/yarn.ict new file mode 100644 index 000000000..a40353c71 --- /dev/null +++ b/src/examples/yarn.ict @@ -0,0 +1,231 @@ +{ + "ctjsVersion": "1.0.2", + "notes": "/* empty */", + "libs": { + "place": { + "gridX": 512, + "gridY": 512 + }, + "fittoscreen": { + "mode": "scaleFit" + }, + "mouse": {}, + "keyboard": {}, + "keyboard.polyfill": {}, + "sound.howler": {}, + "akatemplate": { + "csscss": "body {\n background: #fff;\n}" + }, + "yarn": {} + }, + "textures": [ + { + "name": "CatThoughtful", + "untill": 0, + "grid": [ + 1, + 1 + ], + "axis": [ + 396, + 462 + ], + "marginx": 0, + "marginy": 0, + "imgWidth": 793, + "imgHeight": 924, + "width": 793, + "height": 924, + "offx": 0, + "offy": 0, + "origname": "i5aabca45-bbbd-4792-b3a9-ba79bd4a66fd.png", + "source": "/home/comigo/Рабочий стол/CatThoughtful.png", + "shape": "rect", + "left": 396, + "right": 397, + "top": 462, + "bottom": 462, + "uid": "5aabca45-bbbd-4792-b3a9-ba79bd4a66fd", + "lastmod": 1569837312550 + }, + { + "name": "CatNormal", + "untill": 0, + "grid": [ + 1, + 1 + ], + "axis": [ + 396, + 462 + ], + "marginx": 0, + "marginy": 0, + "imgWidth": 793, + "imgHeight": 924, + "width": 793, + "height": 924, + "offx": 0, + "offy": 0, + "origname": "iec75835b-2afd-4f96-9373-804b4f80a84d.png", + "source": "/home/comigo/Рабочий стол/CatNormal.png", + "shape": "rect", + "left": 396, + "right": 397, + "top": 462, + "bottom": 462, + "uid": "ec75835b-2afd-4f96-9373-804b4f80a84d", + "lastmod": 1569837308602 + }, + { + "name": "CatHappy", + "untill": 0, + "grid": [ + 1, + 1 + ], + "axis": [ + 396, + 462 + ], + "marginx": 0, + "marginy": 0, + "imgWidth": 793, + "imgHeight": 924, + "width": 793, + "height": 924, + "offx": 0, + "offy": 0, + "origname": "i4a04ffe6-c92a-428e-9fe4-5e8d2ce9c835.png", + "source": "/home/comigo/Рабочий стол/CatHappy.png", + "shape": "rect", + "left": 396, + "right": 397, + "top": 462, + "bottom": 462, + "uid": "4a04ffe6-c92a-428e-9fe4-5e8d2ce9c835", + "lastmod": 1569837304762 + }, + { + "name": "Button", + "untill": 0, + "grid": [ + 1, + 1 + ], + "axis": [ + 512, + 50 + ], + "marginx": 0, + "marginy": 0, + "imgWidth": 1024, + "imgHeight": 100, + "width": 1024, + "height": 100, + "offx": 0, + "offy": 0, + "origname": "ie0cbccef-93ee-4c8a-ab19-4fcef639963c.png", + "source": "/home/comigo/Рабочий стол/Button.png", + "shape": "rect", + "left": 512, + "right": 512, + "top": 50, + "bottom": 50, + "uid": "e0cbccef-93ee-4c8a-ab19-4fcef639963c", + "lastmod": 1569837505628 + } + ], + "skeletons": [], + "types": [ + { + "name": "TheCat", + "depth": 0, + "oncreate": "", + "onstep": "this.move();", + "ondraw": "", + "ondestroy": "", + "uid": "9e7aec96-1ad3-4679-a248-01180284e78e", + "texture": "ec75835b-2afd-4f96-9373-804b4f80a84d", + "extends": {}, + "lastmod": 1569837324744 + }, + { + "name": "Button", + "depth": 0, + "oncreate": "this.text = new PIXI.Text(this.option, {\n fill: 0x446ADB,\n fontWeight: 600,\n fontSize: 32,\n wordWrap: true,\n wordWrapWidth: 900,\n align: 'center'\n});\nthis.text.anchor.x = this.text.anchor.y = 0.5;\nthis.addChild(this.text);", + "onstep": "if (ct.mouse.hovers(this)) {\n if (ct.mouse.pressed) {\n ct.room.story.say(this.option);\n uiMaker();\n }\n}", + "ondraw": "", + "ondestroy": "", + "uid": "cf5c44b2-f55a-4e18-a941-f7cdf5aecd0f", + "texture": "e0cbccef-93ee-4c8a-ab19-4fcef639963c", + "extends": {}, + "lastmod": 1569840402254 + } + ], + "sounds": [], + "styles": [], + "rooms": [ + { + "name": "Main", + "oncreate": "ct.yarn.openFromFile('theStory.json')\n.then(story => {\n this.story = story;\n uiMaker();\n});\n\nthis.ctText = new PIXI.Text('', {\n fill: 0x446ADB,\n fontSize: 32,\n wordWrap: true,\n wordWrapWidth: 1024\n});\nthis.nodeTitle = new PIXI.Text('Loading the awesomeness…', {\n fill: 0x446ADB,\n fontSize: 24,\n wordWrap: true,\n wordWrapWidth: 1024\n});\nthis.ctText.x = 100;\nthis.ctText.y = 150;\nthis.nodeTitle.x = 100;\nthis.nodeTitle.y = 50;\nthis.addChild(this.ctText, this.nodeTitle);", + "onstep": "", + "ondraw": "", + "onleave": "", + "width": 1920, + "height": 1080, + "backgrounds": [], + "copies": [ + { + "x": 1536, + "y": 448, + "uid": "9e7aec96-1ad3-4679-a248-01180284e78e", + "tx": 0.75, + "ty": 0.75 + } + ], + "tiles": [ + { + "depth": -10, + "tiles": [] + } + ], + "uid": "d21d2804-d690-4c65-9657-7a1486b7f1d9", + "thumbnail": "7a1486b7f1d9", + "gridX": 64, + "gridY": 64 + } + ], + "actions": [], + "starting": 0, + "settings": { + "minifyhtmlcss": false, + "minifyjs": false, + "fps": 30, + "version": [ + 0, + 0, + 0 + ], + "versionPostfix": "", + "export": { + "windows64": true, + "windows32": true, + "linux64": true, + "linux32": true, + "mac64": true, + "debug": false + } + }, + "scripts": [ + { + "name": "uiMaker", + "code": "var uiMaker = function() {\n const story = ct.room.story;\n // Clear the previous buttons\n for (const button of ct.types.list['Button']) {\n button.kill = true;\n }\n \n // Update the speech and the node's title\n ct.room.ctText.text = story.body;\n ct.room.nodeTitle.text = story.title;\n \n // Re-generate buttons\n const options = story.options;\n var buttonY = ct.viewHeight - 60;\n for (const option of options) {\n ct.types.copy('Button', ct.viewWidth / 2, buttonY, {\n option: option\n });\n buttonY -= 120;\n }\n \n // Update the cat's texture, if needed\n const cat = ct.types.list['TheCat'][0];\n if (story.tags.indexOf('cat:happy') !== -1) {\n cat.tex = 'CatHappy';\n } else if (story.tags.indexOf('cat:thoughtful') !== -1) {\n cat.tex = 'CatThoughtful';\n } else if (story.tags.indexOf('cat:normal') !== -1) {\n cat.tex = 'CatNormal';\n }\n};" + }, + { + "name": "Background color", + "code": "ct.pixiApp.renderer.backgroundColor = 0xffffff;" + } + ], + "fonts": [] +} diff --git a/src/examples/yarn/img/i4a04ffe6-c92a-428e-9fe4-5e8d2ce9c835.png b/src/examples/yarn/img/i4a04ffe6-c92a-428e-9fe4-5e8d2ce9c835.png new file mode 100644 index 0000000000000000000000000000000000000000..0548b45629e974df66ad2bf88f64c02c453b089f GIT binary patch literal 46694 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

D>tuIi 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 OpTX%fI)&Pp>;D50ViVE; literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/i4a04ffe6-c92a-428e-9fe4-5e8d2ce9c835.png_prev.png b/src/examples/yarn/img/i4a04ffe6-c92a-428e-9fe4-5e8d2ce9c835.png_prev.png new file mode 100644 index 0000000000000000000000000000000000000000..9c9950909ff4a31b2eb11a8e6201a1b03b2b14e3 GIT binary patch literal 2234 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 IM6N<$g6~Gx9RL6T literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/i5aabca45-bbbd-4792-b3a9-ba79bd4a66fd.png b/src/examples/yarn/img/i5aabca45-bbbd-4792-b3a9-ba79bd4a66fd.png new file mode 100644 index 0000000000000000000000000000000000000000..e5f5249178b4225fc1aceb92422bbe06397d928a GIT binary patch literal 49889 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 Pz#sUj;*&y2~< literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/i5aabca45-bbbd-4792-b3a9-ba79bd4a66fd.png_prev.png b/src/examples/yarn/img/i5aabca45-bbbd-4792-b3a9-ba79bd4a66fd.png_prev.png new file mode 100644 index 0000000000000000000000000000000000000000..7647caae3ee6630096b1f1b7c2f8bd94d11b3905 GIT binary patch literal 2401 zcmV-n37+hyY}p3Cf(>+d8oUMrff6VkD8;hmNoJZ%hSZp3S_lacBe|2A(xH!ZQZQj! zl5~bNgh+B5UI~u|w=j9tX|ODt2GXREOd)`6$(R7~5c96dj&SYh89JtKaE+5K?~zFeCqPT!NUmQ2>^LaKvSozSE!l z{+qPnA0+Y}YG*$>cU5bL32cXeOBF z5qL5{@l6*mO!%aDPIF)Q5vu_YEKzlx) zkzW^=AT&NA2>c>}(rz1F%v;MG8B5h*Mo0iAi_N>62#>1?fh=?*-uz074*fJ7D-$xjpT?8u2v+7z}vc^6Jc}XgWebteODS z+AwexjLSqA7tDvj2VC|H)eEe!3t%bmR1h#vZDQfJlNDazc4qulEpAu^u;hD}kb$=a zA|E|G3OTdlvHgR~kY%+YhGs{Cam4;jqkY9!RSTa0Cbz+oIr8i7i=FNf#KjQy{eBz- zfiQp7DKs`KK?58dE1;=Gfx@ctxNgMUR(es2LounAH*5k}Y@QMT4+ScGx#mPzb5o%( z>Oy8*bwYx}KAA)4ss&r3+??3HHHOAsB0AnEX zo$JP6=zUT6=2ANrulWibq-S4SH4+okVo-OX4ND5osLIFp=4idvJmlkDQ?ICUxM8G! z1mx`z%_-9>1j6?M5gSCHWMev*8C&1Igxw!q4H#omynsLdHVvXkC^>iy8+Kh#mk;A| zsY4o~&iIyV}Sz61epuOElTW*PHW)dr2RV8IYPmYv)=Ri1dR7FQaA z*NQGM29CMx($szyfCY=qQ$a*?gAvC>6W-l0uCqs9*?lo+jK5hn4D%j{NA;N&{N$x` zs`FvSVwXeOq1quFQ^1n%%_akvsUeLu5}I54F6nFYhhxsP!FY9dJ>LKLKWdSuGo*yzJ09&rF&?SM0 z@UsnPajd4thA%`=29~?*(&iA|I?Xi+F!x7ClZ{C+^#n46N}8H1V#f<(J6D9hw*CD} z*ijPFtGgFvbBl4r!7b{Szuf^e31C^_*+(KY_5PwCBw@+JDK}&I#l~~^qAKLtb<>}j zPq`c!<3sI;E_+P^

=70i(3@M0jwv-8U%v}K*+_fi`@6>n39@GmSp5HQl!n)6_x|Alq8CK@^0QnwTQvq?FpzqX1I3Vek`!Y60e0|2;I8 z;?8TG`;o|BVSHKUknY!mty+L=Yjv(D&|mbBh1*wQc9uCZYTin%`uuLH{#^-c{R-4wus#K_6nHk1 z?@G&E*kr=v?$@O~dP3`40GsDH5hm#&iIi`LjJ)z9N!P16r~q@9R*y3p$$K{rf1jwK zo&);ph@b+Pt)4#$0-lLf59-B@r~tm5pEzmcS;Fmid-Mh!PXCBbff@NViOHf;4?=V} zgAONFhpaqNUNqrtJ(vNfK$f*?ag-pusRumLzN}!8%PH;D!xKONrW~91CqR-G>r6{!p3&RH?|WtTmpb31HWQMte%ip7DV zVa7jQ4yo66-md^=t9P#;g!jxZ5;7^krZT(q>~(A=v$ZChNr?qWB=8slJ>UJxPN`k$ zm9Jj`EVk+fA{rctpu>r&Fy1S3NRI}>G%fQ^F&Oz+*K^eZ

<+9?XU_pOCQ_sB_t+ z5rG`P`(sZ+d?Kz5SOI*AmD+cTK%w8S!j|QyhEcS9^Tz0a8v#B68ZX4eeNsHi@2zml zipoVKif;|*5zx_wQRQz)z3$SOY*kA{2+nS6g3406l-YB-_$`9>N)7NOBQwpczu0;# zbx>Ozq6Uo>1muu_JR+Lal`Mlh6h$$)of8iZI05>uoZKkO;zD=P_`j)N3Em@bfuPB= zZ*ZWprpYif*yX8vehTv;!Pl)Lb&t$gB$-7U6F}iciYFW0Z7-fz0Y%juASD5 z{3EeRlroKk_CgTMdTxnm9Z1Z4f@NBH#)t}UufNH(p{f+%cJSGGhhmKhLq{N5Od+&S zC8oI~U@{mI5#qIla?6W-e~d9|88{5){ZKlNk|KZYdgK0Y^kS=82!)&EZpQl`=8Y_F TAISlQ00000NkvXXu0mjf3U7g; literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/i5aabca45-bbbd-4792-b3a9-ba79bd4a66fd.png_prev@2.png b/src/examples/yarn/img/i5aabca45-bbbd-4792-b3a9-ba79bd4a66fd.png_prev@2.png new file mode 100644 index 0000000000000000000000000000000000000000..ea57bfd332f109c7b113eebe471309f6dd073cfb GIT binary patch literal 5482 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 literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/ie0cbccef-93ee-4c8a-ab19-4fcef639963c.png b/src/examples/yarn/img/ie0cbccef-93ee-4c8a-ab19-4fcef639963c.png new file mode 100644 index 0000000000000000000000000000000000000000..fe459a17151580bc74be1a5bd28d3a8b8860747a GIT binary patch literal 4520 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 Kyv*3`#{U2TFO$pw literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/ie0cbccef-93ee-4c8a-ab19-4fcef639963c.png_prev.png b/src/examples/yarn/img/ie0cbccef-93ee-4c8a-ab19-4fcef639963c.png_prev.png new file mode 100644 index 0000000000000000000000000000000000000000..5d457e8143b3b8fbd890479905c5602943b589af GIT binary patch literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=A3a?hLn`9l&hX_s7$D+yzxJq* zOOO!rn^QtMONGT0l+tD-tJfX!zUA`9Vby!dnKuuX?`p1|b9sHD-yg$|zhxN=9Of`^ zc5ol?p1|S(WpYgbiU=z(7BWUK3IQo56$L#8Z3iIbccAO)+7r8Po(am*-sq85`n8Mu zw%nm=qYtu6AJ=c6cY4{jznV(|--*62zpiD)@TPB}-1l1Vz(#LLd$ap@rXQX+zsh^2 zP|J)pl{SxO@hdKk|9gL}L<8d^pv^H1{{$2ng#^?cm>w~0U{V26V9~G!G-v%_io0sC Ur0u?#0nqadp00i_>zopr0LDyhh5!Hn literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/ie0cbccef-93ee-4c8a-ab19-4fcef639963c.png_prev@2.png b/src/examples/yarn/img/ie0cbccef-93ee-4c8a-ab19-4fcef639963c.png_prev@2.png new file mode 100644 index 0000000000000000000000000000000000000000..598b19b3873c22d9f931cce22497aded74bb105b GIT binary patch literal 872 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrVAl6^aSW-5dpkqXe`=vj>;M1L zy%TxN&C(Sjb=cf4E^y_II%0V0FGo%tBhMMjlHw1%CKZ*4|!W27c&Yd>}f2h(PLn0F&F4N&pPNdFX7(s z>BWmvS6e^*xKtCHH_NJ9@Sa=A(ka{Cy50BNeej`YWzh9`wY8V`8{eHjKYP!~g}>J~ zUY5_jd2{ZYD`&-zr}O9eoxkWG$Nb*zztq*W;fLSd`x+-_d*tcidpoYYy?*%JJ5v^q zFApEvF{!-!*DuMq=(#>Cqrid>!V)?M@6SK5T)*9Zdj6NRrs@t?`5MXj*W1tcv;Doj z_qTXjC5M;M!<;MAw(oxYy|naiLFUJz%{vPUUtJ3cPOIShcJ0CW;15f5pR3C! zmaV$_z3xi^hp;EI4h-*WRb`n@bnRj0c(8Z<5@&|UiRBE8d%jOC;ZV^2#HY~kecvQL z#uV3kj4U7Sggr^#A|> literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/iec75835b-2afd-4f96-9373-804b4f80a84d.png b/src/examples/yarn/img/iec75835b-2afd-4f96-9373-804b4f80a84d.png new file mode 100644 index 0000000000000000000000000000000000000000..da99ab450b41b494d1e8cbc9330fd8227a639a34 GIT binary patch literal 48741 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%0D~T7F)|s~0zfj!UJoYQBy=N2wZ^xQE9r%otk0{PR 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 XogR)uw?=;f_)~iD@P3}G*~|X{aY#^X literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/iec75835b-2afd-4f96-9373-804b4f80a84d.png_prev.png b/src/examples/yarn/img/iec75835b-2afd-4f96-9373-804b4f80a84d.png_prev.png new file mode 100644 index 0000000000000000000000000000000000000000..d82e5f7ce50bd9f1d7373c0d25bea566e63b3a93 GIT binary patch literal 2331 zcmV+$3FP*PP)g$*|Lov5S|?#iNR|yIHbg`J5UO;XnKlFhL`d#*rp(ak&}qSx zX=&0aO$d?XHazkG8r;GpZ3+#RWzzs{2IvF|7)!Bzy2F?y_aCC9k? zPos0b@0{=6d+uZJ68imNDscqnvcOueOP<^B^nD1aKLaSRA4$uUvNj4}2?$5MF8OQy z$sdZV-vpTLJU%RiQX2pa3kJd}uk(6xSN~rKV6it&k)*C#B8=)uSW$SsuOfH%pcla6 z2;@t|`-w27cd{z*XthgzZ%_+hDLa`iAvr+6=)Q?|vAVd%J^3}G0$40Q6Y|Ct3Zgk-3BkW2Q1%_Yi+O9cJ9mi|%mfL*WOD{~65&ZLK``hRm_KHs(_sF4S112X zQPuOAL!^$qFU#$BVlY{jHcT=l^AQlTLg6dm`97Dn`jQXFB<&FEa_hP4a1ZgRRJ-?m^ zAqewUo<&Qm8Zp51RDoMFw< z@g7jROR|obQ7Z`F2uEy^fV~@Yz|7eC&K2x@?|Rr6hh_-;;TPGEB*NZ1fP(I0N$)T5#p&?)`3+xu)$73apWIu0iCMJzHW5b)55M8dG*$=0@Zh4xXICKkO zSzcEt3F!m9>wP`JhVx;jcfIbM;Qk=yN4EgBvcMh!&x@Hc0S*i-^Sb2CdZ2X)F#Eg5 zhna__G!e)YE9u+6$?l%puQw|w%u7X4ei~erS7L>^!@jl6Joexg?aSZZ&bkD!E%)ys z3A$Q;)#6c@H9Z~s4&Q*SC=&;c-NcJKHO}=RWMbyCUU%*!y$b3Qprp*-1Yo2dQb_>$ zIVmVENJs6loA}V*236ZsADT|Z8&w|p89lKCePR~CYCro3Ny@%~Q2c@ks4B{Q~De}f$5Tvj5^#&Qqk3m+iE61l7JEk6Bah!g@Bust)F&96*0Y>xdXr&1Uw&nyk zV!ED~1Soc#*&qqALKjnFoYX2;P7*-6tB7U+W;s3_l}c$B2g=y*9{-GgSG(m0jcBV` zfMQ4ed`ZwBjgZCLS7r88yK|jJa5W2HEAt;BV5SkWc>A(SFL*sUKQ@A^Nq}PK*~t55DMl*a%TVd{r#1 z^2l3^U`G|e@?8B_B@-PRNY%e5VZEn7y#L*p7gyU?=livbOD_H zlSG(mgd|bET?$HTDr7@bb3_4VFR7nsHdA0AcK@KLvAzck)esQ{usZy|69UgAss)YW zCRBjn&QF>;?i0eDcYBNm9Z&y+4uJxDL)I`!Z2}=Vo$?ytWyvz~RBC6NMAw^@ z_LG&YdgD{^1z{#nk#(o|n6vDik0l-nk%s`C2w z4)ytiTc$K?o&`!A{uvNB)=zoprcqR0?epZW3j$ajbxt89S6{I13s;0&9iY4euDef; zLiT`SXT4n_s?Z%-KRGh^1+Oc&dpm4dUbny`NtNNKneh*=TfS>MA5s9TBd}YD_`dT? zgeEGmsoEv~;B#yytD~WqNlgVvBJlkL`f2YgJ5?_Eu6#oZU~|?t6H$61f{rJq%J_4& zTmE)9Ov}xOuURM@uc>}X0>{&!<^(Di_z04vkxP&Z%_eu>2CZjMFHeGH%F>**p8j^-QAOuQCpp=M;dXi;u zm#V53pJ&R!K_@`;%E>K?B0b@&nDkfeE5UnY7KoTU2RjGq8g7{iBVC@l=Z8S3r7wWD zTNSK4bnRasq4J4{_lCnQgc^t_;=TOnU9W#Ey1ye(ah##<1=FFMt;)#{UeD8f=O&~8 za~%E|NyG>4iPfONug}6Bh*%b%93!PA2TxmO5|GqC?HL;jGxm8$=X?w034A?Xyev>4 zl6Vt{^9f)6{^0iaMAsCeSA4EXYXCB|Y>)b0pl7F5U_Y8Vltw&6qO%+X>z8p$gqcsV zLMzUhQ5(4HYqHpSPmi@m0qz8!S$ZhdoH=SNlBE%Z&gsN7n*^qTArm1(UnpOAaqx>V zMk519z`P%7*KtynPra``_?b~`O$(uTlMH0M{{kpQ9By#^Y_k9W002ovPDHLkV1m6l BQMUj9 literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/iec75835b-2afd-4f96-9373-804b4f80a84d.png_prev@2.png b/src/examples/yarn/img/iec75835b-2afd-4f96-9373-804b4f80a84d.png_prev@2.png new file mode 100644 index 0000000000000000000000000000000000000000..9bf49dfaf1a0408fabeb5dc283fd1cb50c0eca4c GIT binary patch literal 5341 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 literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/r7a1486b7f1d9.png b/src/examples/yarn/img/r7a1486b7f1d9.png new file mode 100644 index 0000000000000000000000000000000000000000..1b09cafe6a366a81f85b8157bc93174a2545129b GIT binary patch literal 7715 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 literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/splash.png b/src/examples/yarn/img/splash.png new file mode 100644 index 0000000000000000000000000000000000000000..1b09cafe6a366a81f85b8157bc93174a2545129b GIT binary patch literal 7715 zcmXYWbyO7Z_y6p&$kIy+NGwY$2q-DFG)ULdAzjkau}HXtfJiD0BB6BW0t!fX3KF7( zNJ!^*-=E*_k2y2v%$)n2xzBU&D{hRorZOoJ0}%iKq^c?kx&Q#eJ%Rw}9o)^#tHd4v zn6_0FWcB?mcFi?>?}^raF5uy*?SD`eoKRYtN}~{}-v%f3x{Kg@Y=$+aN7cUt?4)+%aMM4OvBW1j$mMmIvM z8rk}=;Q$N{1L6UwKkmZXY}jlf0SIsp05h`z;C-WWx+gFIguR1C_d(HsBuYA(41xrz zK=2hoFdR+vAndeJ%k%}=GHmi8A(NlP>vS6ChtX+xAQ+Nt%(b#6=*+41M%Z6b{gqw~ z*_P_*i}h~bbJkpOT#R2;A`^PG$D`8KZO;mZ{a+!j{cpZv`cN>Cq&==d%NKvvQ^?28O6!|Ve@k0ZwH;Kvbhv*ZK`E0$=2zb{OF915?B42_(D7H7xZnOh%gRGwwYxZc4g#D(xwey8bqsSw^=ABS^T^Z%vj%4`nTi|E0XQQC(aEOnwjV4*^oKT zl#e8XfpRTf=Ix$Cn)v5z=R*~y?-gdMleiODtj>h*PhF6JtvwYnk5^J@P|ViO!K zS#qvJ0I_6e;P@FyiE6@DYjpyc!t zVjA6AK^U4-yZm88*|*A{3DHEv)7v~ytJisBrfUVFvIrql9W~tUbkLRTozEyZ} zvGs9OhrnQknvyLjaslz@+Woc^^QSL_uW(wzJU3V9?~YJ0%0PELgfl>pXK(F<2$EO$ z9M5h_1Rdq;qTZKr^%buIaX%(nd8lpd_6>&;BD7Bqb1NwmAe4=%Kg*|HKtS`f#l|yU zL)pcR*1gIqMaj3|YBN92P}us7&Tar=Rrpn|SdIe25}}m-hu3F__ig~ny!!K^UE^d% z>cBk41oL7pngIJ7mZSvnpVPiw0!<%4FuJVB-vniC?hHV?i z0)0hgcC*ioOcya^rN-`eiaGsfSlE!Zlpmc}v@{Ck6YS%sA~)NmbUpPorsci|5-69O zS@Z4T>T&MkdQK5lm)01xd-DbsW#LJytNcug_3yO*nO_b^Lqjlk#ywnNxoy@M=v$go z-WtZ+i^T4`aTS@xw_eeU5v)I?9?)usz;s{n@c39A}L&o6X317M1@z zK@VRRIQN*WNImjU7WgDHm94+PWUMW46idZKF`3A)_H)2p;CStziApl4IQ%3F0Y_iW zIZc0eu?)EiHRX*LDZjGI+HYX|@mC%=x~ zNS4!Xc;PM-{=k}hj|r?7BcoJUsV+$X#Y%YhqH7VbMCB4)AucGqT-XQ|8ccc`g<&j_ zD#MUqocYVEWa{y^?OSCq%XTFbb`N1_K2(}~0zP?+Zfd*`flw4G2A|!){=5ihMYzxGBCKmwODBArZy~5vP=LkFjO5Y6N~yca?(RmRk%q+0e~D|zR%cD z{vXUCYhymdaYPnzHW>dRM2{4*8N?J?n&i_80pKxxxe3GJqenqqHG$65x@#K3*?dG$ zEBU+fvYFnb9I zsfYb~QZklqRoG!S!A*HhPFR!Pd^NjNFsBJTE|-c3WhV9Jt%E|5R3n=c4e@Lu*&phi zKH4%q`OFuKm+1dRD^UGOpzv^Yl{FkqqFvVJAB~RzmSw7LJBy95#eGst!3R-? zuf;BoUAMfGPR-y%Z%O?72j|gKViM+Xt$)g9z!Z?qhX*#ImBl-*?+#P@Zn~3o{UBqi zkeRcP^Iu7EZ1e5iRRG*?!x6o+=|4Ltc{%&Wog{PGaXv$ODGida%i_r+TJt*)n0(!QM_}RKs&Z2o z;bI57tna`6h=Sd z?_G}0V_*VT$!acg=I|Y&fda_bb{M>P>077kK)EQDBbyJs>(uGsa@pp0os#ay3k~XX z1seb;oW>+X7P9$1#_k%e1w`2qToa%FJ0*C-BdTy2_y4>NW z6kDiQ~20S8i_h$&ne=GTTqkeeU)G@mY3)o3uo zki1dC9cJh1LT0L-RV*skf7XtBWIIqpv%01k`TGy7n>&~)uKyo<>QP8*1HVjNP5-R2?y@+QaqwlhV$I?oDis? zK$K7`nvw#I9g2+k+aP~%UJ3+UwXA=Pudn>h#WJE#RQLAJVnBoR)57GA54Sn568#`~ zX`x4W=IJ4c(&b&nsfOzb=f zbLDp8=T6=A0tcpMNfSZ@#P(ce%xtX))BQhzJp+M)E)t@nFn|~PiTo+h|3MV%&xR+hojs58!X@G6J(a( z8Fw{5&N%m^J%5A8N^CNH-!uTM5_?uw(Zr^;W!@qmaX0l7g4=gAFioNOAr zwiGK!6B1kg%_2A+!Tx5-&@v;T+=tqk@JKUe6$CoEef>8mWbllt0?j?gFk>6{!FL!j z+eLnCF%8bodiR2s5Vr|1CWm+^C{$9Pi2ZID1Cz#4FQ=dR)_$Pk zd~Q^y+fptG;?_4<>wCYtApEdD#oA`Z=LyXfyU+NpP>vCsnd(b_S%BkNoEx9KRppWl zTfs*^>wrKIcNr}VZKp)!iFyS*0*0-L!A9Bb`F3$I=sH^m{;iT?*@RtHn|1_nhof{&mKtZ&uiQfE{jA8A@pBApqpVqJS?)7MsL@^L#QvBAc6`2QxWLbj#)K^MV9*jUpet6x`JcBs)SVHb2fsmN2>#!|f z20!=P^Kw)?BXpB>MH+N9^Mj)pSH%>TVNxFosbLxL6-f{>6$vK||4-(q*T~E5{n!4S zHbO3#AS-Vhq!?YU%vG{r8uvg@Y>(>dWYYRa1q=)ybY^?IoJbP@(7p#yz_QjGXFLE5 zfbPtmvY~rK;SX zPg?Tui*e+mG2^>HRbswu44U2#fD+~t({QrMV&$x96M*FFDaBpH;JZ4TKG!5 zwh0?%U?TtzvaNg}0-QS2424Vpuqsqc79iwrwLT{gx&y|CuiOEBnFxJ$Zi)Ui4uN@a z@SP3yB<4S`8eql4l4cOHkAVe>oEOm` zyl`un$4elV{=NwajD#luP(Vb-2{N^PV6pql>GdXMBj8{_3NEQTzm#h7KNC9yy#%gu zC~{s)GfQhWNs8Ejj6nV(Ji!cqEm|wxVmo5v=^K@8?%-?yCnbLo6b#wYEemYX2ehN|PXNu?3G1BHhkr(>3J$-dl@mnDSbAln&Fgc6G{cpWSXv%UFNrkBFPCh$)% zoNst8+5nQ2az-^OZX^9$5#Es<$v2E}q5;7V94z#d+XJAHEUCA5Byc@~IqO>*6>xZC zgTMpTLXGOd7>66#<*?db^zxNFmH~{Bx#UpD9o1qm#Q`7N9q=z$RWz{X(6G9m%auqr zEE}GKMu$O-)DVGC@;f0cf87+4y-G#o33DdbTfGivAw0o_kU+!;2{hK%W-Cb7)4-ntkC-qgq0*E}<3mnLIycUGcX)nbTR2$myi{gO{O zUZ2!fw@Y21El|V#B3Sy8f_Z_rB;OSUL1_R7rk_d=N&jc)AnLR7!5=7qSbs^3dL zSQ$dq8rqORLxrD)n!Jam>>c#IdiTFWEpZsr)WsSVu8pGABorV?SVym zo1gV5=(GG9SbkAxY_NTrcJnoMOpiI0*RAq+Z@NsBx0KFZr81Y%H>Az=U*o`$vE0N# zK6SxL&fRvCeZlRq2irYG3myK~9!Z>)TR+rT(M^7|^I_`cOSw1tx?>BC?>z!?exc*u zM0u%)5sGY^K3N0|DfnIiQ#mnPiBL!Xs~!X5vZU{xVIT^F8}S1#Xx{&T;0+ZzeMxh@ zNvUo09sR7y=j6JqPg#{L0@tX;YlZ5frj;J>HQ!=GvYGWsbTZGX8PC3lU>{^!!? z%Ek}@s{(@j7$<-G>qm<54ZM&6b+sR^mhI2hBF0k$(qWC%U}&OAWMZE(o6$|W-NB|G zQFuElY}@?l3ljg<>XWxIm7ZC_>e;cWazK>?+=>l+Ff_GJeO0klx&4KIe7}!^`ZMdK zEtxI+9T%;MtQbOROe#TtIM9{>z9E}X&`siQS-+Xu#qNc>6@p8@P?0N{{CbpJ(JKqI zsN`q8g$^m5sa6KnTu+t}JoYY9@d*i?Xv&@08}eKUybfI$VEsI-*ckz&$&$awM#8l; z(RKtPClW^mno`+gYiGjedCrhLI^#apnonSD7N|OmI|9)EQ7zRz6Ds}gnTo=4j$cF1 zCf4AZ-V_wsMQQ0S9W4$-)g>yUggxqZ$ick_2eEmtHwM8I3@2DHK_fPs>4LXn0 zfxhUWWA-0Qf;v83Xj>A5XL<+X{oZ-vHLu;v2wEYkBE2}#y#vDr*S}{&&nXgviG#%H z2kC^M*gIg%Z@{eDua-n!KGzo^aIZXZ_qT$c5(;>h^{;W|M@hgYW6YeBX3~H#q}UoH z+5azHQAP=h^$|kR0@^d=knZ@-;8t&3GqFw$7p}-B1bb-MB;AElW6<@Sna-C(B=qJJPhhiEwA=$z8TIdg^U(cnu6{NlY6k8gPW-%I{a0 zk#P7xl(JYN^SIhTP!2dCpsq#hrXj}pVg0el3BA>p)iy%on0mQawF7kg?va50$907~ zf)-;`8WY_%9_TH!gpgM_@UDhm<;84>iEHKbEmFOeB2%xD{H~z14MaP#$`KDb7mXF8 z=r5o9N&3}nZKpD$r~mO999ZNfIur}X&W)e;v8RW<99yv5Z$FtHt3J*JYYVvPr7gyBceu2x3xdHMuM>Vi#k>= zeaNfi{T^bA2|TI%6Apy^jxc1)RVC#tvM6rJ0fm>&UU&9h3V9T3Hbg#D-Q=Fk4x`C5 zB9>Oljz%1w?)ENJ#H@FIJ3|6a?|S!eY$YerdOXi3vDCo-z+~56?=+5Ow|4&KcZO-QuJsT=5o(#fQYhkXQW*v)|Uh=p+hgQ#_Iff{w>N zd{1I)8Hwe-zTVZdpC_8x30vsM7LW(3gMlWpcvXF2NUzhL1$2D%v^M0jvDF@$H!Z_n zEW`O!lzzudSiZ;qkDQeceuf3?AoPkeFL~U=}QfTJ;k%BuZ<61Q{aep8ivG8bSAVWBqowaTM82DbR5P^>0Vm+gmQtVSb&~@ z__~5BS;FgTn#{;{WnxxZ^=&WIs*R`#UYyJ3QXJ>@@t`P>Gn!%^gUo15+!&VZ%ZB~W z9A4zUEVF&|6xfzVw$ld3k}65Om?%RcTSMV6i;icZ9gcMkEQ>Usc?uy(O+?VQTx-?6 z1vGId_7s@k%kS^A9w}nT&A#{X7rLxN1o~nMvZVtuy9z2gp+lx2u^yGZJ>gplj17+6 zVxW@n(ISU;d8|I)cZDn#z+^v5$iN5d5;R5L%kv$BUre*#*xys-f#fM-APzGJymlf?=E^9-b)Pq{kJ%Q~B**J957@yP^B9;7?avzU~Hww!=>9+stvcX-`o1?w5acbph#UFN%y1+da7G~%- zS)oO3620#tyz~8OyV5ra%R|niUFwp9*1Gy39|_?^FI)cTlrR06QF8yh^qIuRi#+TTCdwP2ogS>jXKN{z3jPNT8yP$Afa$85UVC7Yy z7FU75bxzZf%9)ALh}-P!@^+oEhW9to`}Mk}mkg53HGiu1(}>Ox#YvCCb-JNHnL4n8~Xt z)v)3P8qn{a*jI_s%-jr5c;ZvjTVnTsxLtSIIn_BfDzNPNGkO6}x;A$9SrHav&5rL> z>OPjf37z=OFg^d>7wT?yIAe~&k%ofArN)3Qhdu85J63#+i02Iz(tLqJh%%l3uS4IZ zrB<%tv;+_Fo^p(BFAt|=(^Au^g+q+wNmv^l-=LlMGu$L9XzauMUvi&*A@xG3BD_DV zlR}*>KV$)hIZcc#&Gb@G?+;m{sn>rS5KD#!?db+}r6#k@W&aHshS+2E5#VtSL31jd z#AqK1?GSXo2I;z~Ck1Xg2cVkCFdIfYYTSo7pM)v8=HbPl-2F19Y?tZGw4Ha)%Q||D zUbDJe7kqT8|BhSk&OUkiJT>>8=+bjRC9byE;|%;sd)*-Uh&VsG&X@Q5e%s2Lh@!(TvEQB$Ep&g$j=0sK`DasU7T literal 0 HcmV?d00001 diff --git a/src/examples/yarn/include/theStory.json b/src/examples/yarn/include/theStory.json new file mode 100644 index 000000000..f5c7f41b9 --- /dev/null +++ b/src/examples/yarn/include/theStory.json @@ -0,0 +1,162 @@ +[ + { + "title": "Start", + "tags": "cat:happy", + "body": "Hello, fellow game developer! You are playing the educational demo of using Yarn Editor for creating interactive dialogues in ct.js!\n\n[[Answer:Such wow. I'm in.|What is Yarn]]", + "position": { + "x": 25, + "y": 189 + }, + "colorID": 0 + }, + { + "title": "What is Yarn", + "tags": "cat:thoughtful", + "body": "Yarn Editor is an open-source for writing game dialogues. Its license is MIT, much like ct.js, and it means that you can use Yarn Editor in any of your projects, be they commercial or not. For free.\n\n[[Answer:Cool! So, how to use Yarn projects in ct.js?|How to export a project]]", + "position": { + "x": 363, + "y": 181 + }, + "colorID": 0 + }, + { + "title": "How to export a project", + "tags": "cat:normal", + "body": "Yarn is available at yarnspinnertool.github.io/YarnEditor/\nDesign your dialogue, then open the File menu → Save as JSON.\n\n[[Answer:Done.|Importing it to ct.js]]", + "position": { + "x": 681, + "y": 188 + }, + "colorID": 0 + }, + { + "title": "Importing it to ct.js", + "tags": "cat:happy", + "body": "Open the downloaded JSON file and copy its contents. Now open ct.js. Click the \"Settings\" tab, and create a new script. Write the beginning of a line:\nvar myStory = \nand then paste the JSON file. That's enough, you can save the script and move on.\n\n[[Answer:Wait, where do I get this JSON file, again?|How to export a project]]\n[[Answer:Got it.|Opening a story]]", + "position": { + "x": 995, + "y": 204 + }, + "colorID": 0 + }, + { + "title": "Opening a story", + "tags": "", + "body": "The JSON file is still a raw product, though. In order to use your story, you should first load it in your game's code. For example, we can write the following to a room's OnCreate code:\nct.room.story = ct.yarn.openStory(myStory);\nct.yarn will read your JSON and structure it in a more useful format. You can now use other methods of ct.yarn to navigate your story, search for its nodes and get dialogue options.\n\n[[Answer:Mhm…|Navigating a story]]", + "position": { + "x": 1308, + "y": 195 + }, + "colorID": 0 + }, + { + "title": "Navigating a story", + "tags": "cat:thoughtful", + "body": "We should now use ct.room.story in our function calls:\nct.room.story.start() will put us in the beginning of it. It is called automatically after creating a project, though.\nct.room.story.options is an array of strings with currently available dialogue options.\nct.room.story.say(string) will navigate the story further. The string must match with entries from ct.room.story.options()\nct.room.story.jump(string) will open a node with a given name. Note that it is different from dialogue options!\nct.room.story.back() will switch to the previous story node. It works just once, though, like in ye olde MS Paint.\n\n[[Answer:But what about the speech of NPCs and stuff?|Getting the current scene]]\n[[Answer:Wait-wait-wait, what is ct.room.story.jump, again?|ct.room.story.jump]]", + "position": { + "x": 1588, + "y": 185 + }, + "colorID": 0 + }, + { + "title": "Getting the current scene", + "tags": "cat:thoughtful", + "body": "The details of the current node can be read by these variables:\n\n\nct.room.story.text is what I'm saying right now :) It is the body of your node in Yarn.\nct.room.story.title is the name of a node. You can view it in the top-left corner there.\nct.room.story.raw is an object with the unprocessed body and other meta information exported by Yarn.\nct.room.story.commands is an array of strings with commands included in the story node.\nct.room.story.tags is an array of strings with tags written at Yarn Editor. Use them however you want!\n\n[[Answer:How do you use tags, though?|Example of tags]]\n[[Answer:Are there any special variables?|Extra functions]]", + "position": { + "x": 1899, + "y": 188 + }, + "colorID": 0 + }, + { + "title": "Example of tags", + "tags": "cat:happy sound:tada", + "body": "I use them to change my texture and play sounds!\n\n[[Answer:Whoa! *O* Anything else??|Extra functions]]", + "position": { + "x": 2161, + "y": 448 + }, + "colorID": 0 + }, + { + "title": "ct.room.story.jump", + "tags": "", + "body": "All nodes in Yarn are named, and you can use them to instantly jump to a specific node, out of your story's flow. Just think about its debugging capabilities 👀\nIf you haven't specifically named all your story nodes in Yarn Editor, they all are probably just Node1, Node2, Node3… nothing fancy, really.\n\n[[Answer:Ok, I gotcha|Getting the current scene]]", + "position": { + "x": 1699, + "y": 489 + }, + "colorID": 0 + }, + { + "title": "Extra functions", + "tags": "cat:normal", + "body": "Yes, there are some extra variables that may help you:\n\nct.room.story.nodes is a map of all the nodes in your story. E.g. ct.room.story.nodes['Extra functions'] will return the current node.\nct.room.story.startingNode is the name of, well, the starting node.\n\n[[Answer:That's dope! But I have some questions…|FAQ]]", + "position": { + "x": 2423, + "y": 178 + }, + "colorID": 0 + }, + { + "title": "FAQ", + "tags": "cat:normal", + "body": "Ask me anything. Well, anything that was hardcoded by Comigo.\n\n[[Answer:How do I use multiple Yarn projects?|How do I use multiple Yarn projects?]]\n[[Answer:How do I make transitions, effects and stuff?|How do I make transitions, effects and stuff?]]\n[[Answer:How do I format my story nodes in the Yarn Editor?|How do I format my story nodes in the Yarn Editor?]]\n[[Answer:Where are the sources of this demo?|Where are the sources of this demo?]]\n[[Answer:Scripts are not that handy, especially when updating the story. Other options??|Loading stories from a file]]", + "position": { + "x": 2715, + "y": 252 + }, + "colorID": 0 + }, + { + "title": "How do I use multiple Yarn projects?", + "tags": "cat:happy", + "body": "That's actually easy. Export each one to JSON, create one Script in ct's Settings tab, and give them different variable names. E.g.\nvar detectiveMystery = {/*yarn json goes here*/};\n/*in the other Script*/\nvar bossMonologue = {/* another yarn json */};\n/* and in the other */\nvar iLoveChocolate = {/* here ct bursts into tears and eats all the chocolate */};\n\nAnd so on.\n\n[[Answer:Thanks!|FAQ]]", + "position": { + "x": 2980, + "y": 447 + }, + "colorID": 0 + }, + { + "title": "How do I make transitions, effects and stuff?", + "tags": "cat:happy", + "body": "That's up to you! You have the power of ct.js, the flexibility of JavaScript and the exploitability of this module.\nYou can split your stories into scenes, load them into ct.js, and then create a room for each one, with nifty backgrounds and decorations. Much like in visual novels! *U*\nYou can use ct.room.story.raw instead of e.g. ct.room.story.text to get the source of a node and get extra variables that you put in the body of your node.\n\nIf you struggle, though, check out the source of this edutational demo!\n\n[[Answer:Thanks!|FAQ]]", + "position": { + "x": 2980, + "y": 203 + }, + "colorID": 0 + }, + { + "title": "How do I format my story nodes in the Yarn Editor?", + "tags": "cat:normal", + "body": "It is recommended that you put dialogue options at the end of a node. Otherwise, use Yarn as usual!\n\n[[Answer:Thanks!|FAQ]]", + "position": { + "x": 2938, + "y": 712 + }, + "colorID": 0 + }, + { + "title": "Where are the sources of this demo?", + "tags": "", + "body": "They are bundled with each fresh ct.js version. Check the ct.js folder > examples > yarn.ict.\n\n[[Answer:Thanks!|FAQ]]", + "position": { + "x": 2666, + "y": 569 + }, + "colorID": 0 + }, + { + "title": "Loading stories from a file", + "tags": "cat:thoughtful", + "body": "You can use this code to load a story from an external file:\n\nct.yarn.openFromFile('myStory.json')\n.then(story => {\n ct.room.story = story;\n});\n\nJSON files are better placed into your projects folder → 'include' subdirectory.\n\n[[Answer:Thanks!|FAQ]]", + "position": { + "x": 2982, + "y": -72 + }, + "colorID": 0 + } +] \ No newline at end of file From 71e2a7438734628fb65b96661d6543120d2f2c12 Mon Sep 17 00:00:00 2001 From: Cosmo Myzrail Gorynych Date: Tue, 1 Oct 2019 10:04:44 +1200 Subject: [PATCH 05/44] :bug: Fix the checkbox "close the shape", as it didn't change the actual state before --- src/riotTags/texture-editor.tag | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/riotTags/texture-editor.tag b/src/riotTags/texture-editor.tag index a3e6a6dbb..17e70513e 100644 --- a/src/riotTags/texture-editor.tag +++ b/src/riotTags/texture-editor.tag @@ -56,7 +56,7 @@ texture-editor.panel.view input.short(type="number" value="{point.y}" oninput="{wire('this.texture.stripPoints.'+ ind + '.y')}") button.square.inline(title="{voc.removePoint}" onclick="{removeStripPoint}") i.icon-minus - input(type="checkbox" checked="{opts.texture.closedStrip}") + input(type="checkbox" checked="{opts.texture.closedStrip}" onchange="{wire('this.texture.closedStrip')}") span {voc.closeShape} button.wide(onclick="{addStripPoint}") i.icon-plus From 87f566c53785de3decf45204d5bd7fec8cefafb8 Mon Sep 17 00:00:00 2001 From: Alexis Schad Date: Tue, 1 Oct 2019 10:25:20 +0200 Subject: [PATCH 06/44] :sparkles: texture-editor: Directly add/remove shape points with a mouse (#125 by @schadocalex) * :sparkles: texture-editor: Directly add/remove shape points on texture with your mouse. Add a point by clicking on the yellow line segments, delete points by clicking on them (by @schadocalex) * :sparkles: texture-editor: Add the Symmetry tool for polygonal shapes (by @schadocalex) * :zap: texture-editor: Make the axis handle square (by @schadocalex) * :zap: texture-editor: Zooming in/out now works when scrolling outside the texture as well (by @schadocalex) --- app/data/i18n/English.json | 3 +- app/data/i18n/French.json | 3 +- app/data/i18n/German.json | 3 +- app/data/i18n/Romanian.json | 3 +- app/data/i18n/Russian.json | 3 +- app/data/i18n/Spanish.json | 3 +- src/riotTags/texture-editor.tag | 168 ++++++++++++++++++++++++++++++-- src/styl/inputs.styl | 8 ++ 8 files changed, 179 insertions(+), 15 deletions(-) diff --git a/app/data/i18n/English.json b/app/data/i18n/English.json index 3db2f1870..c442aaf7d 100644 --- a/app/data/i18n/English.json +++ b/app/data/i18n/English.json @@ -222,7 +222,8 @@ "closeShape": "Close the shape", "addPoint": "Add a point", "moveCenter": "Move axis", - "movePoint": "Move this point" + "movePoint": "Move this point", + "symmetryTool": "Symmetry tool" }, "sounds": { "create": "Create" diff --git a/app/data/i18n/French.json b/app/data/i18n/French.json index 7416a0c7c..8de6df46c 100644 --- a/app/data/i18n/French.json +++ b/app/data/i18n/French.json @@ -190,7 +190,8 @@ "closeShape": "Close the shape", "addPoint": "Add a point", "moveCenter": "Move axis", - "movePoint": "Move this point" + "movePoint": "Move this point", + "symmetryTool": "Outil de symétrie" }, "sounds": { "create": "Create" diff --git a/app/data/i18n/German.json b/app/data/i18n/German.json index 676e6bcc4..b75377772 100755 --- a/app/data/i18n/German.json +++ b/app/data/i18n/German.json @@ -221,7 +221,8 @@ "closeShape": "Shape schließen", "addPoint": "Punkt hinzufügen", "moveCenter": "Achse verschieben", - "movePoint": "Punkt verschieben" + "movePoint": "Punkt verschieben", + "symmetryTool": "Symmetrie-Werkzeug" }, "sounds": { "create": "Erstellen" diff --git a/app/data/i18n/Romanian.json b/app/data/i18n/Romanian.json index 8fd115249..6e0285139 100644 --- a/app/data/i18n/Romanian.json +++ b/app/data/i18n/Romanian.json @@ -221,7 +221,8 @@ "closeShape": "Închide forma", "addPoint": "Adaugă un punct", "moveCenter": "Mută axa", - "movePoint": "Mută punctul" + "movePoint": "Mută punctul", + "symmetryTool": "Instrument de simetrie" }, "sounds": { "create": "Crează" diff --git a/app/data/i18n/Russian.json b/app/data/i18n/Russian.json index ddea1ef88..44518f645 100644 --- a/app/data/i18n/Russian.json +++ b/app/data/i18n/Russian.json @@ -220,7 +220,8 @@ "addPoint": "Добавить точку", "moveCenter": "Переместить ось вращения", "movePoint": "Переместить точку", - "reimport": "Обновить" + "reimport": "Обновить", + "symmetryTool": "Симметрия" }, "sounds": { "create": "Создать" diff --git a/app/data/i18n/Spanish.json b/app/data/i18n/Spanish.json index 88da0ace0..684f35b3a 100644 --- a/app/data/i18n/Spanish.json +++ b/app/data/i18n/Spanish.json @@ -221,7 +221,8 @@ "closeShape": "Cerrar la forma", "addPoint": "Agrega un punto", "moveCenter": "Mover eje", - "movePoint": "Mueve este punto" + "movePoint": "Mueve este punto", + "symmetryTool": "Herramienta de simetría" }, "sounds": { "create": "Crear" diff --git a/src/riotTags/texture-editor.tag b/src/riotTags/texture-editor.tag index 17e70513e..53d35400b 100644 --- a/src/riotTags/texture-editor.tag +++ b/src/riotTags/texture-editor.tag @@ -50,14 +50,17 @@ texture-editor.panel.view i.icon-maximize span {voc.fill} div(if="{opts.texture.shape === 'strip'}") - .flexrow(each="{point, ind in opts.texture.stripPoints}") + .flexrow(each="{point, ind in getMovableStripPoints()}") input.short(type="number" value="{point.x}" oninput="{wire('this.texture.stripPoints.'+ ind + '.x')}") span × input.short(type="number" value="{point.y}" oninput="{wire('this.texture.stripPoints.'+ ind + '.y')}") button.square.inline(title="{voc.removePoint}" onclick="{removeStripPoint}") i.icon-minus - input(type="checkbox" checked="{opts.texture.closedStrip}" onchange="{wire('this.texture.closedStrip')}") + input(type="checkbox" checked="{opts.texture.closedStrip}" onchange="{onClosedStripChange}" ) span {voc.closeShape} + br + input(type="checkbox" checked="{opts.texture.symmetryStrip}" onchange="{onSymmetryChange}") + span {voc.symmetryTool} button.wide(onclick="{addStripPoint}") i.icon-plus span {voc.addPoint} @@ -138,7 +141,11 @@ texture-editor.panel.view ref="previewBackgroundColor" if="{changingTexturePreviewColor}" color="{previewColor}" onapply="{updatePreviewColor}" onchanged="{updatePreviewColor}" oncancel="{cancelPreviewColor}" ) - .texture-editor-anAtlas(style="background-color: {previewColor};") + .texture-editor-anAtlas( + if="{opts.texture}" + style="background-color: {previewColor};" + onmousewheel="{onMouseWheel}" + ) .textureview-tools .toright label.file(title="{voc.replacetexture}") @@ -156,15 +163,23 @@ texture-editor.panel.view button#texturezoom200.inline(onclick="{textureToggleZoom(2)}" class="{active: zoomFactor === 2}") 200% button#texturezoom400.inline(onclick="{textureToggleZoom(4)}" class="{active: zoomFactor === 4}") 400% - canvas(ref="textureCanvas" onmousewheel="{onCanvasWheel}" style="transform: scale({zoomFactor}); image-rendering: {zoomFactor > 1? 'pixelated' : '-webkit-optimize-contrast'}; transform-origin: 0% 0%;") + canvas(ref="textureCanvas" style="transform: scale({zoomFactor}); image-rendering: {zoomFactor > 1? 'pixelated' : '-webkit-optimize-contrast'}; transform-origin: 0% 0%;") + .aClicker( + if="{prevShowMask && opts.texture.shape === 'strip'}" + each="{seg, ind in getStripSegments()}" + style="left: {seg.left}px; top: {seg.top}px; width: {seg.width}px; transform: translate(0, -50%) rotate({seg.angle}deg);" + title="{voc.addPoint}" + onclick="{addStripPointOnSegment}" + ) .aDragger( - style="left: {opts.texture.axis[0] * zoomFactor}px; top: {opts.texture.axis[1] * zoomFactor}px;" + if="{prevShowMask}" + style="left: {opts.texture.axis[0] * zoomFactor}px; top: {opts.texture.axis[1] * zoomFactor}px; border-radius: 0;" title="{voc.moveCenter}" onmousedown="{startMoving('axis')}" ) .aDragger( - if="{opts.texture.shape === 'strip'}" - each="{point, ind in opts.texture.stripPoints}" + if="{prevShowMask && opts.texture.shape === 'strip'}" + each="{point, ind in getMovableStripPoints()}" style="left: {(point.x + texture.axis[0]) * zoomFactor}px; top: {(point.y + texture.axis[1]) * zoomFactor}px;" title="{voc.movePoint}" onmousedown="{startMoving('point')}" @@ -216,6 +231,7 @@ texture-editor.panel.view } else { this.nameTaken = false; } + this.updateSymmetricalPoints(); }); this.on('updated', () => { this.refreshTextureCanvas(); @@ -287,7 +303,7 @@ texture-editor.panel.view this.zoomFactor = zoom; }; /** Change zoomFactor on mouse wheel roll */ - this.onCanvasWheel = e => { + this.onMouseWheel = e => { if (e.wheelDelta > 0) { // in if (this.zoomFactor === 2) { @@ -492,10 +508,13 @@ texture-editor.panel.view y: -Math.round(Math.cos(twoPi / 5 * i) * this.texture.height / 2) }); } - console.log(this.texture); } }; this.removeStripPoint = function (e) { + if(this.texture.symmetryStrip) { + // Remove an extra point + this.texture.stripPoints.pop(); + } this.texture.stripPoints.splice(e.item.ind, 1); }; this.addStripPoint = function () { @@ -504,6 +523,55 @@ texture-editor.panel.view y: 16 }); }; + this.addStripPointOnSegment = e => { + const { top, left } = textureCanvas.getBoundingClientRect(); + this.texture.stripPoints.splice(e.item.ind+1, 0, { + x: (e.pageX - left) / this.zoomFactor - this.texture.axis[0], + y: (e.pageY - top) / this.zoomFactor - this.texture.axis[1] + }); + if(this.texture.symmetryStrip) { + // Add an extra point (the symetrical point) + this.addStripPoint(); + } + }; + this.pointToLine = (linePoint1, linePoint2, point) => { + const dlx = linePoint2.x - linePoint1.x; + const dly = linePoint2.y - linePoint1.y; + const lineLength = Math.sqrt(dlx*dlx + dly*dly); + const lineAngle = Math.atan2(dly, dlx); + + const dpx = point.x - linePoint1.x; + const dpy = point.y - linePoint1.y; + const toPointLength = Math.sqrt(dpx*dpx + dpy*dpy); + const toPointAngle = Math.atan2(dpy, dpx); + + const distance = toPointLength * Math.cos(toPointAngle - lineAngle); + + return { + x: linePoint1.x + distance * dlx / lineLength, + y: linePoint1.y + distance * dly / lineLength + }; + }; + this.onClosedStripChange = e => { + this.texture.closedStrip = !this.texture.closedStrip; + if(!this.texture.closedStrip && this.texture.symmetryStrip) { + this.onSymmetryChange(); + } + }; + this.onSymmetryChange = e => { + if(this.texture.symmetryStrip) { + this.texture.stripPoints = this.getMovableStripPoints(); + } else { + const nbPointsToAdd = this.texture.stripPoints.length - 2; + for(let i = 0; i < nbPointsToAdd; i++) { + this.addStripPoint(); + } + this.texture.closedStrip = true; // Force closedStrip to true + } + + this.texture.symmetryStrip = !this.texture.symmetryStrip; + this.update(); + } this.startMoving = which => e => { const startX = e.screenX, startY = e.screenY; @@ -524,11 +592,19 @@ texture-editor.panel.view const point = e.item.point, oldX = point.x, oldY = point.y; + let hasMoved = false; const func = e => { + if(!hasMoved && (e.screenX !== startX || e.screenY !== startY)) { + hasMoved = true; + } point.x = (e.screenX - startX) / this.zoomFactor + oldX; point.y = (e.screenY - startY) / this.zoomFactor + oldY; this.update(); }, func2 = () => { + if(!hasMoved) { + this.removeStripPoint(e); + this.update(); + } document.removeEventListener('mousemove', func); document.removeEventListener('mouseup', func2); }; @@ -582,6 +658,20 @@ texture-editor.panel.view textureCanvas.x.closePath(); } textureCanvas.x.stroke(); + + if(this.texture.symmetryStrip) { + const movablePoints = this.getMovableStripPoints(); + const axisPoint1 = movablePoints[0]; + const axisPoint2 = movablePoints[movablePoints.length - 1]; + + // Draw symmetry axis + textureCanvas.x.strokeStyle = '#f00'; + textureCanvas.x.lineWidth = 3; + textureCanvas.x.beginPath(); + textureCanvas.x.moveTo(axisPoint1.x + this.texture.axis[0], axisPoint1.y + this.texture.axis[1]); + textureCanvas.x.lineTo(axisPoint2.x + this.texture.axis[0], axisPoint2.y + this.texture.axis[1]); + textureCanvas.x.stroke(); + } } } }; @@ -657,3 +747,63 @@ texture-editor.panel.view this.previewColor = this.oldPreviewColor; this.update(); }; + this.getMovableStripPoints = () => { + if(!this.texture) return; + if(!this.texture.symmetryStrip) { + return this.texture.stripPoints; + } else { + return this.texture.stripPoints.slice(0, 2 + Math.round((this.texture.stripPoints.length - 2) / 2)); + } + }; + this.getStripSegments = () => { + if(!this.texture) { + return; + } + if (this.texture.shape !== 'strip') { + return; + } + + const points = this.getMovableStripPoints(); + const segs = []; + + for(let i = 0; i < points.length; i++) { + const point1 = points[i]; + const point2 = points[(i + 1) % points.length]; + + const x1 = (point1.x + this.texture.axis[0]) * this.zoomFactor; + const y1 = (point1.y + this.texture.axis[1]) * this.zoomFactor; + const x2 = (point2.x + this.texture.axis[0]) * this.zoomFactor; + const y2 = (point2.y + this.texture.axis[1]) * this.zoomFactor; + const dx = x2 - x1; + const dy = y2 - y1; + + const length = Math.sqrt(dx*dx + dy*dy); + const cssAngle = Math.atan2(dy, dx) * 180 / Math.PI; + + segs.push({ + left: x1, + top: y1, + width: length, + angle: cssAngle + }); + } + + return segs; + }; + this.updateSymmetricalPoints = () => { + if(this.texture && this.texture.symmetryStrip) { + const movablePoints = this.getMovableStripPoints(); + const axisPoint1 = movablePoints[0]; + const axisPoint2 = movablePoints[movablePoints.length - 1]; + for(let i = 1; i < movablePoints.length - 1; i++) { + const j = this.texture.stripPoints.length - i; + const point = movablePoints[i]; + const axisPoint = this.pointToLine(axisPoint1, axisPoint2, point); + this.texture.stripPoints[j] = { + x: 2 * axisPoint.x - point.x, + y: 2 * axisPoint.y - point.y + } + } + } + }; + diff --git a/src/styl/inputs.styl b/src/styl/inputs.styl index 56af042d3..d14eaf79c 100644 --- a/src/styl/inputs.styl +++ b/src/styl/inputs.styl @@ -315,6 +315,14 @@ input[type="range"] margin 1rem {shad} +.aClicker + height 0.75rem + position absolute + transform translate(0, -50%) + transform-origin left center + cursor copy + margin 1rem + .aDropzone @extends .middle position fixed From 4daa677c7d2da7e3ecd74788eab17bc686354bb9 Mon Sep 17 00:00:00 2001 From: Cosmo Myzrail Gorynych Date: Thu, 3 Oct 2019 14:43:22 +1200 Subject: [PATCH 07/44] :sparkles: Advanced support for yarn, powered by bondage.js --- app/data/ct.libs/yarn/DOCS.md | 160 +++++++++ app/data/ct.libs/yarn/LICENSE | 48 +++ app/data/ct.libs/yarn/README.md | 71 +++- app/data/ct.libs/yarn/includes/bondage.min.js | 11 + app/data/ct.libs/yarn/index.js | 306 +++++++++++++----- app/data/ct.libs/yarn/injects/htmltop.html | 1 + app/data/ct.libs/yarn/module.json | 17 +- src/examples/yarn.ict | 163 +++++++++- src/examples/yarn/img/r7a1486b7f1d9.png | Bin 7715 -> 8106 bytes src/examples/yarn/img/rb49f813ea9ce.png | Bin 0 -> 8106 bytes src/examples/yarn/img/rcc6b9ea24c38.png | Bin 0 -> 7333 bytes src/examples/yarn/img/rd96488130d15.png | Bin 0 -> 7333 bytes src/examples/yarn/img/splash.png | Bin 7715 -> 7333 bytes src/examples/yarn/include/micro.json | 12 + src/examples/yarn/include/stop.json | 12 + src/examples/yarn/include/theStory.json | 244 +++++++++----- src/examples/yarn/include/wait.json | 12 + .../s0bd4a1eb-b5f1-4047-a8dd-56feca282803.mp3 | Bin 0 -> 18953 bytes 18 files changed, 889 insertions(+), 168 deletions(-) create mode 100644 app/data/ct.libs/yarn/DOCS.md create mode 100644 app/data/ct.libs/yarn/LICENSE create mode 100644 app/data/ct.libs/yarn/includes/bondage.min.js create mode 100644 app/data/ct.libs/yarn/injects/htmltop.html create mode 100644 src/examples/yarn/img/rb49f813ea9ce.png create mode 100644 src/examples/yarn/img/rcc6b9ea24c38.png create mode 100644 src/examples/yarn/img/rd96488130d15.png create mode 100644 src/examples/yarn/include/micro.json create mode 100644 src/examples/yarn/include/stop.json create mode 100644 src/examples/yarn/include/wait.json create mode 100644 src/examples/yarn/snd/s0bd4a1eb-b5f1-4047-a8dd-56feca282803.mp3 diff --git a/app/data/ct.libs/yarn/DOCS.md b/app/data/ct.libs/yarn/DOCS.md new file mode 100644 index 000000000..32668e931 --- /dev/null +++ b/app/data/ct.libs/yarn/DOCS.md @@ -0,0 +1,160 @@ +## Loading a story + +### ct.yarn.openStory(data) ⇒ `YarnStory` + +Opens the given JSON object and returns a YarnStory object, ready for playing. + +### ct.yarn.openFromFile(data) ⇒ `Promise` + +Opens the given JSON object and returns a promise that resolves into a YarnStory. + + +## YarnStory +**Kind**: private class + +### new YarnStory(data, [first]) +Creates a new YarnStory + + +**Returns**: `YarnStory` - self + +| Param | Type | Description | +| --- | --- | --- | +| data | `Object` | The exported, inlined Yarn's .json file | +| [first] | `String` | The starting node's name from which to run the story. Defaults to "Start" | + + +### yarnStory.text ⇒ `String` \| `Boolean` +Returns the current text line, including the character's name + +**Kind**: instance property of `YarnStory` + +**Returns**: `String` \| `Boolean` - Returns `false` if the current position is not a speech line, + otherwise returns the current line. + +### yarnStory.character ⇒ `Boolean` \| `String` \| `undefined` +Returns the character's name that says the current text line. +It is expected that your character's names will be in one word, +otherwise they will be detected as parts of the speech line. +E.g. `Cat: Hello!` will return `'Cat'`, but `Kitty cat: Hello!` +will return `undefined`. + +**Kind**: instance property of `YarnStory` + +**Returns**: `Boolean` \| `String` \| `undefined` - Returns `false` if the current position is not a speech line, + `undefined` if the line does not have a character specified, and a string of your character + if it was specified. + +### yarnStory.body ⇒ `String` \| `Boolean` +Returns the the current text line, without a character. +It is expected that your character's names will be in one word, +otherwise they will be detected as parts of the speech line. +E.g. `Cat: Hello!` will return `'Cat'`, but `Kitty cat: Hello!` +will return `undefined`. + +**Kind**: instance property of `YarnStory` + +**Returns**: `String` \| `Boolean` - The speech line or `false` if the current position + is not a speech line. + +### yarnStory.title ⇒ `String` +Returns the title of the current node + +**Kind**: instance property of `YarnStory` + +**Returns**: `String` - The title of the current node + +### yarnStory.command ⇒ `String` \| `Boolean` +Returns the current command + +**Kind**: instance property of `YarnStory` + +**Returns**: `String` \| `Boolean` - The current command, or `false` if the current + position is not a command. + +### yarnStory.tags ⇒ `String` +Returns the tags of the current node + +**Kind**: instance property of `YarnStory` + +**Returns**: `String` - The tags of the current node. + +### yarnStory.options ⇒ `Array` +Returns currently possible dialogue options, if there are any. + +**Kind**: instance property of `YarnStory` + +**Returns**: `Array` - An array of possible dialogue lines. + +### yarnStory.variables : `Object` +Current variables + +**Kind**: instance property of `YarnStory` + +### yarnStory.start() ⇒ `void` +Starts the story, essentially jumping to a starting node + +**Kind**: instance method of `YarnStory` + +### yarnStory.say(line) ⇒ `void` +"Says" the given option, advancing the story further on a taken branch, if this dialogue option exists. + +**Kind**: instance method of `YarnStory` + +| Param | Type | Description | +| --- | --- | --- | +| line | `String` | The line to say | + + +### yarnStory.jump(title) ⇒ `void` +Manually moves the story to a node with a given title + +**Kind**: instance method of `YarnStory` + +| Param | Type | Description | +| --- | --- | --- | +| title | `String` | The title of the needed node | + + +### yarnStory.back() ⇒ `void` +Moves back to the previous node, but just once + +**Kind**: instance method of `YarnStory` + +### yarnStory.next() ⇒ `void` +Naturally advances in the story, if no options are available + +**Kind**: instance method of `YarnStory` + + +### yarnStory.nodes ⇒ `Object` + +An object containing all the nodes in the story. Each key in this object stands for a node's title. + +**Kind**: instance property of `YarnStory` + +### yarnStory.visited(title) ⇒ `Boolean` +Checks whether a given node was visited + +**Kind**: instance method of `YarnStory` + +**Returns**: `Boolean` - Returns `true` if the specified node was visited, `false` otherwise. + +| Param | Type | Description | +| --- | --- | --- | +| title | `String` | The node's title to check against | + +## Events + +You can listen to events by using `story.on('eventName', data => /* handler */)`. +For other event-related functions, see [PIXI.utils.EventEmitter](http://pixijs.download/release/docs/PIXI.utils.EventEmitter.html) as `YarnStory` extends this class. For examples, see the "Info" tab. + +**Possible events:** + +* `drained` — dispatched when the story has ended, either by the `<>` command or when nothing left to play. +* `newnode` — dispatched when the story switched to a new Yarn's node. +* `start` — called at the start of the story. Can be called more than once by calling `YarnStory.start()`. +* `command` — called when the story has advanced and faced a command. +* `options` — called when the story has advanced and faced a number of dialogue options. +* `text` — called when the story has advanced and returned a new dialogue line. +* `next` — called when the story advances in some way. \ No newline at end of file diff --git a/app/data/ct.libs/yarn/LICENSE b/app/data/ct.libs/yarn/LICENSE new file mode 100644 index 000000000..56bc2ec68 --- /dev/null +++ b/app/data/ct.libs/yarn/LICENSE @@ -0,0 +1,48 @@ +=========================== CT.YARN LICENSE ================================== + +The MIT License (MIT) + +Copyright (c) 2019 Cosmo Myzrail Gorynych + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +========================== BONDAGE.JS LICENSE ================================= + +The MIT License (MIT) + +Copyright (c) 2017 j hayley + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/app/data/ct.libs/yarn/README.md b/app/data/ct.libs/yarn/README.md index 8e5463781..699006a69 100644 --- a/app/data/ct.libs/yarn/README.md +++ b/app/data/ct.libs/yarn/README.md @@ -1,4 +1,71 @@ -ct.yarn is a tool to read Yarn projects and create dialogues/interactive fiction in your games. +ct.yarn is a tool to read Yarn projects and create dialogues/interactive fiction in your games. Under the hood, it uses [Bondage.js](https://github.com/hylyh/bondage.js) to parse Yarn syntax. -The Yarn Editor can be found [here](https://github.com/YarnSpinnerTool/YarnEditor). +# Writing the story +Stories are better written with the Yarn Editor, which can be found [here](https://github.com/YarnSpinnerTool/YarnEditor), with its [online edit tool](https://yarnspinnertool.github.io/YarnEditor/). + +See the [Yarn guide](https://github.com/YarnSpinnerTool/YarnSpinner/blob/master/Documentation/YarnSpinner-Dialogue/Yarn-Syntax.md) for nodes' syntax. When you're done, press File -> Save as JSON. + +# Loading stories and working with them + +Though there are tons of different methods and parameters to work with, you'll probably use just five of them to create your first interactive story. You can use a plain JSON object copy-pasted from Yarn Editor: + +```js +var storyData = {/* Your exported yarn .json file */} +var story = ct.yarn.openStory(storyData); +story.on('text', text => { + // A new line appeared. Update UIs, create copies for blurbs, etc. +}); +story.on('command', command => { + // a command was called by a syntax `<>` (you get the string without the <>) +}); +story.on('options', options => { + // here you get an array of strings your character can say. Use it to create reply buttons +}); +ct.room.story = story; // to use it later in UI and your game's logic +``` + +**OR** you can load from a file in your project folder -> includes: + +```js +ct.yarn.openFromFile('myStory.json') +.then(story => { + ct.room.story = story; + story.on('text', text => { + // A new line appeared. Update UIs, create copies for blurbs, etc. + }); + story.on('command', command => { + // a command was called by a syntax `<>` (you get the string without the <>) + }); + story.on('options', options => { + // here you get an array of strings your character can say. Use it to create reply buttons + }); +}); +``` + +To advance through your story, use `story.say('The answer')`: + +```js +ct.room.story.on('options', options => { + for (const option of options) { + ct.types.copy('SpeechButton', 0, 0, { + option: option + }); + } +}); +// Later, in your button's click events: +ct.room.story.say(this.option); +``` + +See the demo `yarn` in the `examples` folder for a full-featured dialogue system. + + +# Using functions + +By default, ct.yarn will execute the built-in Yarn's functions and statements, but there are also a couple of additional "magical" functions: + +* `<>` to play 2D sounds; +* `<>` to switch to other rooms; +* `<>` to pause the execution for a given number of milliseconds. + +These won't trigger the `command` or `next` events and will work automatically. You can disable this behavior and manage these commands by yourself by disabling "Use magic commands" in the Settings tab. diff --git a/app/data/ct.libs/yarn/includes/bondage.min.js b/app/data/ct.libs/yarn/includes/bondage.min.js new file mode 100644 index 000000000..558dde35c --- /dev/null +++ b/app/data/ct.libs/yarn/includes/bondage.min.js @@ -0,0 +1,11 @@ +var bondage=function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){n(1),e.exports=n(326)},function(e,t,n){(function(e){"use strict";function t(e,t,n){e[t]||Object[r](e,t,{writable:!0,configurable:!0,value:n})}if(n(2),n(322),n(323),e._babelPolyfill)throw new Error("only one instance of babel-polyfill is allowed");e._babelPolyfill=!0;var r="defineProperty";t(String.prototype,"padLeft","".padStart),t(String.prototype,"padRight","".padEnd),"pop,reverse,shift,keys,values,entries,indexOf,every,some,forEach,map,filter,find,findIndex,includes,join,slice,concat,push,splice,unshift,sort,lastIndexOf,reduce,reduceRight,copyWithin,fill".split(",").forEach(function(e){[][e]&&t(Array,e,Function.call.bind([][e]))})}).call(t,function(){return this}())},function(e,t,n){n(3),n(51),n(52),n(53),n(54),n(56),n(59),n(60),n(61),n(62),n(63),n(64),n(65),n(66),n(67),n(69),n(71),n(73),n(75),n(78),n(79),n(80),n(84),n(86),n(88),n(91),n(92),n(93),n(94),n(96),n(97),n(98),n(99),n(100),n(101),n(102),n(104),n(105),n(106),n(108),n(109),n(110),n(112),n(114),n(115),n(116),n(117),n(118),n(119),n(120),n(121),n(122),n(123),n(124),n(125),n(126),n(131),n(132),n(136),n(137),n(138),n(139),n(141),n(142),n(143),n(144),n(145),n(146),n(147),n(148),n(149),n(150),n(151),n(152),n(153),n(154),n(155),n(157),n(158),n(160),n(161),n(167),n(168),n(170),n(171),n(172),n(176),n(177),n(178),n(179),n(180),n(182),n(183),n(184),n(185),n(188),n(190),n(191),n(192),n(194),n(196),n(198),n(199),n(200),n(202),n(203),n(204),n(205),n(215),n(219),n(220),n(222),n(223),n(227),n(228),n(230),n(231),n(232),n(233),n(234),n(235),n(236),n(237),n(238),n(239),n(240),n(241),n(242),n(243),n(244),n(245),n(246),n(247),n(248),n(250),n(251),n(252),n(253),n(254),n(256),n(257),n(258),n(260),n(261),n(262),n(263),n(264),n(265),n(266),n(267),n(269),n(270),n(272),n(273),n(274),n(275),n(278),n(279),n(281),n(282),n(283),n(284),n(286),n(287),n(288),n(289),n(290),n(291),n(292),n(293),n(294),n(295),n(297),n(298),n(299),n(300),n(301),n(302),n(303),n(304),n(305),n(306),n(307),n(309),n(310),n(311),n(312),n(313),n(314),n(315),n(316),n(317),n(318),n(319),n(320),n(321),e.exports=n(9)},function(e,t,n){"use strict";var r=n(4),i=n(5),o=n(6),s=n(8),a=n(18),c=n(22).KEY,u=n(7),l=n(23),h=n(24),f=n(19),p=n(25),d=n(26),y=n(27),m=n(29),g=n(44),v=n(12),b=n(32),x=n(16),_=n(17),S=n(45),w=n(48),E=n(50),k=n(11),A=n(30),C=E.f,O=k.f,I=w.f,N=r.Symbol,L=r.JSON,P=L&&L.stringify,T="prototype",$=p("_hidden"),M=p("toPrimitive"),j={}.propertyIsEnumerable,R=l("symbol-registry"),F=l("symbols"),D=l("op-symbols"),B=Object[T],G="function"==typeof N,q=r.QObject,U=!q||!q[T]||!q[T].findChild,z=o&&u(function(){return 7!=S(O({},"a",{get:function(){return O(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=C(B,t);r&&delete B[t],O(e,t,n),r&&e!==B&&O(B,t,r)}:O,V=function(e){var t=F[e]=S(N[T]);return t._k=e,t},W=G&&"symbol"==typeof N.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof N},J=function(e,t,n){return e===B&&J(D,t,n),v(e),t=x(t,!0),v(n),i(F,t)?(n.enumerable?(i(e,$)&&e[$][t]&&(e[$][t]=!1),n=S(n,{enumerable:_(0,!1)})):(i(e,$)||O(e,$,_(1,{})),e[$][t]=!0),z(e,t,n)):O(e,t,n)},Y=function(e,t){v(e);for(var n,r=m(t=b(t)),i=0,o=r.length;o>i;)J(e,n=r[i++],t[n]);return e},Z=function(e,t){return void 0===t?S(e):Y(S(e),t)},H=function(e){var t=j.call(this,e=x(e,!0));return!(this===B&&i(F,e)&&!i(D,e))&&(!(t||!i(this,e)||!i(F,e)||i(this,$)&&this[$][e])||t)},K=function(e,t){if(e=b(e),t=x(t,!0),e!==B||!i(F,t)||i(D,t)){var n=C(e,t);return!n||!i(F,t)||i(e,$)&&e[$][t]||(n.enumerable=!0),n}},X=function(e){for(var t,n=I(b(e)),r=[],o=0;n.length>o;)i(F,t=n[o++])||t==$||t==c||r.push(t);return r},Q=function(e){for(var t,n=e===B,r=I(n?D:b(e)),o=[],s=0;r.length>s;)!i(F,t=r[s++])||n&&!i(B,t)||o.push(F[t]);return o};G||(N=function(){if(this instanceof N)throw TypeError("Symbol is not a constructor!");var e=f(arguments.length>0?arguments[0]:void 0),t=function(n){this===B&&t.call(D,n),i(this,$)&&i(this[$],e)&&(this[$][e]=!1),z(this,e,_(1,n))};return o&&U&&z(B,e,{configurable:!0,set:t}),V(e)},a(N[T],"toString",function(){return this._k}),E.f=K,k.f=J,n(49).f=w.f=X,n(43).f=H,n(42).f=Q,o&&!n(28)&&a(B,"propertyIsEnumerable",H,!0),d.f=function(e){return V(p(e))}),s(s.G+s.W+s.F*!G,{Symbol:N});for(var ee="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),te=0;ee.length>te;)p(ee[te++]);for(var ne=A(p.store),re=0;ne.length>re;)y(ne[re++]);s(s.S+s.F*!G,"Symbol",{for:function(e){return i(R,e+="")?R[e]:R[e]=N(e)},keyFor:function(e){if(!W(e))throw TypeError(e+" is not a symbol!");for(var t in R)if(R[t]===e)return t},useSetter:function(){U=!0},useSimple:function(){U=!1}}),s(s.S+s.F*!G,"Object",{create:Z,defineProperty:J,defineProperties:Y,getOwnPropertyDescriptor:K,getOwnPropertyNames:X,getOwnPropertySymbols:Q}),L&&s(s.S+s.F*(!G||u(function(){var e=N();return"[null]"!=P([e])||"{}"!=P({a:e})||"{}"!=P(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!W(e)){for(var t,n,r=[e],i=1;arguments.length>i;)r.push(arguments[i++]);return t=r[1],"function"==typeof t&&(n=t),!n&&g(t)||(t=function(e,t){if(n&&(t=n.call(this,e,t)),!W(t))return t}),r[1]=t,P.apply(L,r)}}}),N[T][M]||n(10)(N[T],M,N[T].valueOf),h(N,"Symbol"),h(Math,"Math",!0),h(r.JSON,"JSON",!0)},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){e.exports=!n(7)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t,n){var r=n(4),i=n(9),o=n(10),s=n(18),a=n(20),c="prototype",u=function(e,t,n){var l,h,f,p,d=e&u.F,y=e&u.G,m=e&u.S,g=e&u.P,v=e&u.B,b=y?r:m?r[t]||(r[t]={}):(r[t]||{})[c],x=y?i:i[t]||(i[t]={}),_=x[c]||(x[c]={});y&&(n=t);for(l in n)h=!d&&b&&void 0!==b[l],f=(h?b:n)[l],p=v&&h?a(f,r):g&&"function"==typeof f?a(Function.call,f):f,b&&s(b,l,f,e&u.U),x[l]!=f&&o(x,l,p),g&&_[l]!=f&&(_[l]=f)};r.core=i,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,e.exports=u},function(e,t){var n=e.exports={version:"2.5.1"};"number"==typeof __e&&(__e=n)},function(e,t,n){var r=n(11),i=n(17);e.exports=n(6)?function(e,t,n){return r.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var r=n(12),i=n(14),o=n(16),s=Object.defineProperty;t.f=n(6)?Object.defineProperty:function(e,t,n){if(r(e),t=o(t,!0),r(n),i)try{return s(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var r=n(13);e.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t,n){e.exports=!n(6)&&!n(7)(function(){return 7!=Object.defineProperty(n(15)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){var r=n(13),i=n(4).document,o=r(i)&&r(i.createElement);e.exports=function(e){return o?i.createElement(e):{}}},function(e,t,n){var r=n(13);e.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(4),i=n(10),o=n(5),s=n(19)("src"),a="toString",c=Function[a],u=(""+c).split(a);n(9).inspectSource=function(e){return c.call(e)},(e.exports=function(e,t,n,a){var c="function"==typeof n;c&&(o(n,"name")||i(n,"name",t)),e[t]!==n&&(c&&(o(n,s)||i(n,s,e[t]?""+e[t]:u.join(String(t)))),e===r?e[t]=n:a?e[t]?e[t]=n:i(e,t,n):(delete e[t],i(e,t,n)))})(Function.prototype,a,function(){return"function"==typeof this&&this[s]||c.call(this)})},function(e,t){var n=0,r=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+r).toString(36))}},function(e,t,n){var r=n(21);e.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t,n){var r=n(19)("meta"),i=n(13),o=n(5),s=n(11).f,a=0,c=Object.isExtensible||function(){return!0},u=!n(7)(function(){return c(Object.preventExtensions({}))}),l=function(e){s(e,r,{value:{i:"O"+ ++a,w:{}}})},h=function(e,t){if(!i(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!o(e,r)){if(!c(e))return"F";if(!t)return"E";l(e)}return e[r].i},f=function(e,t){if(!o(e,r)){if(!c(e))return!0;if(!t)return!1;l(e)}return e[r].w},p=function(e){return u&&d.NEED&&c(e)&&!o(e,r)&&l(e),e},d=e.exports={KEY:r,NEED:!1,fastKey:h,getWeak:f,onFreeze:p}},function(e,t,n){var r=n(4),i="__core-js_shared__",o=r[i]||(r[i]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,t,n){var r=n(11).f,i=n(5),o=n(25)("toStringTag");e.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,o)&&r(e,o,{configurable:!0,value:t})}},function(e,t,n){var r=n(23)("wks"),i=n(19),o=n(4).Symbol,s="function"==typeof o,a=e.exports=function(e){return r[e]||(r[e]=s&&o[e]||(s?o:i)("Symbol."+e))};a.store=r},function(e,t,n){t.f=n(25)},function(e,t,n){var r=n(4),i=n(9),o=n(28),s=n(26),a=n(11).f;e.exports=function(e){var t=i.Symbol||(i.Symbol=o?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||a(t,e,{value:s.f(e)})}},function(e,t){e.exports=!1},function(e,t,n){var r=n(30),i=n(42),o=n(43);e.exports=function(e){var t=r(e),n=i.f;if(n)for(var s,a=n(e),c=o.f,u=0;a.length>u;)c.call(e,s=a[u++])&&t.push(s);return t}},function(e,t,n){var r=n(31),i=n(41);e.exports=Object.keys||function(e){return r(e,i)}},function(e,t,n){var r=n(5),i=n(32),o=n(36)(!1),s=n(40)("IE_PROTO");e.exports=function(e,t){var n,a=i(e),c=0,u=[];for(n in a)n!=s&&r(a,n)&&u.push(n);for(;t.length>c;)r(a,n=t[c++])&&(~o(u,n)||u.push(n));return u}},function(e,t,n){var r=n(33),i=n(35);e.exports=function(e){return r(i(e))}},function(e,t,n){var r=n(34);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t,n){var r=n(32),i=n(37),o=n(39);e.exports=function(e){return function(t,n,s){var a,c=r(t),u=i(c.length),l=o(s,u);if(e&&n!=n){for(;u>l;)if(a=c[l++],a!=a)return!0}else for(;u>l;l++)if((e||l in c)&&c[l]===n)return e||l||0;return!e&&-1}}},function(e,t,n){var r=n(38),i=Math.min;e.exports=function(e){return e>0?i(r(e),9007199254740991):0}},function(e,t){var n=Math.ceil,r=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?r:n)(e)}},function(e,t,n){var r=n(38),i=Math.max,o=Math.min;e.exports=function(e,t){return e=r(e),e<0?i(e+t,0):o(e,t)}},function(e,t,n){var r=n(23)("keys"),i=n(19);e.exports=function(e){return r[e]||(r[e]=i(e))}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t){t.f=Object.getOwnPropertySymbols},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var r=n(34);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(12),i=n(46),o=n(41),s=n(40)("IE_PROTO"),a=function(){},c="prototype",u=function(){var e,t=n(15)("iframe"),r=o.length,i="<",s=">";for(t.style.display="none",n(47).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write(i+"script"+s+"document.F=Object"+i+"/script"+s),e.close(),u=e.F;r--;)delete u[c][o[r]];return u()};e.exports=Object.create||function(e,t){var n;return null!==e?(a[c]=r(e),n=new a,a[c]=null,n[s]=e):n=u(),void 0===t?n:i(n,t)}},function(e,t,n){var r=n(11),i=n(12),o=n(30);e.exports=n(6)?Object.defineProperties:function(e,t){i(e);for(var n,s=o(t),a=s.length,c=0;a>c;)r.f(e,n=s[c++],t[n]);return e}},function(e,t,n){var r=n(4).document;e.exports=r&&r.documentElement},function(e,t,n){var r=n(32),i=n(49).f,o={}.toString,s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(e){try{return i(e)}catch(e){return s.slice()}};e.exports.f=function(e){return s&&"[object Window]"==o.call(e)?a(e):i(r(e))}},function(e,t,n){var r=n(31),i=n(41).concat("length","prototype");t.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},function(e,t,n){var r=n(43),i=n(17),o=n(32),s=n(16),a=n(5),c=n(14),u=Object.getOwnPropertyDescriptor;t.f=n(6)?u:function(e,t){if(e=o(e),t=s(t,!0),c)try{return u(e,t)}catch(e){}if(a(e,t))return i(!r.f.call(e,t),e[t])}},function(e,t,n){var r=n(8);r(r.S,"Object",{create:n(45)})},function(e,t,n){var r=n(8);r(r.S+r.F*!n(6),"Object",{defineProperty:n(11).f})},function(e,t,n){var r=n(8);r(r.S+r.F*!n(6),"Object",{defineProperties:n(46)})},function(e,t,n){var r=n(32),i=n(50).f;n(55)("getOwnPropertyDescriptor",function(){return function(e,t){return i(r(e),t)}})},function(e,t,n){var r=n(8),i=n(9),o=n(7);e.exports=function(e,t){var n=(i.Object||{})[e]||Object[e],s={};s[e]=t(n),r(r.S+r.F*o(function(){n(1)}),"Object",s)}},function(e,t,n){var r=n(57),i=n(58);n(55)("getPrototypeOf",function(){return function(e){return i(r(e))}})},function(e,t,n){var r=n(35);e.exports=function(e){return Object(r(e))}},function(e,t,n){var r=n(5),i=n(57),o=n(40)("IE_PROTO"),s=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=i(e),r(e,o)?e[o]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?s:null}},function(e,t,n){var r=n(57),i=n(30);n(55)("keys",function(){return function(e){return i(r(e))}})},function(e,t,n){n(55)("getOwnPropertyNames",function(){return n(48).f})},function(e,t,n){var r=n(13),i=n(22).onFreeze;n(55)("freeze",function(e){return function(t){return e&&r(t)?e(i(t)):t}})},function(e,t,n){var r=n(13),i=n(22).onFreeze;n(55)("seal",function(e){return function(t){return e&&r(t)?e(i(t)):t}})},function(e,t,n){var r=n(13),i=n(22).onFreeze;n(55)("preventExtensions",function(e){return function(t){return e&&r(t)?e(i(t)):t}})},function(e,t,n){var r=n(13);n(55)("isFrozen",function(e){return function(t){return!r(t)||!!e&&e(t)}})},function(e,t,n){var r=n(13);n(55)("isSealed",function(e){return function(t){return!r(t)||!!e&&e(t)}})},function(e,t,n){var r=n(13);n(55)("isExtensible",function(e){return function(t){return!!r(t)&&(!e||e(t))}})},function(e,t,n){var r=n(8);r(r.S+r.F,"Object",{assign:n(68)})},function(e,t,n){"use strict";var r=n(30),i=n(42),o=n(43),s=n(57),a=n(33),c=Object.assign;e.exports=!c||n(7)(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=c({},e)[n]||Object.keys(c({},t)).join("")!=r})?function(e,t){for(var n=s(e),c=arguments.length,u=1,l=i.f,h=o.f;c>u;)for(var f,p=a(arguments[u++]),d=l?r(p).concat(l(p)):r(p),y=d.length,m=0;y>m;)h.call(p,f=d[m++])&&(n[f]=p[f]);return n}:c},function(e,t,n){var r=n(8);r(r.S,"Object",{is:n(70)})},function(e,t){e.exports=Object.is||function(e,t){return e===t?0!==e||1/e===1/t:e!=e&&t!=t}},function(e,t,n){var r=n(8);r(r.S,"Object",{setPrototypeOf:n(72).set})},function(e,t,n){var r=n(13),i=n(12),o=function(e,t){if(i(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{r=n(20)(Function.call,n(50).f(Object.prototype,"__proto__").set,2),r(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,n){return o(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:o}},function(e,t,n){"use strict";var r=n(74),i={};i[n(25)("toStringTag")]="z",i+""!="[object z]"&&n(18)(Object.prototype,"toString",function(){return"[object "+r(this)+"]"},!0)},function(e,t,n){var r=n(34),i=n(25)("toStringTag"),o="Arguments"==r(function(){return arguments}()),s=function(e,t){try{return e[t]}catch(e){}};e.exports=function(e){var t,n,a;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=s(t=Object(e),i))?n:o?r(t):"Object"==(a=r(t))&&"function"==typeof t.callee?"Arguments":a}},function(e,t,n){var r=n(8);r(r.P,"Function",{bind:n(76)})},function(e,t,n){"use strict";var r=n(21),i=n(13),o=n(77),s=[].slice,a={},c=function(e,t,n){if(!(t in a)){for(var r=[],i=0;i>>0||(s.test(n)?16:10))}:r},function(e,t,n){var r=n(8),i=n(35),o=n(7),s=n(83),a="["+s+"]",c="​…",u=RegExp("^"+a+a+"*"),l=RegExp(a+a+"*$"),h=function(e,t,n){var i={},a=o(function(){return!!s[e]()||c[e]()!=c}),u=i[e]=a?t(f):s[e];n&&(i[n]=u),r(r.P+r.F*a,"String",i)},f=h.trim=function(e,t){return e=String(i(e)),1&t&&(e=e.replace(u,"")),2&t&&(e=e.replace(l,"")),e};e.exports=h},function(e,t){e.exports="\t\n\v\f\r   ᠎              \u2028\u2029\ufeff"},function(e,t,n){var r=n(8),i=n(85);r(r.G+r.F*(parseFloat!=i),{parseFloat:i})},function(e,t,n){var r=n(4).parseFloat,i=n(82).trim;e.exports=1/r(n(83)+"-0")!==-(1/0)?function(e){var t=i(String(e),3),n=r(t);return 0===n&&"-"==t.charAt(0)?-0:n}:r},function(e,t,n){"use strict";var r=n(4),i=n(5),o=n(34),s=n(87),a=n(16),c=n(7),u=n(49).f,l=n(50).f,h=n(11).f,f=n(82).trim,p="Number",d=r[p],y=d,m=d.prototype,g=o(n(45)(m))==p,v="trim"in String.prototype,b=function(e){var t=a(e,!1);if("string"==typeof t&&t.length>2){t=v?t.trim():f(t,3);var n,r,i,o=t.charCodeAt(0);if(43===o||45===o){if(n=t.charCodeAt(2),88===n||120===n)return NaN}else if(48===o){switch(t.charCodeAt(1)){case 66:case 98:r=2,i=49;break;case 79:case 111:r=8,i=55;break;default:return+t}for(var s,c=t.slice(2),u=0,l=c.length;ui)return NaN;return parseInt(c,r)}}return+t};if(!d(" 0o1")||!d("0b1")||d("+0x1")){d=function(e){var t=arguments.length<1?0:e,n=this;return n instanceof d&&(g?c(function(){m.valueOf.call(n)}):o(n)!=p)?s(new y(b(t)),n,d):b(t)};for(var x,_=n(6)?u(y):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),S=0;_.length>S;S++)i(y,x=_[S])&&!i(d,x)&&h(d,x,l(y,x));d.prototype=m,m.constructor=d,n(18)(r,p,d)}},function(e,t,n){var r=n(13),i=n(72).set;e.exports=function(e,t,n){var o,s=t.constructor;return s!==n&&"function"==typeof s&&(o=s.prototype)!==n.prototype&&r(o)&&i&&i(e,o),e}},function(e,t,n){"use strict";var r=n(8),i=n(38),o=n(89),s=n(90),a=1..toFixed,c=Math.floor,u=[0,0,0,0,0,0],l="Number.toFixed: incorrect invocation!",h="0",f=function(e,t){for(var n=-1,r=t;++n<6;)r+=e*u[n],u[n]=r%1e7,r=c(r/1e7)},p=function(e){for(var t=6,n=0;--t>=0;)n+=u[t],u[t]=c(n/e),n=n%e*1e7},d=function(){for(var e=6,t="";--e>=0;)if(""!==t||0===e||0!==u[e]){var n=String(u[e]);t=""===t?n:t+s.call(h,7-n.length)+n}return t},y=function(e,t,n){return 0===t?n:t%2===1?y(e,t-1,n*e):y(e*e,t/2,n)},m=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t};r(r.P+r.F*(!!a&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==(0xde0b6b3a7640080).toFixed(0))||!n(7)(function(){a.call({})})),"Number",{toFixed:function(e){var t,n,r,a,c=o(this,l),u=i(e),g="",v=h;if(u<0||u>20)throw RangeError(l);if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return String(c);if(c<0&&(g="-",c=-c),c>1e-21)if(t=m(c*y(2,69,1))-69,n=t<0?c*y(2,-t,1):c/y(2,t,1),n*=4503599627370496,t=52-t,t>0){for(f(0,n),r=u;r>=7;)f(1e7,0),r-=7;for(f(y(10,r,1),0),r=t-1;r>=23;)p(1<<23),r-=23;p(1<0?(a=v.length,v=g+(a<=u?"0."+s.call(h,u-a)+v:v.slice(0,a-u)+"."+v.slice(a-u))):v=g+v,v}})},function(e,t,n){var r=n(34);e.exports=function(e,t){if("number"!=typeof e&&"Number"!=r(e))throw TypeError(t);return+e}},function(e,t,n){"use strict";var r=n(38),i=n(35);e.exports=function(e){var t=String(i(this)),n="",o=r(e);if(o<0||o==1/0)throw RangeError("Count can't be negative");for(;o>0;(o>>>=1)&&(t+=t))1&o&&(n+=t);return n}},function(e,t,n){"use strict";var r=n(8),i=n(7),o=n(89),s=1..toPrecision;r(r.P+r.F*(i(function(){return"1"!==s.call(1,void 0)})||!i(function(){s.call({})})),"Number",{toPrecision:function(e){var t=o(this,"Number#toPrecision: incorrect invocation!");return void 0===e?s.call(t):s.call(t,e)}})},function(e,t,n){var r=n(8);r(r.S,"Number",{EPSILON:Math.pow(2,-52)})},function(e,t,n){var r=n(8),i=n(4).isFinite;r(r.S,"Number",{isFinite:function(e){return"number"==typeof e&&i(e)}})},function(e,t,n){var r=n(8);r(r.S,"Number",{isInteger:n(95)})},function(e,t,n){var r=n(13),i=Math.floor;e.exports=function(e){return!r(e)&&isFinite(e)&&i(e)===e}},function(e,t,n){var r=n(8);r(r.S,"Number",{isNaN:function(e){return e!=e}})},function(e,t,n){var r=n(8),i=n(95),o=Math.abs;r(r.S,"Number",{isSafeInteger:function(e){return i(e)&&o(e)<=9007199254740991}})},function(e,t,n){var r=n(8);r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(e,t,n){var r=n(8);r(r.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(e,t,n){var r=n(8),i=n(85);r(r.S+r.F*(Number.parseFloat!=i),"Number",{parseFloat:i})},function(e,t,n){var r=n(8),i=n(81);r(r.S+r.F*(Number.parseInt!=i),"Number",{parseInt:i})},function(e,t,n){var r=n(8),i=n(103),o=Math.sqrt,s=Math.acosh;r(r.S+r.F*!(s&&710==Math.floor(s(Number.MAX_VALUE))&&s(1/0)==1/0),"Math",{acosh:function(e){return(e=+e)<1?NaN:e>94906265.62425156?Math.log(e)+Math.LN2:i(e-1+o(e-1)*o(e+1))}})},function(e,t){e.exports=Math.log1p||function(e){return(e=+e)>-1e-8&&e<1e-8?e-e*e/2:Math.log(1+e)}},function(e,t,n){function r(e){return isFinite(e=+e)&&0!=e?e<0?-r(-e):Math.log(e+Math.sqrt(e*e+1)):e}var i=n(8),o=Math.asinh;i(i.S+i.F*!(o&&1/o(0)>0),"Math",{asinh:r})},function(e,t,n){var r=n(8),i=Math.atanh;r(r.S+r.F*!(i&&1/i(-0)<0),"Math",{atanh:function(e){return 0==(e=+e)?e:Math.log((1+e)/(1-e))/2}})},function(e,t,n){var r=n(8),i=n(107);r(r.S,"Math",{cbrt:function(e){return i(e=+e)*Math.pow(Math.abs(e),1/3)}})},function(e,t){e.exports=Math.sign||function(e){return 0==(e=+e)||e!=e?e:e<0?-1:1}},function(e,t,n){var r=n(8);r(r.S,"Math",{clz32:function(e){return(e>>>=0)?31-Math.floor(Math.log(e+.5)*Math.LOG2E):32}})},function(e,t,n){var r=n(8),i=Math.exp;r(r.S,"Math",{cosh:function(e){return(i(e=+e)+i(-e))/2}})},function(e,t,n){var r=n(8),i=n(111);r(r.S+r.F*(i!=Math.expm1),"Math",{expm1:i})},function(e,t){var n=Math.expm1;e.exports=!n||n(10)>22025.465794806718||n(10)<22025.465794806718||n(-2e-17)!=-2e-17?function(e){return 0==(e=+e)?e:e>-1e-6&&e<1e-6?e+e*e/2:Math.exp(e)-1}:n},function(e,t,n){var r=n(8);r(r.S,"Math",{fround:n(113)})},function(e,t,n){var r=n(107),i=Math.pow,o=i(2,-52),s=i(2,-23),a=i(2,127)*(2-s),c=i(2,-126),u=function(e){return e+1/o-1/o};e.exports=Math.fround||function(e){var t,n,i=Math.abs(e),l=r(e);return ia||n!=n?l*(1/0):l*n)}},function(e,t,n){var r=n(8),i=Math.abs;r(r.S,"Math",{hypot:function(e,t){for(var n,r,o=0,s=0,a=arguments.length,c=0;s0?(r=n/c,o+=r*r):o+=n;return c===1/0?1/0:c*Math.sqrt(o)}})},function(e,t,n){var r=n(8),i=Math.imul;r(r.S+r.F*n(7)(function(){return i(4294967295,5)!=-5||2!=i.length}),"Math",{imul:function(e,t){var n=65535,r=+e,i=+t,o=n&r,s=n&i;return 0|o*s+((n&r>>>16)*s+o*(n&i>>>16)<<16>>>0)}})},function(e,t,n){var r=n(8);r(r.S,"Math",{log10:function(e){return Math.log(e)*Math.LOG10E}})},function(e,t,n){var r=n(8);r(r.S,"Math",{log1p:n(103)})},function(e,t,n){var r=n(8);r(r.S,"Math",{log2:function(e){return Math.log(e)/Math.LN2}})},function(e,t,n){var r=n(8);r(r.S,"Math",{sign:n(107)})},function(e,t,n){var r=n(8),i=n(111),o=Math.exp;r(r.S+r.F*n(7)(function(){return!Math.sinh(-2e-17)!=-2e-17}),"Math",{sinh:function(e){return Math.abs(e=+e)<1?(i(e)-i(-e))/2:(o(e-1)-o(-e-1))*(Math.E/2)}})},function(e,t,n){var r=n(8),i=n(111),o=Math.exp;r(r.S,"Math",{tanh:function(e){var t=i(e=+e),n=i(-e);return t==1/0?1:n==1/0?-1:(t-n)/(o(e)+o(-e))}})},function(e,t,n){var r=n(8);r(r.S,"Math",{trunc:function(e){return(e>0?Math.floor:Math.ceil)(e)}})},function(e,t,n){var r=n(8),i=n(39),o=String.fromCharCode,s=String.fromCodePoint;r(r.S+r.F*(!!s&&1!=s.length),"String",{fromCodePoint:function(e){for(var t,n=[],r=arguments.length,s=0;r>s;){if(t=+arguments[s++],i(t,1114111)!==t)throw RangeError(t+" is not a valid code point");n.push(t<65536?o(t):o(((t-=65536)>>10)+55296,t%1024+56320))}return n.join("")}})},function(e,t,n){var r=n(8),i=n(32),o=n(37);r(r.S,"String",{raw:function(e){for(var t=i(e.raw),n=o(t.length),r=arguments.length,s=[],a=0;n>a;)s.push(String(t[a++])),a=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(38),i=n(35);e.exports=function(e){return function(t,n){var o,s,a=String(i(t)),c=r(n),u=a.length;return c<0||c>=u?e?"":void 0:(o=a.charCodeAt(c),o<55296||o>56319||c+1===u||(s=a.charCodeAt(c+1))<56320||s>57343?e?a.charAt(c):o:e?a.slice(c,c+2):(o-55296<<10)+(s-56320)+65536)}}},function(e,t,n){"use strict";var r=n(28),i=n(8),o=n(18),s=n(10),a=n(5),c=n(129),u=n(130),l=n(24),h=n(58),f=n(25)("iterator"),p=!([].keys&&"next"in[].keys()),d="@@iterator",y="keys",m="values",g=function(){return this};e.exports=function(e,t,n,v,b,x,_){u(n,t,v);var S,w,E,k=function(e){if(!p&&e in I)return I[e];switch(e){case y:return function(){return new n(this,e)};case m:return function(){return new n(this,e)}}return function(){return new n(this,e)}},A=t+" Iterator",C=b==m,O=!1,I=e.prototype,N=I[f]||I[d]||b&&I[b],L=N||k(b),P=b?C?k("entries"):L:void 0,T="Array"==t?I.entries||N:N;if(T&&(E=h(T.call(new e)),E!==Object.prototype&&E.next&&(l(E,A,!0),r||a(E,f)||s(E,f,g))),C&&N&&N.name!==m&&(O=!0,L=function(){return N.call(this)}),r&&!_||!p&&!O&&I[f]||s(I,f,L),c[t]=L,c[A]=g,b)if(S={values:C?L:k(m),keys:x?L:k(y),entries:P},_)for(w in S)w in I||o(I,w,S[w]);else i(i.P+i.F*(p||O),t,S);return S}},function(e,t){e.exports={}},function(e,t,n){"use strict";var r=n(45),i=n(17),o=n(24),s={};n(10)(s,n(25)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(s,{next:i(1,n)}),o(e,t+" Iterator")}},function(e,t,n){"use strict";var r=n(8),i=n(127)(!1);r(r.P,"String",{codePointAt:function(e){return i(this,e)}})},function(e,t,n){"use strict";var r=n(8),i=n(37),o=n(133),s="endsWith",a=""[s];r(r.P+r.F*n(135)(s),"String",{endsWith:function(e){var t=o(this,e,s),n=arguments.length>1?arguments[1]:void 0,r=i(t.length),c=void 0===n?r:Math.min(i(n),r),u=String(e);return a?a.call(t,u,c):t.slice(c-u.length,c)===u}})},function(e,t,n){var r=n(134),i=n(35);e.exports=function(e,t,n){if(r(t))throw TypeError("String#"+n+" doesn't accept regex!");return String(i(e))}},function(e,t,n){var r=n(13),i=n(34),o=n(25)("match");e.exports=function(e){var t;return r(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},function(e,t,n){var r=n(25)("match");e.exports=function(e){var t=/./;try{"/./"[e](t)}catch(n){try{return t[r]=!1,!"/./"[e](t)}catch(e){}}return!0}},function(e,t,n){"use strict";var r=n(8),i=n(133),o="includes";r(r.P+r.F*n(135)(o),"String",{includes:function(e){return!!~i(this,e,o).indexOf(e,arguments.length>1?arguments[1]:void 0)}})},function(e,t,n){var r=n(8);r(r.P,"String",{repeat:n(90)})},function(e,t,n){"use strict";var r=n(8),i=n(37),o=n(133),s="startsWith",a=""[s];r(r.P+r.F*n(135)(s),"String",{startsWith:function(e){var t=o(this,e,s),n=i(Math.min(arguments.length>1?arguments[1]:void 0,t.length)),r=String(e);return a?a.call(t,r,n):t.slice(n,n+r.length)===r}})},function(e,t,n){"use strict";n(140)("anchor",function(e){return function(t){return e(this,"a","name",t)}})},function(e,t,n){var r=n(8),i=n(7),o=n(35),s=/"/g,a=function(e,t,n,r){var i=String(o(e)),a="<"+t;return""!==n&&(a+=" "+n+'="'+String(r).replace(s,""")+'"'),a+">"+i+""};e.exports=function(e,t){var n={};n[e]=t(a),r(r.P+r.F*i(function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}),"String",n)}},function(e,t,n){"use strict";n(140)("big",function(e){return function(){return e(this,"big","","")}})},function(e,t,n){"use strict";n(140)("blink",function(e){return function(){return e(this,"blink","","")}})},function(e,t,n){"use strict";n(140)("bold",function(e){return function(){return e(this,"b","","")}})},function(e,t,n){"use strict";n(140)("fixed",function(e){return function(){return e(this,"tt","","")}})},function(e,t,n){"use strict";n(140)("fontcolor",function(e){return function(t){return e(this,"font","color",t)}})},function(e,t,n){"use strict";n(140)("fontsize",function(e){return function(t){return e(this,"font","size",t)}})},function(e,t,n){"use strict";n(140)("italics",function(e){return function(){return e(this,"i","","")}})},function(e,t,n){"use strict";n(140)("link",function(e){return function(t){return e(this,"a","href",t)}})},function(e,t,n){"use strict";n(140)("small",function(e){return function(){return e(this,"small","","")}})},function(e,t,n){"use strict";n(140)("strike",function(e){return function(){return e(this,"strike","","")}})},function(e,t,n){"use strict";n(140)("sub",function(e){return function(){return e(this,"sub","","")}})},function(e,t,n){"use strict";n(140)("sup",function(e){return function(){return e(this,"sup","","")}})},function(e,t,n){var r=n(8);r(r.S,"Date",{now:function(){return(new Date).getTime()}})},function(e,t,n){"use strict";var r=n(8),i=n(57),o=n(16);r(r.P+r.F*n(7)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function(e){var t=i(this),n=o(t);return"number"!=typeof n||isFinite(n)?t.toISOString():null}})},function(e,t,n){var r=n(8),i=n(156);r(r.P+r.F*(Date.prototype.toISOString!==i),"Date",{toISOString:i})},function(e,t,n){"use strict";var r=n(7),i=Date.prototype.getTime,o=Date.prototype.toISOString,s=function(e){return e>9?e:"0"+e};e.exports=r(function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))})||!r(function(){o.call(new Date(NaN))})?function(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var e=this,t=e.getUTCFullYear(),n=e.getUTCMilliseconds(),r=t<0?"-":t>9999?"+":""; +return r+("00000"+Math.abs(t)).slice(r?-6:-4)+"-"+s(e.getUTCMonth()+1)+"-"+s(e.getUTCDate())+"T"+s(e.getUTCHours())+":"+s(e.getUTCMinutes())+":"+s(e.getUTCSeconds())+"."+(n>99?n:"0"+s(n))+"Z"}:o},function(e,t,n){var r=Date.prototype,i="Invalid Date",o="toString",s=r[o],a=r.getTime;new Date(NaN)+""!=i&&n(18)(r,o,function(){var e=a.call(this);return e===e?s.call(this):i})},function(e,t,n){var r=n(25)("toPrimitive"),i=Date.prototype;r in i||n(10)(i,r,n(159))},function(e,t,n){"use strict";var r=n(12),i=n(16),o="number";e.exports=function(e){if("string"!==e&&e!==o&&"default"!==e)throw TypeError("Incorrect hint");return i(r(this),e!=o)}},function(e,t,n){var r=n(8);r(r.S,"Array",{isArray:n(44)})},function(e,t,n){"use strict";var r=n(20),i=n(8),o=n(57),s=n(162),a=n(163),c=n(37),u=n(164),l=n(165);i(i.S+i.F*!n(166)(function(e){Array.from(e)}),"Array",{from:function(e){var t,n,i,h,f=o(e),p="function"==typeof this?this:Array,d=arguments.length,y=d>1?arguments[1]:void 0,m=void 0!==y,g=0,v=l(f);if(m&&(y=r(y,d>2?arguments[2]:void 0,2)),void 0==v||p==Array&&a(v))for(t=c(f.length),n=new p(t);t>g;g++)u(n,g,m?y(f[g],g):f[g]);else for(h=v.call(f),n=new p;!(i=h.next()).done;g++)u(n,g,m?s(h,y,[i.value,g],!0):i.value);return n.length=g,n}})},function(e,t,n){var r=n(12);e.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(t){var o=e.return;throw void 0!==o&&r(o.call(e)),t}}},function(e,t,n){var r=n(129),i=n(25)("iterator"),o=Array.prototype;e.exports=function(e){return void 0!==e&&(r.Array===e||o[i]===e)}},function(e,t,n){"use strict";var r=n(11),i=n(17);e.exports=function(e,t,n){t in e?r.f(e,t,i(0,n)):e[t]=n}},function(e,t,n){var r=n(74),i=n(25)("iterator"),o=n(129);e.exports=n(9).getIteratorMethod=function(e){if(void 0!=e)return e[i]||e["@@iterator"]||o[r(e)]}},function(e,t,n){var r=n(25)("iterator"),i=!1;try{var o=[7][r]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(e){}e.exports=function(e,t){if(!t&&!i)return!1;var n=!1;try{var o=[7],s=o[r]();s.next=function(){return{done:n=!0}},o[r]=function(){return s},e(o)}catch(e){}return n}},function(e,t,n){"use strict";var r=n(8),i=n(164);r(r.S+r.F*n(7)(function(){function e(){}return!(Array.of.call(e)instanceof e)}),"Array",{of:function(){for(var e=0,t=arguments.length,n=new("function"==typeof this?this:Array)(t);t>e;)i(n,e,arguments[e++]);return n.length=t,n}})},function(e,t,n){"use strict";var r=n(8),i=n(32),o=[].join;r(r.P+r.F*(n(33)!=Object||!n(169)(o)),"Array",{join:function(e){return o.call(i(this),void 0===e?",":e)}})},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t){return!!e&&r(function(){t?e.call(null,function(){},1):e.call(null)})}},function(e,t,n){"use strict";var r=n(8),i=n(47),o=n(34),s=n(39),a=n(37),c=[].slice;r(r.P+r.F*n(7)(function(){i&&c.call(i)}),"Array",{slice:function(e,t){var n=a(this.length),r=o(this);if(t=void 0===t?n:t,"Array"==r)return c.call(this,e,t);for(var i=s(e,n),u=s(t,n),l=a(u-i),h=Array(l),f=0;f_;_++)if((f||_ in v)&&(y=v[_],m=b(y,_,g),e))if(n)S[_]=m;else if(m)switch(e){case 3:return!0;case 5:return y;case 6:return _;case 2:S.push(y)}else if(l)return!1;return h?-1:u||l?l:S}}},function(e,t,n){var r=n(175);e.exports=function(e,t){return new(r(e))(t)}},function(e,t,n){var r=n(13),i=n(44),o=n(25)("species");e.exports=function(e){var t;return i(e)&&(t=e.constructor,"function"!=typeof t||t!==Array&&!i(t.prototype)||(t=void 0),r(t)&&(t=t[o],null===t&&(t=void 0))),void 0===t?Array:t}},function(e,t,n){"use strict";var r=n(8),i=n(173)(1);r(r.P+r.F*!n(169)([].map,!0),"Array",{map:function(e){return i(this,e,arguments[1])}})},function(e,t,n){"use strict";var r=n(8),i=n(173)(2);r(r.P+r.F*!n(169)([].filter,!0),"Array",{filter:function(e){return i(this,e,arguments[1])}})},function(e,t,n){"use strict";var r=n(8),i=n(173)(3);r(r.P+r.F*!n(169)([].some,!0),"Array",{some:function(e){return i(this,e,arguments[1])}})},function(e,t,n){"use strict";var r=n(8),i=n(173)(4);r(r.P+r.F*!n(169)([].every,!0),"Array",{every:function(e){return i(this,e,arguments[1])}})},function(e,t,n){"use strict";var r=n(8),i=n(181);r(r.P+r.F*!n(169)([].reduce,!0),"Array",{reduce:function(e){return i(this,e,arguments.length,arguments[1],!1)}})},function(e,t,n){var r=n(21),i=n(57),o=n(33),s=n(37);e.exports=function(e,t,n,a,c){r(t);var u=i(e),l=o(u),h=s(u.length),f=c?h-1:0,p=c?-1:1;if(n<2)for(;;){if(f in l){a=l[f],f+=p;break}if(f+=p,c?f<0:h<=f)throw TypeError("Reduce of empty array with no initial value")}for(;c?f>=0:h>f;f+=p)f in l&&(a=t(a,l[f],f,u));return a}},function(e,t,n){"use strict";var r=n(8),i=n(181);r(r.P+r.F*!n(169)([].reduceRight,!0),"Array",{reduceRight:function(e){return i(this,e,arguments.length,arguments[1],!0)}})},function(e,t,n){"use strict";var r=n(8),i=n(36)(!1),o=[].indexOf,s=!!o&&1/[1].indexOf(1,-0)<0;r(r.P+r.F*(s||!n(169)(o)),"Array",{indexOf:function(e){return s?o.apply(this,arguments)||0:i(this,e,arguments[1])}})},function(e,t,n){"use strict";var r=n(8),i=n(32),o=n(38),s=n(37),a=[].lastIndexOf,c=!!a&&1/[1].lastIndexOf(1,-0)<0;r(r.P+r.F*(c||!n(169)(a)),"Array",{lastIndexOf:function(e){if(c)return a.apply(this,arguments)||0;var t=i(this),n=s(t.length),r=n-1;for(arguments.length>1&&(r=Math.min(r,o(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}})},function(e,t,n){var r=n(8);r(r.P,"Array",{copyWithin:n(186)}),n(187)("copyWithin")},function(e,t,n){"use strict";var r=n(57),i=n(39),o=n(37);e.exports=[].copyWithin||function(e,t){var n=r(this),s=o(n.length),a=i(e,s),c=i(t,s),u=arguments.length>2?arguments[2]:void 0,l=Math.min((void 0===u?s:i(u,s))-c,s-a),h=1;for(c0;)c in n?n[a]=n[c]:delete n[a],a+=h,c+=h;return n}},function(e,t,n){var r=n(25)("unscopables"),i=Array.prototype;void 0==i[r]&&n(10)(i,r,{}),e.exports=function(e){i[r][e]=!0}},function(e,t,n){var r=n(8);r(r.P,"Array",{fill:n(189)}),n(187)("fill")},function(e,t,n){"use strict";var r=n(57),i=n(39),o=n(37);e.exports=function(e){for(var t=r(this),n=o(t.length),s=arguments.length,a=i(s>1?arguments[1]:void 0,n),c=s>2?arguments[2]:void 0,u=void 0===c?n:i(c,n);u>a;)t[a++]=e;return t}},function(e,t,n){"use strict";var r=n(8),i=n(173)(5),o="find",s=!0;o in[]&&Array(1)[o](function(){s=!1}),r(r.P+r.F*s,"Array",{find:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}}),n(187)(o)},function(e,t,n){"use strict";var r=n(8),i=n(173)(6),o="findIndex",s=!0;o in[]&&Array(1)[o](function(){s=!1}),r(r.P+r.F*s,"Array",{findIndex:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}}),n(187)(o)},function(e,t,n){n(193)("Array")},function(e,t,n){"use strict";var r=n(4),i=n(11),o=n(6),s=n(25)("species");e.exports=function(e){var t=r[e];o&&t&&!t[s]&&i.f(t,s,{configurable:!0,get:function(){return this}})}},function(e,t,n){"use strict";var r=n(187),i=n(195),o=n(129),s=n(32);e.exports=n(128)(Array,"Array",function(e,t){this._t=s(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,i(1)):"keys"==t?i(0,n):"values"==t?i(0,e[n]):i(0,[n,e[n]])},"values"),o.Arguments=o.Array,r("keys"),r("values"),r("entries")},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){var r=n(4),i=n(87),o=n(11).f,s=n(49).f,a=n(134),c=n(197),u=r.RegExp,l=u,h=u.prototype,f=/a/g,p=/a/g,d=new u(f)!==f;if(n(6)&&(!d||n(7)(function(){return p[n(25)("match")]=!1,u(f)!=f||u(p)==p||"/a/i"!=u(f,"i")}))){u=function(e,t){var n=this instanceof u,r=a(e),o=void 0===t;return!n&&r&&e.constructor===u&&o?e:i(d?new l(r&&!o?e.source:e,t):l((r=e instanceof u)?e.source:e,r&&o?c.call(e):t),n?this:h,u)};for(var y=(function(e){e in u||o(u,e,{configurable:!0,get:function(){return l[e]},set:function(t){l[e]=t}})}),m=s(l),g=0;m.length>g;)y(m[g++]);h.constructor=u,u.prototype=h,n(18)(r,"RegExp",u)}n(193)("RegExp")},function(e,t,n){"use strict";var r=n(12);e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},function(e,t,n){"use strict";n(199);var r=n(12),i=n(197),o=n(6),s="toString",a=/./[s],c=function(e){n(18)(RegExp.prototype,s,e,!0)};n(7)(function(){return"/a/b"!=a.call({source:"a",flags:"b"})})?c(function(){var e=r(this);return"/".concat(e.source,"/","flags"in e?e.flags:!o&&e instanceof RegExp?i.call(e):void 0)}):a.name!=s&&c(function(){return a.call(this)})},function(e,t,n){n(6)&&"g"!=/./g.flags&&n(11).f(RegExp.prototype,"flags",{configurable:!0,get:n(197)})},function(e,t,n){n(201)("match",1,function(e,t,n){return[function(n){"use strict";var r=e(this),i=void 0==n?void 0:n[t];return void 0!==i?i.call(n,r):new RegExp(n)[t](String(r))},n]})},function(e,t,n){"use strict";var r=n(10),i=n(18),o=n(7),s=n(35),a=n(25);e.exports=function(e,t,n){var c=a(e),u=n(s,c,""[e]),l=u[0],h=u[1];o(function(){var t={};return t[c]=function(){return 7},7!=""[e](t)})&&(i(String.prototype,e,l),r(RegExp.prototype,c,2==t?function(e,t){return h.call(e,this,t)}:function(e){return h.call(e,this)}))}},function(e,t,n){n(201)("replace",2,function(e,t,n){return[function(r,i){"use strict";var o=e(this),s=void 0==r?void 0:r[t];return void 0!==s?s.call(r,o,i):n.call(String(o),r,i)},n]})},function(e,t,n){n(201)("search",1,function(e,t,n){return[function(n){"use strict";var r=e(this),i=void 0==n?void 0:n[t];return void 0!==i?i.call(n,r):new RegExp(n)[t](String(r))},n]})},function(e,t,n){n(201)("split",2,function(e,t,r){"use strict";var i=n(134),o=r,s=[].push,a="split",c="length",u="lastIndex";if("c"=="abbc"[a](/(b)*/)[1]||4!="test"[a](/(?:)/,-1)[c]||2!="ab"[a](/(?:ab)*/)[c]||4!="."[a](/(.?)(.?)/)[c]||"."[a](/()()/)[c]>1||""[a](/.?/)[c]){var l=void 0===/()??/.exec("")[1];r=function(e,t){var n=String(this);if(void 0===e&&0===t)return[];if(!i(e))return o.call(n,e,t);var r,a,h,f,p,d=[],y=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),m=0,g=void 0===t?4294967295:t>>>0,v=new RegExp(e.source,y+"g");for(l||(r=new RegExp("^"+v.source+"$(?!\\s)",y));(a=v.exec(n))&&(h=a.index+a[0][c],!(h>m&&(d.push(n.slice(m,a.index)),!l&&a[c]>1&&a[0].replace(r,function(){for(p=1;p1&&a.index=g)));)v[u]===a.index&&v[u]++;return m===n[c]?!f&&v.test("")||d.push(""):d.push(n.slice(m)),d[c]>g?d.slice(0,g):d}}else"0"[a](void 0,0)[c]&&(r=function(e,t){return void 0===e&&0===t?[]:o.call(this,e,t)});return[function(n,i){var o=e(this),s=void 0==n?void 0:n[t];return void 0!==s?s.call(n,o,i):r.call(String(o),n,i)},r]})},function(e,t,n){"use strict";var r,i,o,s,a=n(28),c=n(4),u=n(20),l=n(74),h=n(8),f=n(13),p=n(21),d=n(206),y=n(207),m=n(208),g=n(209).set,v=n(210)(),b=n(211),x=n(212),_=n(213),S="Promise",w=c.TypeError,E=c.process,k=c[S],A="process"==l(E),C=function(){},O=i=b.f,I=!!function(){try{var e=k.resolve(1),t=(e.constructor={})[n(25)("species")]=function(e){e(C,C)};return(A||"function"==typeof PromiseRejectionEvent)&&e.then(C)instanceof t}catch(e){}}(),N=function(e){var t;return!(!f(e)||"function"!=typeof(t=e.then))&&t},L=function(e,t){if(!e._n){e._n=!0;var n=e._c;v(function(){for(var r=e._v,i=1==e._s,o=0,s=function(t){var n,o,s=i?t.ok:t.fail,a=t.resolve,c=t.reject,u=t.domain;try{s?(i||(2==e._h&&$(e),e._h=1),s===!0?n=r:(u&&u.enter(),n=s(r),u&&u.exit()),n===t.promise?c(w("Promise-chain cycle")):(o=N(n))?o.call(n,a,c):a(n)):c(r)}catch(e){c(e)}};n.length>o;)s(n[o++]);e._c=[],e._n=!1,t&&!e._h&&P(e)})}},P=function(e){g.call(c,function(){var t,n,r,i=e._v,o=T(e);if(o&&(t=x(function(){A?E.emit("unhandledRejection",i,e):(n=c.onunhandledrejection)?n({promise:e,reason:i}):(r=c.console)&&r.error&&r.error("Unhandled promise rejection",i)}),e._h=A||T(e)?2:1),e._a=void 0,o&&t.e)throw t.v})},T=function(e){if(1==e._h)return!1;for(var t,n=e._a||e._c,r=0;n.length>r;)if(t=n[r++],t.fail||!T(t.promise))return!1;return!0},$=function(e){g.call(c,function(){var t;A?E.emit("rejectionHandled",e):(t=c.onrejectionhandled)&&t({promise:e,reason:e._v})})},M=function(e){var t=this;t._d||(t._d=!0,t=t._w||t,t._v=e,t._s=2,t._a||(t._a=t._c.slice()),L(t,!0))},j=function(e){var t,n=this;if(!n._d){n._d=!0,n=n._w||n;try{if(n===e)throw w("Promise can't be resolved itself");(t=N(e))?v(function(){var r={_w:n,_d:!1};try{t.call(e,u(j,r,1),u(M,r,1))}catch(e){M.call(r,e)}}):(n._v=e,n._s=1,L(n,!1))}catch(e){M.call({_w:n,_d:!1},e)}}};I||(k=function(e){d(this,k,S,"_h"),p(e),r.call(this);try{e(u(j,this,1),u(M,this,1))}catch(e){M.call(this,e)}},r=function(e){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},r.prototype=n(214)(k.prototype,{then:function(e,t){var n=O(m(this,k));return n.ok="function"!=typeof e||e,n.fail="function"==typeof t&&t,n.domain=A?E.domain:void 0,this._c.push(n),this._a&&this._a.push(n),this._s&&L(this,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),o=function(){var e=new r;this.promise=e,this.resolve=u(j,e,1),this.reject=u(M,e,1)},b.f=O=function(e){return e===k||e===s?new o(e):i(e)}),h(h.G+h.W+h.F*!I,{Promise:k}),n(24)(k,S),n(193)(S),s=n(9)[S],h(h.S+h.F*!I,S,{reject:function(e){var t=O(this),n=t.reject;return n(e),t.promise}}),h(h.S+h.F*(a||!I),S,{resolve:function(e){return _(a&&this===s?k:this,e)}}),h(h.S+h.F*!(I&&n(166)(function(e){k.all(e).catch(C)})),S,{all:function(e){var t=this,n=O(t),r=n.resolve,i=n.reject,o=x(function(){var n=[],o=0,s=1;y(e,!1,function(e){var a=o++,c=!1;n.push(void 0),s++,t.resolve(e).then(function(e){c||(c=!0,n[a]=e,--s||r(n))},i)}),--s||r(n)});return o.e&&i(o.v),n.promise},race:function(e){var t=this,n=O(t),r=n.reject,i=x(function(){y(e,!1,function(e){t.resolve(e).then(n.resolve,r)})});return i.e&&r(i.v),n.promise}})},function(e,t){e.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},function(e,t,n){var r=n(20),i=n(162),o=n(163),s=n(12),a=n(37),c=n(165),u={},l={},t=e.exports=function(e,t,n,h,f){var p,d,y,m,g=f?function(){return e}:c(e),v=r(n,h,t?2:1),b=0;if("function"!=typeof g)throw TypeError(e+" is not iterable!");if(o(g)){for(p=a(e.length);p>b;b++)if(m=t?v(s(d=e[b])[0],d[1]):v(e[b]),m===u||m===l)return m}else for(y=g.call(e);!(d=y.next()).done;)if(m=i(y,v,d.value,t),m===u||m===l)return m};t.BREAK=u,t.RETURN=l},function(e,t,n){var r=n(12),i=n(21),o=n(25)("species");e.exports=function(e,t){var n,s=r(e).constructor;return void 0===s||void 0==(n=r(s)[o])?t:i(n)}},function(e,t,n){var r,i,o,s=n(20),a=n(77),c=n(47),u=n(15),l=n(4),h=l.process,f=l.setImmediate,p=l.clearImmediate,d=l.MessageChannel,y=l.Dispatch,m=0,g={},v="onreadystatechange",b=function(){var e=+this;if(g.hasOwnProperty(e)){var t=g[e];delete g[e],t()}},x=function(e){b.call(e.data)};f&&p||(f=function(e){for(var t=[],n=1;arguments.length>n;)t.push(arguments[n++]);return g[++m]=function(){a("function"==typeof e?e:Function(e),t)},r(m),m},p=function(e){delete g[e]},"process"==n(34)(h)?r=function(e){h.nextTick(s(b,e,1))}:y&&y.now?r=function(e){y.now(s(b,e,1))}:d?(i=new d,o=i.port2,i.port1.onmessage=x,r=s(o.postMessage,o,1)):l.addEventListener&&"function"==typeof postMessage&&!l.importScripts?(r=function(e){l.postMessage(e+"","*")},l.addEventListener("message",x,!1)):r=v in u("script")?function(e){c.appendChild(u("script"))[v]=function(){c.removeChild(this),b.call(e)}}:function(e){setTimeout(s(b,e,1),0)}),e.exports={set:f,clear:p}},function(e,t,n){var r=n(4),i=n(209).set,o=r.MutationObserver||r.WebKitMutationObserver,s=r.process,a=r.Promise,c="process"==n(34)(s);e.exports=function(){var e,t,n,u=function(){var r,i;for(c&&(r=s.domain)&&r.exit();e;){i=e.fn,e=e.next;try{i()}catch(r){throw e?n():t=void 0,r}}t=void 0,r&&r.enter()};if(c)n=function(){s.nextTick(u)};else if(o){var l=!0,h=document.createTextNode("");new o(u).observe(h,{characterData:!0}),n=function(){h.data=l=!l}}else if(a&&a.resolve){var f=a.resolve();n=function(){f.then(u)}}else n=function(){i.call(r,u)};return function(r){var i={fn:r,next:void 0};t&&(t.next=i),e||(e=i,n()),t=i}}},function(e,t,n){"use strict";function r(e){var t,n;this.promise=new e(function(e,r){if(void 0!==t||void 0!==n)throw TypeError("Bad Promise constructor");t=e,n=r}),this.resolve=i(t),this.reject=i(n)}var i=n(21);e.exports.f=function(e){return new r(e)}},function(e,t){e.exports=function(e){try{return{e:!1,v:e()}}catch(e){return{e:!0,v:e}}}},function(e,t,n){var r=n(12),i=n(13),o=n(211);e.exports=function(e,t){if(r(e),i(t)&&t.constructor===e)return t;var n=o.f(e),s=n.resolve;return s(t),n.promise}},function(e,t,n){var r=n(18);e.exports=function(e,t,n){for(var i in t)r(e,i,t[i],n);return e}},function(e,t,n){"use strict";var r=n(216),i=n(217),o="Map";e.exports=n(218)(o,function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{get:function(e){var t=r.getEntry(i(this,o),e);return t&&t.v},set:function(e,t){return r.def(i(this,o),0===e?0:e,t)}},r,!0)},function(e,t,n){"use strict";var r=n(11).f,i=n(45),o=n(214),s=n(20),a=n(206),c=n(207),u=n(128),l=n(195),h=n(193),f=n(6),p=n(22).fastKey,d=n(217),y=f?"_s":"size",m=function(e,t){var n,r=p(t);if("F"!==r)return e._i[r];for(n=e._f;n;n=n.n)if(n.k==t)return n};e.exports={getConstructor:function(e,t,n,u){var l=e(function(e,r){a(e,l,t,"_i"),e._t=t,e._i=i(null),e._f=void 0,e._l=void 0,e[y]=0,void 0!=r&&c(r,n,e[u],e)});return o(l.prototype,{clear:function(){for(var e=d(this,t),n=e._i,r=e._f;r;r=r.n)r.r=!0,r.p&&(r.p=r.p.n=void 0),delete n[r.i];e._f=e._l=void 0,e[y]=0},delete:function(e){var n=d(this,t),r=m(n,e);if(r){var i=r.n,o=r.p;delete n._i[r.i],r.r=!0,o&&(o.n=i),i&&(i.p=o),n._f==r&&(n._f=i),n._l==r&&(n._l=o),n[y]--}return!!r},forEach:function(e){d(this,t);for(var n,r=s(e,arguments.length>1?arguments[1]:void 0,3);n=n?n.n:this._f;)for(r(n.v,n.k,this);n&&n.r;)n=n.p},has:function(e){return!!m(d(this,t),e)}}),f&&r(l.prototype,"size",{get:function(){return d(this,t)[y]}}),l},def:function(e,t,n){var r,i,o=m(e,t);return o?o.v=n:(e._l=o={i:i=p(t,!0),k:t,v:n,p:r=e._l,n:void 0,r:!1},e._f||(e._f=o),r&&(r.n=o),e[y]++,"F"!==i&&(e._i[i]=o)),e},getEntry:m,setStrong:function(e,t,n){u(e,t,function(e,n){this._t=d(e,t),this._k=n,this._l=void 0},function(){for(var e=this,t=e._k,n=e._l;n&&n.r;)n=n.p;return e._t&&(e._l=n=n?n.n:e._t._f)?"keys"==t?l(0,n.k):"values"==t?l(0,n.v):l(0,[n.k,n.v]):(e._t=void 0,l(1))},n?"entries":"values",!n,!0),h(t)}}},function(e,t,n){var r=n(13);e.exports=function(e,t){if(!r(e)||e._t!==t)throw TypeError("Incompatible receiver, "+t+" required!");return e}},function(e,t,n){"use strict";var r=n(4),i=n(8),o=n(18),s=n(214),a=n(22),c=n(207),u=n(206),l=n(13),h=n(7),f=n(166),p=n(24),d=n(87);e.exports=function(e,t,n,y,m,g){var v=r[e],b=v,x=m?"set":"add",_=b&&b.prototype,S={},w=function(e){var t=_[e];o(_,e,"delete"==e?function(e){return!(g&&!l(e))&&t.call(this,0===e?0:e)}:"has"==e?function(e){return!(g&&!l(e))&&t.call(this,0===e?0:e)}:"get"==e?function(e){return g&&!l(e)?void 0:t.call(this,0===e?0:e)}:"add"==e?function(e){return t.call(this,0===e?0:e),this}:function(e,n){return t.call(this,0===e?0:e,n),this})};if("function"==typeof b&&(g||_.forEach&&!h(function(){(new b).entries().next()}))){var E=new b,k=E[x](g?{}:-0,1)!=E,A=h(function(){E.has(1)}),C=f(function(e){new b(e)}),O=!g&&h(function(){for(var e=new b,t=5;t--;)e[x](t,t);return!e.has(-0)});C||(b=t(function(t,n){u(t,b,e);var r=d(new v,t,b);return void 0!=n&&c(n,m,r[x],r),r}),b.prototype=_,_.constructor=b),(A||O)&&(w("delete"),w("has"),m&&w("get")),(O||k)&&w(x),g&&_.clear&&delete _.clear}else b=y.getConstructor(t,e,m,x),s(b.prototype,n),a.NEED=!0;return p(b,e),S[e]=b,i(i.G+i.W+i.F*(b!=v),S),g||y.setStrong(b,e,m),b}},function(e,t,n){"use strict";var r=n(216),i=n(217),o="Set";e.exports=n(218)(o,function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return r.def(i(this,o),e=0===e?0:e,e)}},r)},function(e,t,n){"use strict";var r,i=n(173)(0),o=n(18),s=n(22),a=n(68),c=n(221),u=n(13),l=n(7),h=n(217),f="WeakMap",p=s.getWeak,d=Object.isExtensible,y=c.ufstore,m={},g=function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},v={get:function(e){if(u(e)){var t=p(e);return t===!0?y(h(this,f)).get(e):t?t[this._i]:void 0}},set:function(e,t){return c.def(h(this,f),e,t)}},b=e.exports=n(218)(f,g,v,c,!0,!0);l(function(){return 7!=(new b).set((Object.freeze||Object)(m),7).get(m)})&&(r=c.getConstructor(g,f),a(r.prototype,v),s.NEED=!0,i(["delete","has","get","set"],function(e){var t=b.prototype,n=t[e];o(t,e,function(t,i){if(u(t)&&!d(t)){this._f||(this._f=new r);var o=this._f[e](t,i);return"set"==e?this:o}return n.call(this,t,i)})}))},function(e,t,n){"use strict";var r=n(214),i=n(22).getWeak,o=n(12),s=n(13),a=n(206),c=n(207),u=n(173),l=n(5),h=n(217),f=u(5),p=u(6),d=0,y=function(e){return e._l||(e._l=new m)},m=function(){this.a=[]},g=function(e,t){return f(e.a,function(e){return e[0]===t})};m.prototype={get:function(e){var t=g(this,e);if(t)return t[1]},has:function(e){return!!g(this,e)},set:function(e,t){var n=g(this,e);n?n[1]=t:this.a.push([e,t])},delete:function(e){var t=p(this.a,function(t){return t[0]===e});return~t&&this.a.splice(t,1),!!~t}},e.exports={getConstructor:function(e,t,n,o){var u=e(function(e,r){a(e,u,t,"_i"),e._t=t,e._i=d++,e._l=void 0,void 0!=r&&c(r,n,e[o],e)});return r(u.prototype,{delete:function(e){if(!s(e))return!1;var n=i(e);return n===!0?y(h(this,t)).delete(e):n&&l(n,this._i)&&delete n[this._i]},has:function(e){if(!s(e))return!1;var n=i(e);return n===!0?y(h(this,t)).has(e):n&&l(n,this._i)}}),u},def:function(e,t,n){var r=i(o(t),!0);return r===!0?y(e).set(t,n):r[e._i]=n,e},ufstore:y}},function(e,t,n){"use strict";var r=n(221),i=n(217),o="WeakSet";n(218)(o,function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return r.def(i(this,o),e,!0)}},r,!1,!0)},function(e,t,n){"use strict";var r=n(8),i=n(224),o=n(225),s=n(12),a=n(39),c=n(37),u=n(13),l=n(4).ArrayBuffer,h=n(208),f=o.ArrayBuffer,p=o.DataView,d=i.ABV&&l.isView,y=f.prototype.slice,m=i.VIEW,g="ArrayBuffer";r(r.G+r.W+r.F*(l!==f),{ArrayBuffer:f}),r(r.S+r.F*!i.CONSTR,g,{isView:function(e){return d&&d(e)||u(e)&&m in e}}),r(r.P+r.U+r.F*n(7)(function(){return!new f(2).slice(1,void 0).byteLength}),g,{slice:function(e,t){if(void 0!==y&&void 0===t)return y.call(s(this),e);for(var n=s(this).byteLength,r=a(e,n),i=a(void 0===t?n:t,n),o=new(h(this,f))(c(i-r)),u=new p(this),l=new p(o),d=0;r>1,l=23===t?G(2,-24)-G(2,-77):0,h=0,f=e<0||0===e&&1/e<0?1:0;for(e=B(e),e!=e||e===F?(i=e!=e?1:0,r=c):(r=q(U(e)/z),e*(o=G(2,-r))<1&&(r--,o*=2),e+=r+u>=1?l/o:l*G(2,1-u),e*o>=2&&(r++,o/=2),r+u>=c?(i=0,r=c):r+u>=1?(i=(e*o-1)*G(2,t),r+=u):(i=e*G(2,u-1)*G(2,t),r=0));t>=8;s[h++]=255&i,i/=256,t-=8);for(r=r<0;s[h++]=255&r,r/=256,a-=8);return s[--h]|=128*f,s}function i(e,t,n){var r,i=8*n-t-1,o=(1<>1,a=i-7,c=n-1,u=e[c--],l=127&u;for(u>>=7;a>0;l=256*l+e[c],c--,a-=8);for(r=l&(1<<-a)-1,l>>=-a,a+=t;a>0;r=256*r+e[c],c--,a-=8);if(0===l)l=1-s;else{if(l===o)return r?NaN:u?-F:F;r+=G(2,t),l-=s}return(u?-1:1)*r*G(2,l-t)}function o(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]}function s(e){return[255&e]}function a(e){return[255&e,e>>8&255]}function c(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]}function u(e){return r(e,52,8)}function l(e){return r(e,23,4)}function h(e,t,n){A(e[L],t,{get:function(){return this[n]}})}function f(e,t,n,r){var i=+n,o=E(i);if(o+t>e[Z])throw R(T);var s=e[Y]._b,a=o+e[H],c=s.slice(a,a+t);return r?c:c.reverse()}function p(e,t,n,r,i,o){var s=+n,a=E(s);if(a+t>e[Z])throw R(T);for(var c=e[Y]._b,u=a+e[H],l=r(+i),h=0;hee;)(K=Q[ee++])in $||v($,K,D[K]);m||(X.constructor=$)}var te=new M(new $(2)),ne=M[L].setInt8;te.setInt8(0,2147483648),te.setInt8(1,2147483649),!te.getInt8(0)&&te.getInt8(1)||b(M[L],{setInt8:function(e,t){ne.call(this,e,t<<24>>24)},setUint8:function(e,t){ne.call(this,e,t<<24>>24)}},!0)}else $=function(e){_(this,$,I);var t=E(e);this._b=C.call(Array(t),0),this[Z]=t},M=function(e,t,n){_(this,M,N),_(e,$,N);var r=e[Z],i=S(t);if(i<0||i>r)throw R("Wrong offset!");if(n=void 0===n?r-i:w(n),i+n>r)throw R(P);this[Y]=e,this[H]=i,this[Z]=n},y&&(h($,W,"_l"),h(M,V,"_b"),h(M,W,"_l"),h(M,J,"_o")),b(M[L],{getInt8:function(e){return f(this,1,e)[0]<<24>>24},getUint8:function(e){return f(this,1,e)[0]},getInt16:function(e){var t=f(this,2,e,arguments[1]);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=f(this,2,e,arguments[1]);return t[1]<<8|t[0]},getInt32:function(e){return o(f(this,4,e,arguments[1]))},getUint32:function(e){return o(f(this,4,e,arguments[1]))>>>0},getFloat32:function(e){return i(f(this,4,e,arguments[1]),23,4)},getFloat64:function(e){return i(f(this,8,e,arguments[1]),52,8)},setInt8:function(e,t){p(this,1,e,s,t)},setUint8:function(e,t){p(this,1,e,s,t)},setInt16:function(e,t){p(this,2,e,a,t,arguments[2])},setUint16:function(e,t){p(this,2,e,a,t,arguments[2])},setInt32:function(e,t){p(this,4,e,c,t,arguments[2])},setUint32:function(e,t){p(this,4,e,c,t,arguments[2])},setFloat32:function(e,t){p(this,4,e,l,t,arguments[2])},setFloat64:function(e,t){p(this,8,e,u,t,arguments[2])}});O($,I),O(M,N),v(M[L],g.VIEW,!0),t[I]=$,t[N]=M},function(e,t,n){var r=n(38),i=n(37);e.exports=function(e){if(void 0===e)return 0;var t=r(e),n=i(t);if(t!==n)throw RangeError("Wrong length!");return n}},function(e,t,n){var r=n(8);r(r.G+r.W+r.F*!n(224).ABV,{DataView:n(225).DataView})},function(e,t,n){n(229)("Int8",1,function(e){return function(t,n,r){return e(this,t,n,r)}})},function(e,t,n){"use strict";if(n(6)){var r=n(28),i=n(4),o=n(7),s=n(8),a=n(224),c=n(225),u=n(20),l=n(206),h=n(17),f=n(10),p=n(214),d=n(38),y=n(37),m=n(226),g=n(39),v=n(16),b=n(5),x=n(74),_=n(13),S=n(57),w=n(163),E=n(45),k=n(58),A=n(49).f,C=n(165),O=n(19),I=n(25),N=n(173),L=n(36),P=n(208),T=n(194),$=n(129),M=n(166),j=n(193),R=n(189),F=n(186),D=n(11),B=n(50),G=D.f,q=B.f,U=i.RangeError,z=i.TypeError,V=i.Uint8Array,W="ArrayBuffer",J="Shared"+W,Y="BYTES_PER_ELEMENT",Z="prototype",H=Array[Z],K=c.ArrayBuffer,X=c.DataView,Q=N(0),ee=N(2),te=N(3),ne=N(4),re=N(5),ie=N(6),oe=L(!0),se=L(!1),ae=T.values,ce=T.keys,ue=T.entries,le=H.lastIndexOf,he=H.reduce,fe=H.reduceRight,pe=H.join,de=H.sort,ye=H.slice,me=H.toString,ge=H.toLocaleString,ve=I("iterator"),be=I("toStringTag"),xe=O("typed_constructor"),_e=O("def_constructor"),Se=a.CONSTR,we=a.TYPED,Ee=a.VIEW,ke="Wrong length!",Ae=N(1,function(e,t){return Le(P(e,e[_e]),t)}),Ce=o(function(){return 1===new V(new Uint16Array([1]).buffer)[0]}),Oe=!!V&&!!V[Z].set&&o(function(){new V(1).set({})}),Ie=function(e,t){var n=d(e);if(n<0||n%t)throw U("Wrong offset!");return n},Ne=function(e){if(_(e)&&we in e)return e;throw z(e+" is not a typed array!")},Le=function(e,t){if(!(_(e)&&xe in e))throw z("It is not a typed array constructor!");return new e(t)},Pe=function(e,t){return Te(P(e,e[_e]),t)},Te=function(e,t){for(var n=0,r=t.length,i=Le(e,r);r>n;)i[n]=t[n++];return i},$e=function(e,t,n){G(e,t,{get:function(){return this._d[n]}})},Me=function(e){var t,n,r,i,o,s,a=S(e),c=arguments.length,l=c>1?arguments[1]:void 0,h=void 0!==l,f=C(a);if(void 0!=f&&!w(f)){for(s=f.call(a),r=[],t=0;!(o=s.next()).done;t++)r.push(o.value);a=r}for(h&&c>2&&(l=u(l,arguments[2],2)),t=0,n=y(a.length),i=Le(this,n);n>t;t++)i[t]=h?l(a[t],t):a[t];return i},je=function(){for(var e=0,t=arguments.length,n=Le(this,t);t>e;)n[e]=arguments[e++];return n},Re=!!V&&o(function(){ge.call(new V(1))}),Fe=function(){return ge.apply(Re?ye.call(Ne(this)):Ne(this),arguments)},De={copyWithin:function(e,t){return F.call(Ne(this),e,t,arguments.length>2?arguments[2]:void 0)},every:function(e){return ne(Ne(this),e,arguments.length>1?arguments[1]:void 0)},fill:function(e){return R.apply(Ne(this),arguments)},filter:function(e){return Pe(this,ee(Ne(this),e,arguments.length>1?arguments[1]:void 0))},find:function(e){return re(Ne(this),e,arguments.length>1?arguments[1]:void 0)},findIndex:function(e){return ie(Ne(this),e,arguments.length>1?arguments[1]:void 0)},forEach:function(e){Q(Ne(this),e,arguments.length>1?arguments[1]:void 0)},indexOf:function(e){return se(Ne(this),e,arguments.length>1?arguments[1]:void 0)},includes:function(e){return oe(Ne(this),e,arguments.length>1?arguments[1]:void 0)},join:function(e){return pe.apply(Ne(this),arguments)},lastIndexOf:function(e){return le.apply(Ne(this),arguments)},map:function(e){return Ae(Ne(this),e,arguments.length>1?arguments[1]:void 0)},reduce:function(e){return he.apply(Ne(this),arguments)},reduceRight:function(e){return fe.apply(Ne(this),arguments)},reverse:function(){for(var e,t=this,n=Ne(t).length,r=Math.floor(n/2),i=0;i1?arguments[1]:void 0)},sort:function(e){return de.call(Ne(this),e)},subarray:function(e,t){var n=Ne(this),r=n.length,i=g(e,r);return new(P(n,n[_e]))(n.buffer,n.byteOffset+i*n.BYTES_PER_ELEMENT,y((void 0===t?r:g(t,r))-i))}},Be=function(e,t){return Pe(this,ye.call(Ne(this),e,t))},Ge=function(e){Ne(this);var t=Ie(arguments[1],1),n=this.length,r=S(e),i=y(r.length),o=0;if(i+t>n)throw U(ke);for(;o255?255:255&r),i.v[p](n*t+i.o,r,Ce)},I=function(e,t){G(e,t,{get:function(){return C(this,t)},set:function(e){return O(this,t,e); +},enumerable:!0})};b?(d=n(function(e,n,r,i){l(e,d,u,"_d");var o,s,a,c,h=0,p=0;if(_(n)){if(!(n instanceof K||(c=x(n))==W||c==J))return we in n?Te(d,n):Me.call(d,n);o=n,p=Ie(r,t);var g=n.byteLength;if(void 0===i){if(g%t)throw U(ke);if(s=g-p,s<0)throw U(ke)}else if(s=y(i)*t,s+p>g)throw U(ke);a=s/t}else a=m(n),s=a*t,o=new K(s);for(f(e,"_d",{b:o,o:p,l:s,e:a,v:new X(o)});h=n.length)return{value:void 0,done:!0};while(!((e=n[t._i++])in t._t));return{value:e,done:!1}}),r(r.S,"Reflect",{enumerate:function(e){return new o(e)}})},function(e,t,n){function r(e,t){var n,a,l=arguments.length<3?e:arguments[2];return u(e)===l?e[t]:(n=i.f(e,t))?s(n,"value")?n.value:void 0!==n.get?n.get.call(l):void 0:c(a=o(e))?r(a,t,l):void 0}var i=n(50),o=n(58),s=n(5),a=n(8),c=n(13),u=n(12);a(a.S,"Reflect",{get:r})},function(e,t,n){var r=n(50),i=n(8),o=n(12);i(i.S,"Reflect",{getOwnPropertyDescriptor:function(e,t){return r.f(o(e),t)}})},function(e,t,n){var r=n(8),i=n(58),o=n(12);r(r.S,"Reflect",{getPrototypeOf:function(e){return i(o(e))}})},function(e,t,n){var r=n(8);r(r.S,"Reflect",{has:function(e,t){return t in e}})},function(e,t,n){var r=n(8),i=n(12),o=Object.isExtensible;r(r.S,"Reflect",{isExtensible:function(e){return i(e),!o||o(e)}})},function(e,t,n){var r=n(8);r(r.S,"Reflect",{ownKeys:n(249)})},function(e,t,n){var r=n(49),i=n(42),o=n(12),s=n(4).Reflect;e.exports=s&&s.ownKeys||function(e){var t=r.f(o(e)),n=i.f;return n?t.concat(n(e)):t}},function(e,t,n){var r=n(8),i=n(12),o=Object.preventExtensions;r(r.S,"Reflect",{preventExtensions:function(e){i(e);try{return o&&o(e),!0}catch(e){return!1}}})},function(e,t,n){function r(e,t,n){var c,f,p=arguments.length<4?e:arguments[3],d=o.f(l(e),t);if(!d){if(h(f=s(e)))return r(f,t,n,p);d=u(0)}return a(d,"value")?!(d.writable===!1||!h(p))&&(c=o.f(p,t)||u(0),c.value=n,i.f(p,t,c),!0):void 0!==d.set&&(d.set.call(p,n),!0)}var i=n(11),o=n(50),s=n(58),a=n(5),c=n(8),u=n(17),l=n(12),h=n(13);c(c.S,"Reflect",{set:r})},function(e,t,n){var r=n(8),i=n(72);i&&r(r.S,"Reflect",{setPrototypeOf:function(e,t){i.check(e,t);try{return i.set(e,t),!0}catch(e){return!1}}})},function(e,t,n){"use strict";var r=n(8),i=n(36)(!0);r(r.P,"Array",{includes:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}}),n(187)("includes")},function(e,t,n){"use strict";var r=n(8),i=n(255),o=n(57),s=n(37),a=n(21),c=n(174);r(r.P,"Array",{flatMap:function(e){var t,n,r=o(this);return a(e),t=s(r.length),n=c(r,0),i(n,r,r,t,0,1,e,arguments[1]),n}}),n(187)("flatMap")},function(e,t,n){"use strict";function r(e,t,n,u,l,h,f,p){for(var d,y,m=l,g=0,v=!!f&&a(f,p,3);g0)m=r(e,t,d,s(d.length),m,h-1)-1;else{if(m>=9007199254740991)throw TypeError();e[m]=d}m++}g++}return m}var i=n(44),o=n(13),s=n(37),a=n(20),c=n(25)("isConcatSpreadable");e.exports=r},function(e,t,n){"use strict";var r=n(8),i=n(255),o=n(57),s=n(37),a=n(38),c=n(174);r(r.P,"Array",{flatten:function(){var e=arguments[0],t=o(this),n=s(t.length),r=c(t,0);return i(r,t,t,n,0,void 0===e?1:a(e)),r}}),n(187)("flatten")},function(e,t,n){"use strict";var r=n(8),i=n(127)(!0);r(r.P,"String",{at:function(e){return i(this,e)}})},function(e,t,n){"use strict";var r=n(8),i=n(259);r(r.P,"String",{padStart:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0,!0)}})},function(e,t,n){var r=n(37),i=n(90),o=n(35);e.exports=function(e,t,n,s){var a=String(o(e)),c=a.length,u=void 0===n?" ":String(n),l=r(t);if(l<=c||""==u)return a;var h=l-c,f=i.call(u,Math.ceil(h/u.length));return f.length>h&&(f=f.slice(0,h)),s?f+a:a+f}},function(e,t,n){"use strict";var r=n(8),i=n(259);r(r.P,"String",{padEnd:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0,!1)}})},function(e,t,n){"use strict";n(82)("trimLeft",function(e){return function(){return e(this,1)}},"trimStart")},function(e,t,n){"use strict";n(82)("trimRight",function(e){return function(){return e(this,2)}},"trimEnd")},function(e,t,n){"use strict";var r=n(8),i=n(35),o=n(37),s=n(134),a=n(197),c=RegExp.prototype,u=function(e,t){this._r=e,this._s=t};n(130)(u,"RegExp String",function(){var e=this._r.exec(this._s);return{value:e,done:null===e}}),r(r.P,"String",{matchAll:function(e){if(i(this),!s(e))throw TypeError(e+" is not a regexp!");var t=String(this),n="flags"in c?String(e.flags):a.call(e),r=new RegExp(e.source,~n.indexOf("g")?n:"g"+n);return r.lastIndex=o(e.lastIndex),new u(r,t)}})},function(e,t,n){n(27)("asyncIterator")},function(e,t,n){n(27)("observable")},function(e,t,n){var r=n(8),i=n(249),o=n(32),s=n(50),a=n(164);r(r.S,"Object",{getOwnPropertyDescriptors:function(e){for(var t,n,r=o(e),c=s.f,u=i(r),l={},h=0;u.length>h;)n=c(r,t=u[h++]),void 0!==n&&a(l,t,n);return l}})},function(e,t,n){var r=n(8),i=n(268)(!1);r(r.S,"Object",{values:function(e){return i(e)}})},function(e,t,n){var r=n(30),i=n(32),o=n(43).f;e.exports=function(e){return function(t){for(var n,s=i(t),a=r(s),c=a.length,u=0,l=[];c>u;)o.call(s,n=a[u++])&&l.push(e?[n,s[n]]:s[n]);return l}}},function(e,t,n){var r=n(8),i=n(268)(!0);r(r.S,"Object",{entries:function(e){return i(e)}})},function(e,t,n){"use strict";var r=n(8),i=n(57),o=n(21),s=n(11);n(6)&&r(r.P+n(271),"Object",{__defineGetter__:function(e,t){s.f(i(this),e,{get:o(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";e.exports=n(28)||!n(7)(function(){var e=Math.random();__defineSetter__.call(null,e,function(){}),delete n(4)[e]})},function(e,t,n){"use strict";var r=n(8),i=n(57),o=n(21),s=n(11);n(6)&&r(r.P+n(271),"Object",{__defineSetter__:function(e,t){s.f(i(this),e,{set:o(t),enumerable:!0,configurable:!0})}})},function(e,t,n){"use strict";var r=n(8),i=n(57),o=n(16),s=n(58),a=n(50).f;n(6)&&r(r.P+n(271),"Object",{__lookupGetter__:function(e){var t,n=i(this),r=o(e,!0);do if(t=a(n,r))return t.get;while(n=s(n))}})},function(e,t,n){"use strict";var r=n(8),i=n(57),o=n(16),s=n(58),a=n(50).f;n(6)&&r(r.P+n(271),"Object",{__lookupSetter__:function(e){var t,n=i(this),r=o(e,!0);do if(t=a(n,r))return t.set;while(n=s(n))}})},function(e,t,n){var r=n(8);r(r.P+r.R,"Map",{toJSON:n(276)("Map")})},function(e,t,n){var r=n(74),i=n(277);e.exports=function(e){return function(){if(r(this)!=e)throw TypeError(e+"#toJSON isn't generic");return i(this)}}},function(e,t,n){var r=n(207);e.exports=function(e,t){var n=[];return r(e,!1,n.push,n,t),n}},function(e,t,n){var r=n(8);r(r.P+r.R,"Set",{toJSON:n(276)("Set")})},function(e,t,n){n(280)("Map")},function(e,t,n){"use strict";var r=n(8);e.exports=function(e){r(r.S,e,{of:function(){for(var e=arguments.length,t=Array(e);e--;)t[e]=arguments[e];return new this(t)}})}},function(e,t,n){n(280)("Set")},function(e,t,n){n(280)("WeakMap")},function(e,t,n){n(280)("WeakSet")},function(e,t,n){n(285)("Map")},function(e,t,n){"use strict";var r=n(8),i=n(21),o=n(20),s=n(207);e.exports=function(e){r(r.S,e,{from:function(e){var t,n,r,a,c=arguments[1];return i(this),t=void 0!==c,t&&i(c),void 0==e?new this:(n=[],t?(r=0,a=o(c,arguments[2],2),s(e,!1,function(e){n.push(a(e,r++))})):s(e,!1,n.push,n),new this(n))}})}},function(e,t,n){n(285)("Set")},function(e,t,n){n(285)("WeakMap")},function(e,t,n){n(285)("WeakSet")},function(e,t,n){var r=n(8);r(r.G,{global:n(4)})},function(e,t,n){var r=n(8);r(r.S,"System",{global:n(4)})},function(e,t,n){var r=n(8),i=n(34);r(r.S,"Error",{isError:function(e){return"Error"===i(e)}})},function(e,t,n){var r=n(8);r(r.S,"Math",{clamp:function(e,t,n){return Math.min(n,Math.max(t,e))}})},function(e,t,n){var r=n(8);r(r.S,"Math",{DEG_PER_RAD:Math.PI/180})},function(e,t,n){var r=n(8),i=180/Math.PI;r(r.S,"Math",{degrees:function(e){return e*i}})},function(e,t,n){var r=n(8),i=n(296),o=n(113);r(r.S,"Math",{fscale:function(e,t,n,r,s){return o(i(e,t,n,r,s))}})},function(e,t){e.exports=Math.scale||function(e,t,n,r,i){return 0===arguments.length||e!=e||t!=t||n!=n||r!=r||i!=i?NaN:e===1/0||e===-(1/0)?e:(e-t)*(i-r)/(n-t)+r}},function(e,t,n){var r=n(8);r(r.S,"Math",{iaddh:function(e,t,n,r){var i=e>>>0,o=t>>>0,s=n>>>0;return o+(r>>>0)+((i&s|(i|s)&~(i+s>>>0))>>>31)|0}})},function(e,t,n){var r=n(8);r(r.S,"Math",{isubh:function(e,t,n,r){var i=e>>>0,o=t>>>0,s=n>>>0;return o-(r>>>0)-((~i&s|~(i^s)&i-s>>>0)>>>31)|0}})},function(e,t,n){var r=n(8);r(r.S,"Math",{imulh:function(e,t){var n=65535,r=+e,i=+t,o=r&n,s=i&n,a=r>>16,c=i>>16,u=(a*s>>>0)+(o*s>>>16);return a*c+(u>>16)+((o*c>>>0)+(u&n)>>16)}})},function(e,t,n){var r=n(8);r(r.S,"Math",{RAD_PER_DEG:180/Math.PI})},function(e,t,n){var r=n(8),i=Math.PI/180;r(r.S,"Math",{radians:function(e){return e*i}})},function(e,t,n){var r=n(8);r(r.S,"Math",{scale:n(296)})},function(e,t,n){var r=n(8);r(r.S,"Math",{umulh:function(e,t){var n=65535,r=+e,i=+t,o=r&n,s=i&n,a=r>>>16,c=i>>>16,u=(a*s>>>0)+(o*s>>>16);return a*c+(u>>>16)+((o*c>>>0)+(u&n)>>>16)}})},function(e,t,n){var r=n(8);r(r.S,"Math",{signbit:function(e){return(e=+e)!=e?e:0==e?1/e==1/0:e>0}})},function(e,t,n){"use strict";var r=n(8),i=n(9),o=n(4),s=n(208),a=n(213);r(r.P+r.R,"Promise",{finally:function(e){var t=s(this,i.Promise||o.Promise),n="function"==typeof e;return this.then(n?function(n){return a(t,e()).then(function(){return n})}:e,n?function(n){return a(t,e()).then(function(){throw n})}:e)}})},function(e,t,n){"use strict";var r=n(8),i=n(211),o=n(212);r(r.S,"Promise",{try:function(e){var t=i.f(this),n=o(e);return(n.e?t.reject:t.resolve)(n.v),t.promise}})},function(e,t,n){var r=n(308),i=n(12),o=r.key,s=r.set;r.exp({defineMetadata:function(e,t,n,r){s(e,t,i(n),o(r))}})},function(e,t,n){var r=n(215),i=n(8),o=n(23)("metadata"),s=o.store||(o.store=new(n(220))),a=function(e,t,n){var i=s.get(e);if(!i){if(!n)return;s.set(e,i=new r)}var o=i.get(t);if(!o){if(!n)return;i.set(t,o=new r)}return o},c=function(e,t,n){var r=a(t,n,!1);return void 0!==r&&r.has(e)},u=function(e,t,n){var r=a(t,n,!1);return void 0===r?void 0:r.get(e)},l=function(e,t,n,r){a(n,r,!0).set(e,t)},h=function(e,t){var n=a(e,t,!1),r=[];return n&&n.forEach(function(e,t){r.push(t)}),r},f=function(e){return void 0===e||"symbol"==typeof e?e:String(e)},p=function(e){i(i.S,"Reflect",e)};e.exports={store:s,map:a,has:c,get:u,set:l,keys:h,key:f,exp:p}},function(e,t,n){var r=n(308),i=n(12),o=r.key,s=r.map,a=r.store;r.exp({deleteMetadata:function(e,t){var n=arguments.length<3?void 0:o(arguments[2]),r=s(i(t),n,!1);if(void 0===r||!r.delete(e))return!1;if(r.size)return!0;var c=a.get(t);return c.delete(n),!!c.size||a.delete(t)}})},function(e,t,n){var r=n(308),i=n(12),o=n(58),s=r.has,a=r.get,c=r.key,u=function(e,t,n){var r=s(e,t,n);if(r)return a(e,t,n);var i=o(t);return null!==i?u(e,i,n):void 0};r.exp({getMetadata:function(e,t){return u(e,i(t),arguments.length<3?void 0:c(arguments[2]))}})},function(e,t,n){var r=n(219),i=n(277),o=n(308),s=n(12),a=n(58),c=o.keys,u=o.key,l=function(e,t){var n=c(e,t),o=a(e);if(null===o)return n;var s=l(o,t);return s.length?n.length?i(new r(n.concat(s))):s:n};o.exp({getMetadataKeys:function(e){return l(s(e),arguments.length<2?void 0:u(arguments[1]))}})},function(e,t,n){var r=n(308),i=n(12),o=r.get,s=r.key;r.exp({getOwnMetadata:function(e,t){return o(e,i(t),arguments.length<3?void 0:s(arguments[2]))}})},function(e,t,n){var r=n(308),i=n(12),o=r.keys,s=r.key;r.exp({getOwnMetadataKeys:function(e){return o(i(e),arguments.length<2?void 0:s(arguments[1]))}})},function(e,t,n){var r=n(308),i=n(12),o=n(58),s=r.has,a=r.key,c=function(e,t,n){var r=s(e,t,n);if(r)return!0;var i=o(t);return null!==i&&c(e,i,n)};r.exp({hasMetadata:function(e,t){return c(e,i(t),arguments.length<3?void 0:a(arguments[2]))}})},function(e,t,n){var r=n(308),i=n(12),o=r.has,s=r.key;r.exp({hasOwnMetadata:function(e,t){return o(e,i(t),arguments.length<3?void 0:s(arguments[2]))}})},function(e,t,n){var r=n(308),i=n(12),o=n(21),s=r.key,a=r.set;r.exp({metadata:function(e,t){return function(n,r){a(e,t,(void 0!==r?i:o)(n),s(r))}}})},function(e,t,n){var r=n(8),i=n(210)(),o=n(4).process,s="process"==n(34)(o);r(r.G,{asap:function(e){var t=s&&o.domain;i(t?t.bind(e):e)}})},function(e,t,n){"use strict";var r=n(8),i=n(4),o=n(9),s=n(210)(),a=n(25)("observable"),c=n(21),u=n(12),l=n(206),h=n(214),f=n(10),p=n(207),d=p.RETURN,y=function(e){return null==e?void 0:c(e)},m=function(e){var t=e._c;t&&(e._c=void 0,t())},g=function(e){return void 0===e._o},v=function(e){g(e)||(e._o=void 0,m(e))},b=function(e,t){u(e),this._c=void 0,this._o=e,e=new x(this);try{var n=t(e),r=n;null!=n&&("function"==typeof n.unsubscribe?n=function(){r.unsubscribe()}:c(n),this._c=n)}catch(t){return void e.error(t)}g(this)&&m(this)};b.prototype=h({},{unsubscribe:function(){v(this)}});var x=function(e){this._s=e};x.prototype=h({},{next:function(e){var t=this._s;if(!g(t)){var n=t._o;try{var r=y(n.next);if(r)return r.call(n,e)}catch(e){try{v(t)}finally{throw e}}}},error:function(e){var t=this._s;if(g(t))throw e;var n=t._o;t._o=void 0;try{var r=y(n.error);if(!r)throw e;e=r.call(n,e)}catch(e){try{m(t)}finally{throw e}}return m(t),e},complete:function(e){var t=this._s;if(!g(t)){var n=t._o;t._o=void 0;try{var r=y(n.complete);e=r?r.call(n,e):void 0}catch(e){try{m(t)}finally{throw e}}return m(t),e}}});var _=function(e){l(this,_,"Observable","_f")._f=c(e)};h(_.prototype,{subscribe:function(e){return new b(e,this._f)},forEach:function(e){var t=this;return new(o.Promise||i.Promise)(function(n,r){c(e);var i=t.subscribe({next:function(t){try{return e(t)}catch(e){r(e),i.unsubscribe()}},error:r,complete:n})})}}),h(_,{from:function(e){var t="function"==typeof this?this:_,n=y(u(e)[a]);if(n){var r=u(n.call(e));return r.constructor===t?r:new t(function(e){return r.subscribe(e)})}return new t(function(t){var n=!1;return s(function(){if(!n){try{if(p(e,!1,function(e){if(t.next(e),n)return d})===d)return}catch(e){if(n)throw e;return void t.error(e)}t.complete()}}),function(){n=!0}})},of:function(){for(var e=0,t=arguments.length,n=Array(t);e2,i=!!r&&s.call(arguments,2);return e(r?function(){("function"==typeof t?t:Function(t)).apply(this,i)}:t,n)}};i(i.G+i.B+i.F*a,{setTimeout:c(r.setTimeout),setInterval:c(r.setInterval)})},function(e,t,n){var r=n(8),i=n(209);r(r.G+r.B,{setImmediate:i.set,clearImmediate:i.clear})},function(e,t,n){for(var r=n(194),i=n(30),o=n(18),s=n(4),a=n(10),c=n(129),u=n(25),l=u("iterator"),h=u("toStringTag"),f=c.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},d=i(p),y=0;y=0;--r){var i=this.tryEntries[r],o=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var s=v.call(i,"catchLoc"),a=v.call(i,"finallyLoc");if(s&&a){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&v.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),f(n),I}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;f(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:d(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=m),I}}}("object"==typeof t?t:"object"==typeof window?window:"object"==typeof self?self:this)}).call(t,function(){return this}())},function(e,t,n){n(324),e.exports=n(9).RegExp.escape},function(e,t,n){var r=n(8),i=n(325)(/[\\^$*+?.()|[\]{}]/g,"\\$&");r(r.S,"RegExp",{escape:function(e){return i(e)}})},function(e,t){e.exports=function(e,t){var n=t===Object(t)?function(e){return t[e]}:t;return function(t){return String(t).replace(e,n)}}},function(e,t,n){"use strict";e.exports=n(327)},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n1||t[0]instanceof c.Shortcut)){e.next=17;break}if(n=t.filter(function(e){return"ConditionalDialogOptionNode"!==e.type||o.evaluateExpressionOrLiteral(e.conditionalExpression)}),0!==n.length){e.next=4;break}return e.abrupt("return");case 4:return r=new s.OptionsResult(n.map(function(e){return e.text})),e.next=7,r;case 7:if(r.selected===-1){e.next=15;break}if(i=n[r.selected],!i.content){e.next=13;break}return e.delegateYield(this.evalNodes(i.content),"t0",11);case 11:e.next=15;break;case 13:if(!i.identifier){e.next=15;break}return e.delegateYield(this.run(i.identifier),"t1",15);case 15:e.next=18;break;case 17:return e.delegateYield(this.run(t[0].identifier),"t2",18);case 18:case"end":return e.stop()}},e,this)})},{key:"evaluateAssignment",value:function(e){var t=this.evaluateExpressionOrLiteral(e.expression),n=this.variables.get(e.variableName);if("SetVariableAddNode"===e.type)t+=n;else if("SetVariableMinusNode"===e.type)t-=n;else if("SetVariableMultiplyNode"===e.type)t*=n;else if("SetVariableDivideNode"===e.type)t/=n;else if("SetVariableEqualToNode"!==e.type)throw new Error("I don't recognize assignment type "+e.type);this.variables.set(e.variableName,t)}},{key:"evaluateConditional",value:function(e){if("IfNode"===e.type){if(this.evaluateExpressionOrLiteral(e.expression))return e.statement}else if("IfElseNode"===e.type||"ElseIfNode"===e.type){if(this.evaluateExpressionOrLiteral(e.expression))return e.statement;if(e.elseStatement)return this.evaluateConditional(e.elseStatement)}else if("ElseNode"===e.type)return e.statement;return null}},{key:"evaluateExpressionOrLiteral",value:function(e){if(e instanceof c.Expression){if("UnaryMinusExpressionNode"===e.type)return-1*this.evaluateExpressionOrLiteral(e.expression);if("ArithmeticExpressionNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression);if("ArithmeticExpressionAddNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression1)+this.evaluateExpressionOrLiteral(e.expression2);if("ArithmeticExpressionMinusNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression1)-this.evaluateExpressionOrLiteral(e.expression2);if("ArithmeticExpressionMultiplyNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression1)*this.evaluateExpressionOrLiteral(e.expression2);if("ArithmeticExpressionDivideNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression1)/this.evaluateExpressionOrLiteral(e.expression2);if("BooleanExpressionNode"===e.type)return this.evaluateExpressionOrLiteral(e.booleanExpression);if("NegatedBooleanExpressionNode"===e.type)return!this.evaluateExpressionOrLiteral(e.booleanExpression);if("BooleanOrExpressionNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression1)||this.evaluateExpressionOrLiteral(e.expression2);if("BooleanAndExpressionNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression1)&&this.evaluateExpressionOrLiteral(e.expression2);if("BooleanXorExpressionNode"===e.type)return!this.evaluateExpressionOrLiteral(e.expression1)!=!this.evaluateExpressionOrLiteral(e.expression2); +if("EqualToExpressionNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression1)===this.evaluateExpressionOrLiteral(e.expression2);if("NotEqualToExpressionNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression1)!==this.evaluateExpressionOrLiteral(e.expression2);if("GreaterThanExpressionNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression1)>this.evaluateExpressionOrLiteral(e.expression2);if("GreaterThanOrEqualToExpressionNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression1)>=this.evaluateExpressionOrLiteral(e.expression2);if("LessThanExpressionNode"===e.type)return this.evaluateExpressionOrLiteral(e.expression1) .label > .name:val("_token_stack"))',n);return i[0].body=r,escodegen.generate(n).replace(/_token_stack:\s?/,"").replace(/\\\\n/g,"\\n")}catch(e){return t}}function tokenStackLex(){var e;return e=tstack.pop()||lexer.lex()||EOF,"number"!=typeof e&&(e instanceof Array&&(tstack=e,e=tstack.pop()),e=self.symbols_[e]||e),e}function removeErrorRecovery(e){var t=e;try{var n=esprima.parse(t),r=JSONSelect.match(':has(:root > .label > .name:val("_handle_error"))',n),i=r[0].body.consequent.body[3].consequent.body;return i[0]=r[0].body.consequent.body[1],i[4].expression.arguments[1].properties.pop(),r[0].body.consequent.body=i,escodegen.generate(n).replace(/_handle_error:\s?/,"").replace(/\\\\n/g,"\\n")}catch(e){return t}}function createVariable(){var e=nextVariableId++,t="$V";do t+=variableTokens[e%variableTokensLength],e=~~(e/variableTokensLength);while(0!==e);return t}function commonjsMain(e){e[1]||(console.log("Usage: "+e[0]+" FILE"),process.exit(1));var t=__webpack_require__(336).readFileSync(__webpack_require__(337).normalize(e[1]),"utf8");return exports.parser.parse(t)}function printAction(e,t){var n=1==e[0]?"shift token (then go to state "+e[1]+")":2==e[0]?"reduce by rule: "+t.productions[e[1]]:"accept";return n}function traceParseError(e,t){this.trace(e)}function parseError(e,t){if(!t.recoverable){var n=new Error(e);throw n.hash=t,n}this.trace(e)}var Nonterminal=typal.construct({constructor:function(e){this.symbol=e,this.productions=new Set,this.first=[],this.follows=[],this.nullable=!1},toString:function(){var e=this.symbol+"\n";return e+=this.nullable?"nullable":"not nullable",e+="\nFirsts: "+this.first.join(", "),e+="\nFollows: "+this.first.join(", "),e+="\nProductions:\n "+this.productions.join("\n ")}}),Production=typal.construct({constructor:function(e,t,n){this.symbol=e,this.handle=t,this.nullable=!1,this.id=n,this.first=[],this.precedence=0},toString:function(){return this.symbol+" -> "+this.handle.join(" ")}}),generator=typal.beget();generator.constructor=function(e,t){"string"==typeof e&&(e=ebnfParser.parse(e));var n=typal.mix.call({},e.options,t);this.terms={},this.operators={},this.productions=[],this.conflicts=0,this.resolutions=[],this.options=n,this.parseParams=e.parseParams,this.yy={},e.actionInclude&&("function"==typeof e.actionInclude&&(e.actionInclude=String(e.actionInclude).replace(/^\s*function \(\) \{/,"").replace(/\}\s*$/,"")),this.actionInclude=e.actionInclude),this.moduleInclude=e.moduleInclude||"",this.DEBUG=n.debug||!1,this.DEBUG&&this.mix(generatorDebug),this.processGrammar(e),e.lex&&(this.lexer=new Lexer(e.lex,null,this.terminals_))},generator.processGrammar=function(e){var t=e.bnf,n=e.tokens,r=this.nonterminals={},i=this.productions,o=this;!e.bnf&&e.ebnf&&(t=e.bnf=ebnfParser.transform(e.ebnf)),n&&(n="string"==typeof n?n.trim().split(" "):n.slice(0));var s=this.symbols=[],a=this.operators=processOperators(e.operators);this.buildProductions(t,i,r,s,a),n&&this.terminals.length!==n.length&&(o.trace("Warning: declared tokens differ from tokens found in rules."),o.trace(this.terminals),o.trace(n)),this.augmentGrammar(e)},generator.augmentGrammar=function(e){if(0===this.productions.length)throw new Error("Grammar error: must have at least one rule.");if(this.startSymbol=e.start||e.startSymbol||this.productions[0].symbol,!this.nonterminals[this.startSymbol])throw new Error("Grammar error: startSymbol must be a non-terminal found in your grammar.");this.EOF="$end";var t=new Production("$accept",[this.startSymbol,"$end"],0);this.productions.unshift(t),this.symbols.unshift("$accept",this.EOF),this.symbols_.$accept=0,this.symbols_[this.EOF]=1,this.terminals.unshift(this.EOF),this.nonterminals.$accept=new Nonterminal("$accept"),this.nonterminals.$accept.productions.push(t),this.nonterminals[this.startSymbol].follows.push(this.EOF)},generator.buildProductions=function(e,t,n,r,i){function o(e){e&&!p[e]&&(p[e]=++f,r.push(e))}function s(e){var r,s,a;if(e.constructor===Array){for(s="string"==typeof e[0]?e[0].trim().split(" "):e[0].slice(0),a=0;a=0;a--)!(r.handle[a]in n)&&r.handle[a]in i&&(r.precedence=i[r.handle[a]].precedence);t.push(r),h.push([p[r.symbol],""===r.handle[0]?0:r.handle.length]),n[c].productions.push(r)}var a,c,u=["/* this == yyval */",this.actionInclude||"","var $0 = $$.length - 1;","switch (yystate) {"],l={},h=[0],f=1,p={},d=!1;o("error");for(c in e)e.hasOwnProperty(c)&&(o(c),n[c]=new Nonterminal(c),a="string"==typeof e[c]?e[c].split(/\s*\|\s*/g):e[c].slice(0),a.forEach(s));for(var y in l)u.push(l[y].join(" "),y,"break;");var m=[],g={};each(p,function(e,t){n[t]||(m.push(t),g[e]=t)}),this.hasErrorRecovery=d,this.terminals=m,this.terminals_=g,this.symbols_=p,this.productions_=h,u.push("}"),u=u.join("\n").replace(/YYABORT/g,"return false").replace(/YYACCEPT/g,"return true");var v="yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */";this.parseParams&&(v+=", "+this.parseParams.join(", ")),this.performAction="function anonymous("+v+") {\n"+u+"\n}"},generator.createParser=function(){throw new Error("Calling abstract method.")},generator.trace=function(){},generator.warn=function(){var e=Array.prototype.slice.call(arguments,0);Jison.print.call(null,e.join(""))},generator.error=function(e){throw new Error(e)};var generatorDebug={trace:function(){Jison.print.apply(null,arguments)},beforeprocessGrammar:function(){this.trace("Processing grammar.")},afteraugmentGrammar:function(){var e=this.trace;each(this.symbols,function(t,n){e(t+"("+n+")")})}},lookaheadMixin={};lookaheadMixin.computeLookaheads=function(){this.DEBUG&&this.mix(lookaheadDebug),this.computeLookaheads=function(){},this.nullableSets(),this.firstSets(),this.followSets()},lookaheadMixin.followSets=function(){for(var e=this.productions,t=this.nonterminals,n=this,r=!0;r;)r=!1,e.forEach(function(e,i){for(var o,s,a,c=!!n.go_,u=[],l=0;a=e.handle[l];++l)if(t[a]){c&&(o=n.go_(e.symbol,e.handle.slice(0,l)));var h=!c||o===parseInt(n.nterms_[a],10);if(l===e.handle.length+1&&h)u=t[e.symbol].follows;else{var f=e.handle.slice(l+1);u=n.first(f),n.nullable(f)&&h&&u.push.apply(u,t[e.symbol].follows)}s=t[a].follows.length,Set.union(t[a].follows,u),s!==t[a].follows.length&&(r=!0)}})},lookaheadMixin.first=function(e){if(""===e)return[];if(e instanceof Array){for(var t,n=[],r=0;(t=e[r])&&(this.nonterminals[t]?Set.union(n,this.nonterminals[t].first):n.indexOf(t)===-1&&n.push(t),this.nullable(t));++r);return n}return this.nonterminals[e]?this.nonterminals[e].first:[e]},lookaheadMixin.firstSets=function(){for(var e,t,n=this.productions,r=this.nonterminals,i=this,o=!0;o;){o=!1,n.forEach(function(e,t){var n=i.first(e.handle);n.length!==e.first.length&&(e.first=n,o=!0)});for(e in r)t=[],r[e].productions.forEach(function(e){Set.union(t,e.first)}),t.length!==r[e].first.length&&(r[e].first=t,o=!0)}},lookaheadMixin.nullableSets=function(){for(var e=(this.firsts={},this.nonterminals),t=this,n=!0;n;){n=!1,this.productions.forEach(function(e,r){if(!e.nullable){for(var i,o=0,s=0;i=e.handle[o];++o)t.nullable(i)&&s++;s===o&&(e.nullable=n=!0)}});for(var r in e)if(!this.nullable(r))for(var i,o=0;i=e[r].productions.item(o);o++)i.nullable&&(e[r].nullable=n=!0)}},lookaheadMixin.nullable=function(e){if(""===e)return!0;if(e instanceof Array){for(var t,n=0;t=e[n];++n)if(!this.nullable(t))return!1;return!0}return!!this.nonterminals[e]&&this.nonterminals[e].nullable};var lookaheadDebug={beforenullableSets:function(){this.trace("Computing Nullable sets.")},beforefirstSets:function(){this.trace("Computing First sets.")},beforefollowSets:function(){this.trace("Computing Follow sets.")},afterfollowSets:function(){var e=this.trace;each(this.nonterminals,function(t,n){e(t,"\n")})}},lrGeneratorMixin={};lrGeneratorMixin.buildTable=function(){this.DEBUG&&this.mix(lrGeneratorDebug),this.states=this.canonicalCollection(),this.table=this.parseTable(this.states),this.defaultActions=findDefaults(this.table)},lrGeneratorMixin.Item=typal.construct({constructor:function(e,t,n,r){this.production=e,this.dotPosition=t||0,this.follows=n||[],this.predecessor=r,this.id=parseInt(e.id+"a"+this.dotPosition,36),this.markedSymbol=this.production.handle[this.dotPosition]},remainingHandle:function(){return this.production.handle.slice(this.dotPosition+1)},eq:function(e){return e.id===this.id},handleToString:function(){var e=this.production.handle.slice(0);return e[this.dotPosition]="."+(e[this.dotPosition]||""),e.join(" ")},toString:function(){var e=this.production.handle.slice(0);return e[this.dotPosition]="."+(e[this.dotPosition]||""),this.production.symbol+" -> "+e.join(" ")+(0===this.follows.length?"":" #lookaheads= "+this.follows.join(" "))}}),lrGeneratorMixin.ItemSet=Set.prototype.construct({afterconstructor:function(){this.reductions=[],this.goes={},this.edges={},this.shifts=!1,this.inadequate=!1,this.hash_={};for(var e=this._items.length-1;e>=0;e--)this.hash_[this._items[e].id]=!0},concat:function(e){for(var t=e._items||e,n=t.length-1;n>=0;n--)this.hash_[t[n].id]=!0;return this._items.push.apply(this._items,t),this},push:function(e){return this.hash_[e.id]=!0,this._items.push(e)},contains:function(e){return this.hash_[e.id]},valueOf:function(){var e=this._items.map(function(e){return e.id}).sort().join("|");return this.valueOf=function(){return e},e}}),lrGeneratorMixin.closureOperation=function(e){var t,n=new this.ItemSet,r=this,i=e,o={};do t=new Set,n.concat(i),i.forEach(function(e){var i=e.markedSymbol;i&&r.nonterminals[i]?o[i]||(r.nonterminals[i].productions.forEach(function(e){var i=new r.Item(e,0);n.contains(i)||t.push(i)}),o[i]=!0):i?(n.shifts=!0,n.inadequate=n.reductions.length>0):(n.reductions.push(e),n.inadequate=n.reductions.length>1||n.shifts)}),i=t;while(!t.isEmpty());return n},lrGeneratorMixin.gotoOperation=function(e,t){var n=new this.ItemSet,r=this;return e.forEach(function(e,i){e.markedSymbol===t&&n.push(new r.Item(e.production,e.dotPosition+1,e.follows,i))}),n.isEmpty()?n:this.closureOperation(n)},lrGeneratorMixin.canonicalCollection=function(){var e,t=new this.Item(this.productions[0],0,[this.EOF]),n=this.closureOperation(new this.ItemSet(t)),r=new Set(n),i=0,o=this;for(r.has={},r.has[n]=0;i!==r.size();)e=r.item(i),i++,e.forEach(function(t){t.markedSymbol&&t.markedSymbol!==o.EOF&&o.canonicalCollectionInsert(t.markedSymbol,e,r,i-1)});return r},lrGeneratorMixin.canonicalCollectionInsert=function(e,t,n,r){var i=this.gotoOperation(t,e);if(i.predecessors||(i.predecessors={}),!i.isEmpty()){var o=i.valueOf(),s=n.has[o];s===-1||"undefined"==typeof s?(n.has[o]=n.size(),t.edges[e]=n.size(),n.push(i),i.predecessors[e]=[r]):(t.edges[e]=s,n.item(s).predecessors[e].push(r))}};var NONASSOC=0;lrGeneratorMixin.parseTable=function(e){var t=[],n=this.nonterminals,r=this.operators,i={},o=this,s=1,a=2,c=3;return e.forEach(function(e,u){var l,h,f=t[u]={};for(h in e.edges)e.forEach(function(t,r){if(t.markedSymbol==h){var i=e.edges[h];n[h]?f[o.symbols_[h]]=i:f[o.symbols_[h]]=[s,i]}});e.forEach(function(e,t){e.markedSymbol==o.EOF&&(f[o.symbols_[o.EOF]]=[c])});var p=!o.lookAheads&&o.terminals;e.reductions.forEach(function(t,n){var s=p||o.lookAheads(e,t);s.forEach(function(e){l=f[o.symbols_[e]];var n=r[e];if(l||l&&l.length){var s=resolveConflict(t.production,n,[a,t.production.id],l[0]instanceof Array?l[0]:l);o.resolutions.push([u,e,s]),s.bydefault?(o.conflicts++,o.DEBUG||(o.warn("Conflict in grammar: multiple actions possible when lookahead token is ",e," in state ",u,"\n- ",printAction(s.r,o),"\n- ",printAction(s.s,o)),i[u]=!0),o.options.noDefaultResolve&&(l[0]instanceof Array||(l=[l]),l.push(s.r))):l=s.action}else l=[a,t.production.id];l&&l.length?f[o.symbols_[e]]=l:l===NONASSOC&&(f[o.symbols_[e]]=void 0)})})}),!o.DEBUG&&o.conflicts>0&&(o.warn("\nStates with conflicts:"),each(i,function(t,n){o.warn("State "+n),o.warn(" ",e.item(n).join("\n "))})),t},lrGeneratorMixin.generate=function(e){e=typal.mix.call({},this.options,e);var t="";switch(e.moduleName&&e.moduleName.match(/^[A-Za-z_$][A-Za-z0-9_$]*$/)||(e.moduleName="parser"),e.moduleType){case"js":t=this.generateModule(e);break;case"amd":t=this.generateAMDModule(e);break;default:t=this.generateCommonJSModule(e)}return t},lrGeneratorMixin.generateAMDModule=function(e){e=typal.mix.call({},this.options,e);var t=this.generateModule_(),n="\n\ndefine(function(require){\n"+t.commonCode+"\nvar parser = "+t.moduleCode+"\n"+this.moduleInclude+(this.lexer&&this.lexer.generateModule?"\n"+this.lexer.generateModule()+"\nparser.lexer = lexer;":"")+"\nreturn parser;\n});";return n},lrGeneratorMixin.generateCommonJSModule=function(e){e=typal.mix.call({},this.options,e);var t=e.moduleName||"parser",n=this.generateModule(e)+"\n\n\nif (typeof require !== 'undefined' && typeof exports !== 'undefined') {\nexports.parser = "+t+";\nexports.Parser = "+t+".Parser;\nexports.parse = function () { return "+t+".parse.apply("+t+", arguments); };\nexports.main = "+String(e.moduleMain||commonjsMain)+";\nif (typeof module !== 'undefined' && require.main === module) {\n exports.main(process.argv.slice(1));\n}\n}";return n},lrGeneratorMixin.generateModule=function(e){e=typal.mix.call({},this.options,e);var t=e.moduleName||"parser",n="/* parser generated by jison "+version+" */\n/*\n Returns a Parser object of the following structure:\n\n Parser: {\n yy: {}\n }\n\n Parser.prototype: {\n yy: {},\n trace: function(),\n symbols_: {associative list: name ==> number},\n terminals_: {associative list: number ==> name},\n productions_: [...],\n performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),\n table: [...],\n defaultActions: {...},\n parseError: function(str, hash),\n parse: function(input),\n\n lexer: {\n EOF: 1,\n parseError: function(str, hash),\n setInput: function(input),\n input: function(),\n unput: function(str),\n more: function(),\n less: function(n),\n pastInput: function(),\n upcomingInput: function(),\n showPosition: function(),\n test_match: function(regex_match_array, rule_index),\n next: function(),\n lex: function(),\n begin: function(condition),\n popState: function(),\n _currentRules: function(),\n topState: function(),\n pushState: function(condition),\n\n options: {\n ranges: boolean (optional: true ==> token location info will include a .range[] member)\n flex: boolean (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)\n backtrack_lexer: boolean (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)\n },\n\n performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),\n rules: [...],\n conditions: {associative list: name ==> set},\n }\n }\n\n\n token location info (@$, _$, etc.): {\n first_line: n,\n last_line: n,\n first_column: n,\n last_column: n,\n range: [start_number, end_number] (where the numbers are indexes into the input string, regular zero-based)\n }\n\n\n the parseError function receives a 'hash' object with these members for lexer and parser errors: {\n text: (matched text)\n token: (the produced terminal token, if any)\n line: (yylineno)\n }\n while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {\n loc: (yylloc)\n expected: (string describing the set of expected tokens)\n recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)\n }\n*/\n";return n+=(t.match(/\./)?t:"var "+t)+" = "+this.generateModuleExpr()},lrGeneratorMixin.generateModuleExpr=function(){var e="",t=this.generateModule_();return e+="(function(){\n",e+=t.commonCode,e+="\nvar parser = "+t.moduleCode,e+="\n"+this.moduleInclude,this.lexer&&this.lexer.generateModule&&(e+=this.lexer.generateModule(),e+="\nparser.lexer = lexer;"),e+="\nfunction Parser () {\n this.yy = {};\n}\nParser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();"},lrGeneratorMixin.generateModule_=function(){var e=String(parser.parse);this.hasErrorRecovery||(e=removeErrorRecovery(e)),this.options["token-stack"]&&(e=addTokenStack(e)),nextVariableId=0;var t=this.generateTableCode(this.table),n=t.commonCode,r="{";return r+=["trace: "+String(this.trace||parser.trace),"yy: {}","symbols_: "+JSON.stringify(this.symbols_),"terminals_: "+JSON.stringify(this.terminals_).replace(/"([0-9]+)":/g,"$1:"),"productions_: "+JSON.stringify(this.productions_),"performAction: "+String(this.performAction),"table: "+t.moduleCode,"defaultActions: "+JSON.stringify(this.defaultActions).replace(/"([0-9]+)":/g,"$1:"),"parseError: "+String(this.parseError||(this.hasErrorRecovery?traceParseError:parser.parseError)),"parse: "+e].join(",\n"),r+="};",{commonCode:n,moduleCode:r}},lrGeneratorMixin.generateTableCode=function(e){var t=JSON.stringify(e),n=[createObjectCode];t=t.replace(/"([0-9]+)"(?=:)/g,"$1"),t=t.replace(/\{\d+:[^\}]+,\d+:[^\}]+\}/g,function(e){for(var t,n,r,i,o,s={},a=0,c=[],u=/(\d+):([^:]+)(?=,\d+:|\})/g;o=u.exec(e);)r=o[1],t=o[2],i=1,t in s?i=s[t].push(r):s[t]=[r],i>a&&(a=i,n=t);if(a>1){for(t in s)if(t!==n)for(var l=s[t],h=0,f=l.length;h0&&(this.resolutions.forEach(function(t,n){t[2].bydefault&&e.warn("Conflict at state: ",t[0],", token: ",t[1],"\n ",printAction(t[2].r,e),"\n ",printAction(t[2].s,e))}),this.trace("\n"+this.conflicts+" Conflict(s) found in grammar.")),this.trace("Done.")},aftercanonicalCollection:function(e){var t=this.trace;t("\nItem sets\n------"),e.forEach(function(e,n){t("\nitem set",n,"\n"+e.join("\n"),"\ntransitions -> ",JSON.stringify(e.edges))})}},parser=typal.beget();lrGeneratorMixin.createParser=function createParser(){function bind(e){return function(){return self.lexer=p.lexer,self[e].apply(self,arguments)}}var p=eval(this.generateModuleExpr());p.productions=this.productions;var self=this;return p.lexer=this.lexer,p.generate=bind("generate"),p.generateAMDModule=bind("generateAMDModule"),p.generateModule=bind("generateModule"),p.generateCommonJSModule=bind("generateCommonJSModule"),p},parser.trace=generator.trace,parser.warn=generator.warn,parser.error=generator.error,parser.parseError=lrGeneratorMixin.parseError=parseError,parser.parse=function(e){function t(e){i.length=i.length-2*e,o.length=o.length-e,s.length=s.length-e}function n(e){for(var t=i.length-1,n=0;;){if(f.toString()in a[e])return n;if(0===e||t<2)return!1;t-=2,e=i[t],++n}}var r=this,i=[0],o=[null],s=[],a=this.table,c="",u=0,l=0,h=0,f=2,p=1,d=s.slice.call(arguments,1),y=Object.create(this.lexer),m={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(m.yy[g]=this.yy[g]);y.setInput(e,m.yy),m.yy.lexer=y,m.yy.parser=this,"undefined"==typeof y.yylloc&&(y.yylloc={});var v=y.yylloc;s.push(v);var b=y.options&&y.options.ranges;"function"==typeof m.yy.parseError?this.parseError=m.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var x,_,S,w,E,k,A,C,O,I=function(){var e;return e=y.lex()||p,"number"!=typeof e&&(e=r.symbols_[e]||e),e},N={};;){if(S=i[i.length-1],this.defaultActions[S]?w=this.defaultActions[S]:(null!==x&&"undefined"!=typeof x||(x=I()),w=a[S]&&a[S][x]),"undefined"==typeof w||!w.length||!w[0]){var L,P="";if(h)_!==p&&(L=n(S));else{L=n(S),O=[];for(k in a[S])this.terminals_[k]&&k>f&&O.push("'"+this.terminals_[k]+"'");P=y.showPosition?"Parse error on line "+(u+1)+":\n"+y.showPosition()+"\nExpecting "+O.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(u+1)+": Unexpected "+(x==p?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(P,{text:y.match,token:this.terminals_[x]||x,line:y.yylineno,loc:v,expected:O,recoverable:L!==!1})}if(3==h){if(x===p||_===p)throw new Error(P||"Parsing halted while starting to recover from another error.");l=y.yyleng,c=y.yytext,u=y.yylineno,v=y.yylloc,x=I()}if(L===!1)throw new Error(P||"Parsing halted. No suitable error recovery rule available.");t(L),_=x==f?null:x,x=f,S=i[i.length-1],w=a[S]&&a[S][f],h=3}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+S+", token: "+x);switch(w[0]){case 1:i.push(x),o.push(y.yytext),s.push(y.yylloc),i.push(w[1]),x=null,_?(x=_,_=null):(l=y.yyleng,c=y.yytext,u=y.yylineno,v=y.yylloc,h>0&&h--);break;case 2:if(A=this.productions_[w[1]][1],N.$=o[o.length-A],N._$={first_line:s[s.length-(A||1)].first_line,last_line:s[s.length-1].last_line,first_column:s[s.length-(A||1)].first_column,last_column:s[s.length-1].last_column},b&&(N._$.range=[s[s.length-(A||1)].range[0],s[s.length-1].range[1]]),E=this.performAction.apply(N,[c,l,u,m.yy,w[1],o,s].concat(d)),"undefined"!=typeof E)return E;A&&(i=i.slice(0,-1*A*2),o=o.slice(0,-1*A),s=s.slice(0,-1*A)),i.push(this.productions_[w[1]][0]),o.push(N.$),s.push(N._$),C=a[i[i.length-2]][i[i.length-1]],i.push(C);break;case 3:return!0}}return!0},parser.init=function(e){this.table=e.table,this.defaultActions=e.defaultActions,this.performAction=e.performAction,this.productions_=e.productions_,this.symbols_=e.symbols_,this.terminals_=e.terminals_};var lr0=generator.beget(lookaheadMixin,lrGeneratorMixin,{ +type:"LR(0)",afterconstructor:function(){this.buildTable()}}),LR0Generator=exports.LR0Generator=lr0.construct(),lalr=generator.beget(lookaheadMixin,lrGeneratorMixin,{type:"LALR(1)",afterconstructor:function(e,t){this.DEBUG&&this.mix(lrGeneratorDebug,lalrGeneratorDebug),t=t||{},this.states=this.canonicalCollection(),this.terms_={};var n=this.newg=typal.beget(lookaheadMixin,{oldg:this,trace:this.trace,nterms_:{},DEBUG:!1,go_:function(e,t){return e=e.split(":")[0],t=t.map(function(e){return e.slice(e.indexOf(":")+1)}),this.oldg.go(e,t)}});n.nonterminals={},n.productions=[],this.inadequateStates=[],this.onDemandLookahead=t.onDemandLookahead||!1,this.buildNewGrammar(),n.computeLookaheads(),this.unionLookaheads(),this.table=this.parseTable(this.states),this.defaultActions=findDefaults(this.table)},lookAheads:function(e,t){return this.onDemandLookahead&&!e.inadequate?this.terminals:t.follows},go:function(e,t){for(var n=parseInt(e,10),r=0;r1)for(var n=1;n=0;--r)n[e[r]]=!0;for(var i=t.length-1;i>=0;--i)n[t[i]]||e.push(t[i]);return e}});t.Set=o},function(module,exports,__webpack_require__){"use strict";function prepareRules(e,t,n,r,i,o){function s(e,t){return"return "+(r[t]||"'"+t+"'")}var a,c,u,l,h,f=[];for(t&&(t=prepareMacros(t)),n.push("switch($avoiding_name_collisions) {"),c=0;c20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),r=e[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],n=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var o in i)this[o]=i[o];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r;this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),o=0;ot[0].length)){if(t=n,r=o,this.options.backtrack_lexer){if(e=this.test_match(n,i[o]),e!==!1)return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?(e=this.test_match(t,i[r]),e!==!1&&e):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){var e=this.conditionStack.length-1;return e>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length}},RegExpLexer.generate=generate,module.exports=RegExpLexer},function(e,t,n){(function(e,r){var i=function(){function e(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1").replace(/\\\\u([a-fA-F0-9]{4})/g,"\\u$1")}function t(t){return t=t.replace(/\\\\/g,"\\"),t=e(t)}function n(){this.yy={}}var r={trace:function(){},yy:{},symbols_:{error:2,lex:3,definitions:4,"%%":5,rules:6,epilogue:7,EOF:8,CODE:9,definition:10,ACTION:11,NAME:12,regex:13,START_INC:14,names_inclusive:15,START_EXC:16,names_exclusive:17,START_COND:18,rule:19,start_conditions:20,action:21,"{":22,action_body:23,"}":24,action_comments_body:25,ACTION_BODY:26,"<":27,name_list:28,">":29,"*":30,",":31,regex_list:32,"|":33,regex_concat:34,regex_base:35,"(":36,")":37,SPECIAL_GROUP:38,"+":39,"?":40,"/":41,"/!":42,name_expansion:43,range_regex:44,any_group_regex:45,".":46,"^":47,$:48,string:49,escape_char:50,NAME_BRACE:51,ANY_GROUP_REGEX:52,ESCAPE_CHAR:53,RANGE_REGEX:54,STRING_LIT:55,CHARACTER_LIT:56,$accept:0,$end:1},terminals_:{2:"error",5:"%%",8:"EOF",9:"CODE",11:"ACTION",12:"NAME",14:"START_INC",16:"START_EXC",18:"START_COND",22:"{",24:"}",26:"ACTION_BODY",27:"<",29:">",30:"*",31:",",33:"|",36:"(",37:")",38:"SPECIAL_GROUP",39:"+",40:"?",41:"/",42:"/!",46:".",47:"^",48:"$",51:"NAME_BRACE",52:"ANY_GROUP_REGEX",53:"ESCAPE_CHAR",54:"RANGE_REGEX",55:"STRING_LIT",56:"CHARACTER_LIT"},productions_:[0,[3,4],[7,1],[7,2],[7,3],[4,2],[4,2],[4,0],[10,2],[10,2],[10,2],[15,1],[15,2],[17,1],[17,2],[6,2],[6,1],[19,3],[21,3],[21,1],[23,0],[23,1],[23,5],[23,4],[25,1],[25,2],[20,3],[20,3],[20,0],[28,1],[28,3],[13,1],[32,3],[32,2],[32,1],[32,0],[34,2],[34,1],[35,3],[35,3],[35,2],[35,2],[35,2],[35,2],[35,2],[35,1],[35,2],[35,1],[35,1],[35,1],[35,1],[35,1],[35,1],[43,1],[45,1],[50,1],[44,1],[49,1],[49,1]],performAction:function(e,n,r,i,o,s,a){var c=s.length-1;switch(o){case 1:return this.$={rules:s[c-1]},s[c-3][0]&&(this.$.macros=s[c-3][0]),s[c-3][1]&&(this.$.startConditions=s[c-3][1]),s[c]&&(this.$.moduleInclude=s[c]),i.options&&(this.$.options=i.options),i.actionInclude&&(this.$.actionInclude=i.actionInclude),delete i.options,delete i.actionInclude,this.$;case 2:this.$=null;break;case 3:this.$=null;break;case 4:this.$=s[c-1];break;case 5:if(this.$=s[c],"length"in s[c-1])this.$[0]=this.$[0]||{},this.$[0][s[c-1][0]]=s[c-1][1];else{this.$[1]=this.$[1]||{};for(var u in s[c-1])this.$[1][u]=s[c-1][u]}break;case 6:i.actionInclude+=s[c-1],this.$=s[c];break;case 7:i.actionInclude="",this.$=[null,null];break;case 8:this.$=[s[c-1],s[c]];break;case 9:this.$=s[c];break;case 10:this.$=s[c];break;case 11:this.$={},this.$[s[c]]=0;break;case 12:this.$=s[c-1],this.$[s[c]]=0;break;case 13:this.$={},this.$[s[c]]=1;break;case 14:this.$=s[c-1],this.$[s[c]]=1;break;case 15:this.$=s[c-1],this.$.push(s[c]);break;case 16:this.$=[s[c]];break;case 17:this.$=s[c-2]?[s[c-2],s[c-1],s[c]]:[s[c-1],s[c]];break;case 18:this.$=s[c-1];break;case 19:this.$=s[c];break;case 20:this.$="";break;case 21:this.$=s[c];break;case 22:this.$=s[c-4]+s[c-3]+s[c-2]+s[c-1]+s[c];break;case 23:this.$=s[c-3]+s[c-2]+s[c-1]+s[c];break;case 24:this.$=e;break;case 25:this.$=s[c-1]+s[c];break;case 26:this.$=s[c-1];break;case 27:this.$=["*"];break;case 29:this.$=[s[c]];break;case 30:this.$=s[c-2],this.$.push(s[c]);break;case 31:this.$=s[c],i.options&&i.options.flex||!this.$.match(/[\w\d]$/)||this.$.match(/\\(r|f|n|t|v|s|b|c[A-Z]|x[0-9A-F]{2}|u[a-fA-F0-9]{4}|[0-7]{1,3})$/)||(this.$+="\\b");break;case 32:this.$=s[c-2]+"|"+s[c];break;case 33:this.$=s[c-1]+"|";break;case 35:this.$="";break;case 36:this.$=s[c-1]+s[c];break;case 38:this.$="("+s[c-1]+")";break;case 39:this.$=s[c-2]+s[c-1]+")";break;case 40:this.$=s[c-1]+"+";break;case 41:this.$=s[c-1]+"*";break;case 42:this.$=s[c-1]+"?";break;case 43:this.$="(?="+s[c]+")";break;case 44:this.$="(?!"+s[c]+")";break;case 46:this.$=s[c-1]+s[c];break;case 48:this.$=".";break;case 49:this.$="^";break;case 50:this.$="$";break;case 54:this.$=e;break;case 55:this.$=e;break;case 56:this.$=e;break;case 57:this.$=t(e.substr(1,e.length-2))}},table:[{3:1,4:2,5:[2,7],10:3,11:[1,4],12:[1,5],14:[1,6],16:[1,7]},{1:[3]},{5:[1,8]},{4:9,5:[2,7],10:3,11:[1,4],12:[1,5],14:[1,6],16:[1,7]},{4:10,5:[2,7],10:3,11:[1,4],12:[1,5],14:[1,6],16:[1,7]},{5:[2,35],11:[2,35],12:[2,35],13:11,14:[2,35],16:[2,35],32:12,33:[2,35],34:13,35:14,36:[1,15],38:[1,16],41:[1,17],42:[1,18],43:19,45:20,46:[1,21],47:[1,22],48:[1,23],49:24,50:25,51:[1,26],52:[1,27],53:[1,30],55:[1,28],56:[1,29]},{15:31,18:[1,32]},{17:33,18:[1,34]},{6:35,11:[2,28],19:36,20:37,22:[2,28],27:[1,38],33:[2,28],36:[2,28],38:[2,28],41:[2,28],42:[2,28],46:[2,28],47:[2,28],48:[2,28],51:[2,28],52:[2,28],53:[2,28],55:[2,28],56:[2,28]},{5:[2,5]},{5:[2,6]},{5:[2,8],11:[2,8],12:[2,8],14:[2,8],16:[2,8]},{5:[2,31],11:[2,31],12:[2,31],14:[2,31],16:[2,31],22:[2,31],33:[1,39]},{5:[2,34],11:[2,34],12:[2,34],14:[2,34],16:[2,34],22:[2,34],33:[2,34],35:40,36:[1,15],37:[2,34],38:[1,16],41:[1,17],42:[1,18],43:19,45:20,46:[1,21],47:[1,22],48:[1,23],49:24,50:25,51:[1,26],52:[1,27],53:[1,30],55:[1,28],56:[1,29]},{5:[2,37],11:[2,37],12:[2,37],14:[2,37],16:[2,37],22:[2,37],30:[1,42],33:[2,37],36:[2,37],37:[2,37],38:[2,37],39:[1,41],40:[1,43],41:[2,37],42:[2,37],44:44,46:[2,37],47:[2,37],48:[2,37],51:[2,37],52:[2,37],53:[2,37],54:[1,45],55:[2,37],56:[2,37]},{32:46,33:[2,35],34:13,35:14,36:[1,15],37:[2,35],38:[1,16],41:[1,17],42:[1,18],43:19,45:20,46:[1,21],47:[1,22],48:[1,23],49:24,50:25,51:[1,26],52:[1,27],53:[1,30],55:[1,28],56:[1,29]},{32:47,33:[2,35],34:13,35:14,36:[1,15],37:[2,35],38:[1,16],41:[1,17],42:[1,18],43:19,45:20,46:[1,21],47:[1,22],48:[1,23],49:24,50:25,51:[1,26],52:[1,27],53:[1,30],55:[1,28],56:[1,29]},{35:48,36:[1,15],38:[1,16],41:[1,17],42:[1,18],43:19,45:20,46:[1,21],47:[1,22],48:[1,23],49:24,50:25,51:[1,26],52:[1,27],53:[1,30],55:[1,28],56:[1,29]},{35:49,36:[1,15],38:[1,16],41:[1,17],42:[1,18],43:19,45:20,46:[1,21],47:[1,22],48:[1,23],49:24,50:25,51:[1,26],52:[1,27],53:[1,30],55:[1,28],56:[1,29]},{5:[2,45],11:[2,45],12:[2,45],14:[2,45],16:[2,45],22:[2,45],30:[2,45],33:[2,45],36:[2,45],37:[2,45],38:[2,45],39:[2,45],40:[2,45],41:[2,45],42:[2,45],46:[2,45],47:[2,45],48:[2,45],51:[2,45],52:[2,45],53:[2,45],54:[2,45],55:[2,45],56:[2,45]},{5:[2,47],11:[2,47],12:[2,47],14:[2,47],16:[2,47],22:[2,47],30:[2,47],33:[2,47],36:[2,47],37:[2,47],38:[2,47],39:[2,47],40:[2,47],41:[2,47],42:[2,47],46:[2,47],47:[2,47],48:[2,47],51:[2,47],52:[2,47],53:[2,47],54:[2,47],55:[2,47],56:[2,47]},{5:[2,48],11:[2,48],12:[2,48],14:[2,48],16:[2,48],22:[2,48],30:[2,48],33:[2,48],36:[2,48],37:[2,48],38:[2,48],39:[2,48],40:[2,48],41:[2,48],42:[2,48],46:[2,48],47:[2,48],48:[2,48],51:[2,48],52:[2,48],53:[2,48],54:[2,48],55:[2,48],56:[2,48]},{5:[2,49],11:[2,49],12:[2,49],14:[2,49],16:[2,49],22:[2,49],30:[2,49],33:[2,49],36:[2,49],37:[2,49],38:[2,49],39:[2,49],40:[2,49],41:[2,49],42:[2,49],46:[2,49],47:[2,49],48:[2,49],51:[2,49],52:[2,49],53:[2,49],54:[2,49],55:[2,49],56:[2,49]},{5:[2,50],11:[2,50],12:[2,50],14:[2,50],16:[2,50],22:[2,50],30:[2,50],33:[2,50],36:[2,50],37:[2,50],38:[2,50],39:[2,50],40:[2,50],41:[2,50],42:[2,50],46:[2,50],47:[2,50],48:[2,50],51:[2,50],52:[2,50],53:[2,50],54:[2,50],55:[2,50],56:[2,50]},{5:[2,51],11:[2,51],12:[2,51],14:[2,51],16:[2,51],22:[2,51],30:[2,51],33:[2,51],36:[2,51],37:[2,51],38:[2,51],39:[2,51],40:[2,51],41:[2,51],42:[2,51],46:[2,51],47:[2,51],48:[2,51],51:[2,51],52:[2,51],53:[2,51],54:[2,51],55:[2,51],56:[2,51]},{5:[2,52],11:[2,52],12:[2,52],14:[2,52],16:[2,52],22:[2,52],30:[2,52],33:[2,52],36:[2,52],37:[2,52],38:[2,52],39:[2,52],40:[2,52],41:[2,52],42:[2,52],46:[2,52],47:[2,52],48:[2,52],51:[2,52],52:[2,52],53:[2,52],54:[2,52],55:[2,52],56:[2,52]},{5:[2,53],11:[2,53],12:[2,53],14:[2,53],16:[2,53],22:[2,53],30:[2,53],33:[2,53],36:[2,53],37:[2,53],38:[2,53],39:[2,53],40:[2,53],41:[2,53],42:[2,53],46:[2,53],47:[2,53],48:[2,53],51:[2,53],52:[2,53],53:[2,53],54:[2,53],55:[2,53],56:[2,53]},{5:[2,54],11:[2,54],12:[2,54],14:[2,54],16:[2,54],22:[2,54],30:[2,54],33:[2,54],36:[2,54],37:[2,54],38:[2,54],39:[2,54],40:[2,54],41:[2,54],42:[2,54],46:[2,54],47:[2,54],48:[2,54],51:[2,54],52:[2,54],53:[2,54],54:[2,54],55:[2,54],56:[2,54]},{5:[2,57],11:[2,57],12:[2,57],14:[2,57],16:[2,57],22:[2,57],30:[2,57],33:[2,57],36:[2,57],37:[2,57],38:[2,57],39:[2,57],40:[2,57],41:[2,57],42:[2,57],46:[2,57],47:[2,57],48:[2,57],51:[2,57],52:[2,57],53:[2,57],54:[2,57],55:[2,57],56:[2,57]},{5:[2,58],11:[2,58],12:[2,58],14:[2,58],16:[2,58],22:[2,58],30:[2,58],33:[2,58],36:[2,58],37:[2,58],38:[2,58],39:[2,58],40:[2,58],41:[2,58],42:[2,58],46:[2,58],47:[2,58],48:[2,58],51:[2,58],52:[2,58],53:[2,58],54:[2,58],55:[2,58],56:[2,58]},{5:[2,55],11:[2,55],12:[2,55],14:[2,55],16:[2,55],22:[2,55],30:[2,55],33:[2,55],36:[2,55],37:[2,55],38:[2,55],39:[2,55],40:[2,55],41:[2,55],42:[2,55],46:[2,55],47:[2,55],48:[2,55],51:[2,55],52:[2,55],53:[2,55],54:[2,55],55:[2,55],56:[2,55]},{5:[2,9],11:[2,9],12:[2,9],14:[2,9],16:[2,9],18:[1,50]},{5:[2,11],11:[2,11],12:[2,11],14:[2,11],16:[2,11],18:[2,11]},{5:[2,10],11:[2,10],12:[2,10],14:[2,10],16:[2,10],18:[1,51]},{5:[2,13],11:[2,13],12:[2,13],14:[2,13],16:[2,13],18:[2,13]},{5:[1,55],7:52,8:[1,54],11:[2,28],19:53,20:37,22:[2,28],27:[1,38],33:[2,28],36:[2,28],38:[2,28],41:[2,28],42:[2,28],46:[2,28],47:[2,28],48:[2,28],51:[2,28],52:[2,28],53:[2,28],55:[2,28],56:[2,28]},{5:[2,16],8:[2,16],11:[2,16],22:[2,16],27:[2,16],33:[2,16],36:[2,16],38:[2,16],41:[2,16],42:[2,16],46:[2,16],47:[2,16],48:[2,16],51:[2,16],52:[2,16],53:[2,16],55:[2,16],56:[2,16]},{11:[2,35],13:56,22:[2,35],32:12,33:[2,35],34:13,35:14,36:[1,15],38:[1,16],41:[1,17],42:[1,18],43:19,45:20,46:[1,21],47:[1,22],48:[1,23],49:24,50:25,51:[1,26],52:[1,27],53:[1,30],55:[1,28],56:[1,29]},{12:[1,59],28:57,30:[1,58]},{5:[2,33],11:[2,33],12:[2,33],14:[2,33],16:[2,33],22:[2,33],33:[2,33],34:60,35:14,36:[1,15],37:[2,33],38:[1,16],41:[1,17],42:[1,18],43:19,45:20,46:[1,21],47:[1,22],48:[1,23],49:24,50:25,51:[1,26],52:[1,27],53:[1,30],55:[1,28],56:[1,29]},{5:[2,36],11:[2,36],12:[2,36],14:[2,36],16:[2,36],22:[2,36],30:[1,42],33:[2,36],36:[2,36],37:[2,36],38:[2,36],39:[1,41],40:[1,43],41:[2,36],42:[2,36],44:44,46:[2,36],47:[2,36],48:[2,36],51:[2,36],52:[2,36],53:[2,36],54:[1,45],55:[2,36],56:[2,36]},{5:[2,40],11:[2,40],12:[2,40],14:[2,40],16:[2,40],22:[2,40],30:[2,40],33:[2,40],36:[2,40],37:[2,40],38:[2,40],39:[2,40],40:[2,40],41:[2,40],42:[2,40],46:[2,40],47:[2,40],48:[2,40],51:[2,40],52:[2,40],53:[2,40],54:[2,40],55:[2,40],56:[2,40]},{5:[2,41],11:[2,41],12:[2,41],14:[2,41],16:[2,41],22:[2,41],30:[2,41],33:[2,41],36:[2,41],37:[2,41],38:[2,41],39:[2,41],40:[2,41],41:[2,41],42:[2,41],46:[2,41],47:[2,41],48:[2,41],51:[2,41],52:[2,41],53:[2,41],54:[2,41],55:[2,41],56:[2,41]},{5:[2,42],11:[2,42],12:[2,42],14:[2,42],16:[2,42],22:[2,42],30:[2,42],33:[2,42],36:[2,42],37:[2,42],38:[2,42],39:[2,42],40:[2,42],41:[2,42],42:[2,42],46:[2,42],47:[2,42],48:[2,42],51:[2,42],52:[2,42],53:[2,42],54:[2,42],55:[2,42],56:[2,42]},{5:[2,46],11:[2,46],12:[2,46],14:[2,46],16:[2,46],22:[2,46],30:[2,46],33:[2,46],36:[2,46],37:[2,46],38:[2,46],39:[2,46],40:[2,46],41:[2,46],42:[2,46],46:[2,46],47:[2,46],48:[2,46],51:[2,46],52:[2,46],53:[2,46],54:[2,46],55:[2,46],56:[2,46]},{5:[2,56],11:[2,56],12:[2,56],14:[2,56],16:[2,56],22:[2,56],30:[2,56],33:[2,56],36:[2,56],37:[2,56],38:[2,56],39:[2,56],40:[2,56],41:[2,56],42:[2,56],46:[2,56],47:[2,56],48:[2,56],51:[2,56],52:[2,56],53:[2,56],54:[2,56],55:[2,56],56:[2,56]},{33:[1,39],37:[1,61]},{33:[1,39],37:[1,62]},{5:[2,43],11:[2,43],12:[2,43],14:[2,43],16:[2,43],22:[2,43],30:[1,42],33:[2,43],36:[2,43],37:[2,43],38:[2,43],39:[1,41],40:[1,43],41:[2,43],42:[2,43],44:44,46:[2,43],47:[2,43],48:[2,43],51:[2,43],52:[2,43],53:[2,43],54:[1,45],55:[2,43],56:[2,43]},{5:[2,44],11:[2,44],12:[2,44],14:[2,44],16:[2,44],22:[2,44],30:[1,42],33:[2,44],36:[2,44],37:[2,44],38:[2,44],39:[1,41],40:[1,43],41:[2,44],42:[2,44],44:44,46:[2,44],47:[2,44],48:[2,44],51:[2,44],52:[2,44],53:[2,44],54:[1,45],55:[2,44],56:[2,44]},{5:[2,12],11:[2,12],12:[2,12],14:[2,12],16:[2,12],18:[2,12]},{5:[2,14],11:[2,14],12:[2,14],14:[2,14],16:[2,14],18:[2,14]},{1:[2,1]},{5:[2,15],8:[2,15],11:[2,15],22:[2,15],27:[2,15],33:[2,15],36:[2,15],38:[2,15],41:[2,15],42:[2,15],46:[2,15],47:[2,15],48:[2,15],51:[2,15],52:[2,15],53:[2,15],55:[2,15],56:[2,15]},{1:[2,2]},{8:[1,63],9:[1,64]},{11:[1,67],21:65,22:[1,66]},{29:[1,68],31:[1,69]},{29:[1,70]},{29:[2,29],31:[2,29]},{5:[2,32],11:[2,32],12:[2,32],14:[2,32],16:[2,32],22:[2,32],33:[2,32],35:40,36:[1,15],37:[2,32],38:[1,16],41:[1,17],42:[1,18],43:19,45:20,46:[1,21],47:[1,22], +48:[1,23],49:24,50:25,51:[1,26],52:[1,27],53:[1,30],55:[1,28],56:[1,29]},{5:[2,38],11:[2,38],12:[2,38],14:[2,38],16:[2,38],22:[2,38],30:[2,38],33:[2,38],36:[2,38],37:[2,38],38:[2,38],39:[2,38],40:[2,38],41:[2,38],42:[2,38],46:[2,38],47:[2,38],48:[2,38],51:[2,38],52:[2,38],53:[2,38],54:[2,38],55:[2,38],56:[2,38]},{5:[2,39],11:[2,39],12:[2,39],14:[2,39],16:[2,39],22:[2,39],30:[2,39],33:[2,39],36:[2,39],37:[2,39],38:[2,39],39:[2,39],40:[2,39],41:[2,39],42:[2,39],46:[2,39],47:[2,39],48:[2,39],51:[2,39],52:[2,39],53:[2,39],54:[2,39],55:[2,39],56:[2,39]},{1:[2,3]},{8:[1,71]},{5:[2,17],8:[2,17],11:[2,17],22:[2,17],27:[2,17],33:[2,17],36:[2,17],38:[2,17],41:[2,17],42:[2,17],46:[2,17],47:[2,17],48:[2,17],51:[2,17],52:[2,17],53:[2,17],55:[2,17],56:[2,17]},{22:[2,20],23:72,24:[2,20],25:73,26:[1,74]},{5:[2,19],8:[2,19],11:[2,19],22:[2,19],27:[2,19],33:[2,19],36:[2,19],38:[2,19],41:[2,19],42:[2,19],46:[2,19],47:[2,19],48:[2,19],51:[2,19],52:[2,19],53:[2,19],55:[2,19],56:[2,19]},{11:[2,26],22:[2,26],33:[2,26],36:[2,26],38:[2,26],41:[2,26],42:[2,26],46:[2,26],47:[2,26],48:[2,26],51:[2,26],52:[2,26],53:[2,26],55:[2,26],56:[2,26]},{12:[1,75]},{11:[2,27],22:[2,27],33:[2,27],36:[2,27],38:[2,27],41:[2,27],42:[2,27],46:[2,27],47:[2,27],48:[2,27],51:[2,27],52:[2,27],53:[2,27],55:[2,27],56:[2,27]},{1:[2,4]},{22:[1,77],24:[1,76]},{22:[2,21],24:[2,21],26:[1,78]},{22:[2,24],24:[2,24],26:[2,24]},{29:[2,30],31:[2,30]},{5:[2,18],8:[2,18],11:[2,18],22:[2,18],27:[2,18],33:[2,18],36:[2,18],38:[2,18],41:[2,18],42:[2,18],46:[2,18],47:[2,18],48:[2,18],51:[2,18],52:[2,18],53:[2,18],55:[2,18],56:[2,18]},{22:[2,20],23:79,24:[2,20],25:73,26:[1,74]},{22:[2,25],24:[2,25],26:[2,25]},{22:[1,77],24:[1,80]},{22:[2,23],24:[2,23],25:81,26:[1,74]},{22:[2,22],24:[2,22],26:[1,78]}],defaultActions:{9:[2,5],10:[2,6],52:[2,1],54:[2,2],63:[2,3],71:[2,4]},parseError:function(e,t){if(!t.recoverable)throw new Error(e);this.trace(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||f,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,r=[0],i=[null],o=[],s=this.table,a="",c=0,u=0,l=0,h=2,f=1;this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var p=this.lexer.yylloc;o.push(p);var d=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError?this.parseError=this.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var y,m,g,v,b,x,_,S,w,E={};;){if(g=r[r.length-1],this.defaultActions[g]?v=this.defaultActions[g]:(null!==y&&"undefined"!=typeof y||(y=t()),v=s[g]&&s[g][y]),"undefined"==typeof v||!v.length||!v[0]){var k="";w=[];for(x in s[g])this.terminals_[x]&&x>h&&w.push("'"+this.terminals_[x]+"'");k=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+w.join(", ")+", got '"+(this.terminals_[y]||y)+"'":"Parse error on line "+(c+1)+": Unexpected "+(y==f?"end of input":"'"+(this.terminals_[y]||y)+"'"),this.parseError(k,{text:this.lexer.match,token:this.terminals_[y]||y,line:this.lexer.yylineno,loc:p,expected:w})}if(v[0]instanceof Array&&v.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+y);switch(v[0]){case 1:r.push(y),i.push(this.lexer.yytext),o.push(this.lexer.yylloc),r.push(v[1]),y=null,m?(y=m,m=null):(u=this.lexer.yyleng,a=this.lexer.yytext,c=this.lexer.yylineno,p=this.lexer.yylloc,l>0&&l--);break;case 2:if(_=this.productions_[v[1]][1],E.$=i[i.length-_],E._$={first_line:o[o.length-(_||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(_||1)].first_column,last_column:o[o.length-1].last_column},d&&(E._$.range=[o[o.length-(_||1)].range[0],o[o.length-1].range[1]]),b=this.performAction.call(E,a,u,c,this.yy,v[1],i,o),"undefined"!=typeof b)return b;_&&(r=r.slice(0,-1*_*2),i=i.slice(0,-1*_),o=o.slice(0,-1*_)),r.push(this.productions_[v[1]][0]),i.push(E.$),o.push(E._$),S=s[r[r.length-2]][r[r.length-1]],r.push(S);break;case 3:return!0}}return!0}},i=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),r=e[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],n=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var o in i)this[o]=i[o];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r;this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),o=0;ot[0].length)){if(t=n,r=o,this.options.backtrack_lexer){if(e=this.test_match(n,i[o]),e!==!1)return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?(e=this.test_match(t,i[r]),e!==!1&&e):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){var e=this.conditionStack.length-1;return e>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,n,r){switch(n){case 0:return 26;case 1:return 26;case 2:return 26;case 3:return 26;case 4:return 26;case 5:return 26;case 6:return 26;case 7:return e.depth++,22;case 8:return 0==e.depth?this.begin("trail"):e.depth--,24;case 9:return 12;case 10:return this.popState(),29;case 11:return 31;case 12:return 30;case 13:break;case 14:break;case 15:this.begin("indented");break;case 16:return this.begin("code"),5;case 17:return 56;case 18:e.options[t.yytext]=!0;break;case 19:this.begin("INITIAL");break;case 20:this.begin("INITIAL");break;case 21:break;case 22:return 18;case 23:this.begin("INITIAL");break;case 24:this.begin("INITIAL");break;case 25:break;case 26:this.begin("rules");break;case 27:return e.depth=0,this.begin("action"),22;case 28:return this.begin("trail"),t.yytext=t.yytext.substr(2,t.yytext.length-4),11;case 29:return t.yytext=t.yytext.substr(2,t.yytext.length-4),11;case 30:return this.begin("rules"),11;case 31:break;case 32:break;case 33:break;case 34:break;case 35:return 12;case 36:return t.yytext=t.yytext.replace(/\\"/g,'"'),55;case 37:return t.yytext=t.yytext.replace(/\\'/g,"'"),55;case 38:return 33;case 39:return 52;case 40:return 38;case 41:return 38;case 42:return 38;case 43:return 36;case 44:return 37;case 45:return 39;case 46:return 30;case 47:return 40;case 48:return 47;case 49:return 31;case 50:return 48;case 51:return this.begin("conditions"),27;case 52:return 42;case 53:return 41;case 54:return 53;case 55:return t.yytext=t.yytext.replace(/^\\/g,""),53;case 56:return 48;case 57:return 46;case 58:e.options={},this.begin("options");break;case 59:return this.begin("start_condition"),14;case 60:return this.begin("start_condition"),16;case 61:return this.begin("rules"),5;case 62:return 54;case 63:return 51;case 64:return 22;case 65:return 24;case 66:break;case 67:return 8;case 68:return 9}},rules:[/^(?:\/\*(.|\n|\r)*?\*\/)/,/^(?:\/\/.*)/,/^(?:\/[^ \/]*?['"{}'][^ ]*?\/)/,/^(?:"(\\\\|\\"|[^"])*")/,/^(?:'(\\\\|\\'|[^'])*')/,/^(?:[\/"'][^{}\/"']+)/,/^(?:[^{}\/"']+)/,/^(?:\{)/,/^(?:\})/,/^(?:([a-zA-Z_][a-zA-Z0-9_-]*))/,/^(?:>)/,/^(?:,)/,/^(?:\*)/,/^(?:(\r\n|\n|\r)+)/,/^(?:\s+(\r\n|\n|\r)+)/,/^(?:\s+)/,/^(?:%%)/,/^(?:[a-zA-Z0-9_]+)/,/^(?:([a-zA-Z_][a-zA-Z0-9_-]*))/,/^(?:(\r\n|\n|\r)+)/,/^(?:\s+(\r\n|\n|\r)+)/,/^(?:\s+)/,/^(?:([a-zA-Z_][a-zA-Z0-9_-]*))/,/^(?:(\r\n|\n|\r)+)/,/^(?:\s+(\r\n|\n|\r)+)/,/^(?:\s+)/,/^(?:.*(\r\n|\n|\r)+)/,/^(?:\{)/,/^(?:%\{(.|(\r\n|\n|\r))*?%\})/,/^(?:%\{(.|(\r\n|\n|\r))*?%\})/,/^(?:.+)/,/^(?:\/\*(.|\n|\r)*?\*\/)/,/^(?:\/\/.*)/,/^(?:(\r\n|\n|\r)+)/,/^(?:\s+)/,/^(?:([a-zA-Z_][a-zA-Z0-9_-]*))/,/^(?:"(\\\\|\\"|[^"])*")/,/^(?:'(\\\\|\\'|[^'])*')/,/^(?:\|)/,/^(?:\[(\\\\|\\\]|[^\]])*\])/,/^(?:\(\?:)/,/^(?:\(\?=)/,/^(?:\(\?!)/,/^(?:\()/,/^(?:\))/,/^(?:\+)/,/^(?:\*)/,/^(?:\?)/,/^(?:\^)/,/^(?:,)/,/^(?:<>)/,/^(?:<)/,/^(?:\/!)/,/^(?:\/)/,/^(?:\\([0-7]{1,3}|[rfntvsSbBwWdD\\*+()${}|[\]\/.^?]|c[A-Z]|x[0-9A-F]{2}|u[a-fA-F0-9]{4}))/,/^(?:\\.)/,/^(?:\$)/,/^(?:\.)/,/^(?:%options\b)/,/^(?:%s\b)/,/^(?:%x\b)/,/^(?:%%)/,/^(?:\{\d+(,\s?\d+|,)?\})/,/^(?:\{([a-zA-Z_][a-zA-Z0-9_-]*)\})/,/^(?:\{)/,/^(?:\})/,/^(?:.)/,/^(?:$)/,/^(?:(.|(\r\n|\n|\r))+)/],conditions:{code:{rules:[67,68],inclusive:!1},start_condition:{rules:[22,23,24,25,67],inclusive:!1},options:{rules:[18,19,20,21,67],inclusive:!1},conditions:{rules:[9,10,11,12,67],inclusive:!1},action:{rules:[0,1,2,3,4,5,6,7,8,67],inclusive:!1},indented:{rules:[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0},trail:{rules:[26,29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0},rules:{rules:[13,14,15,16,17,29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0},INITIAL:{rules:[29,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67],inclusive:!0}}};return e}();return r.lexer=i,n.prototype=r,r.Parser=n,new n}();t.parser=i,t.Parser=i.Parser,t.parse=function(){return i.parse.apply(i,arguments)},t.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),e.exit(1));var i=n(336).readFileSync(n(337).normalize(r[1]),"utf8");return t.parser.parse(i)},"undefined"!=typeof r&&n.c[0]===r&&t.main(e.argv.slice(1))}).call(t,n(330),n(335)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children=[],e.webpackPolyfill=1),e}},function(e,t){},function(e,t,n){(function(e){function n(e,t){for(var n=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!i;o--){var s=o>=0?arguments[o]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,i="/"===s.charAt(0))}return t=n(r(t.split("/"),function(e){return!!e}),!i).join("/"),(i?"/":"")+t||"."},t.normalize=function(e){var i=t.isAbsolute(e),o="/"===s(e,-1);return e=n(r(e.split("/"),function(e){return!!e}),!i).join("/"),e||i||(e="."),e&&o&&(e+="/"),(i?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(r(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},t.relative=function(e,n){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=t.resolve(e).substr(1),n=t.resolve(n).substr(1);for(var i=r(e.split("/")),o=r(n.split("/")),s=Math.min(i.length,o.length),a=s,c=0;c=0.4"},homepage:"http://jison.org",keywords:["jison","parser","generator","lexer","flex","tokenizer"],main:"regexp-lexer",name:"jison-lex",repository:{type:"git",url:"git://github.com/zaach/jison-lex.git"},scripts:{test:"node tests/all-tests.js"},version:"0.3.4"}},function(e,t,n){var r=n(340).parser,i=n(341),o=n(334);t.parse=function(e){return r.parse(e)},t.transform=i.transform,r.yy.addDeclaration=function(e,t){if(t.start)e.start=t.start;else if(t.lex)e.lex=s(t.lex);else if(t.operator)e.operators||(e.operators=[]),e.operators.push(t.operator);else if(t.parseParam)e.parseParams||(e.parseParams=[]),e.parseParams=e.parseParams.concat(t.parseParam);else if(t.include)e.moduleInclude||(e.moduleInclude=""),e.moduleInclude+=t.include;else if(t.options){e.options||(e.options={});for(var n=0;nh&&E.push("'"+this.terminals_[_]+"'");A=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(c+1)+": Unexpected "+(m==f?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(A,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:d,expected:E})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(b[0]){case 1:r.push(m),i.push(this.lexer.yytext),o.push(this.lexer.yylloc),r.push(b[1]),m=null,g?(m=g,g=null):(u=this.lexer.yyleng,a=this.lexer.yytext,c=this.lexer.yylineno,d=this.lexer.yylloc,l>0&&l--);break;case 2:if(S=this.productions_[b[1]][1],k.$=i[i.length-S],k._$={first_line:o[o.length-(S||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(S||1)].first_column,last_column:o[o.length-1].last_column},y&&(k._$.range=[o[o.length-(S||1)].range[0],o[o.length-1].range[1]]),x=this.performAction.apply(k,[a,u,c,this.yy,b[1],i,o].concat(p)),"undefined"!=typeof x)return x;S&&(r=r.slice(0,-1*S*2),i=i.slice(0,-1*S),o=o.slice(0,-1*S)),r.push(this.productions_[b[1]][0]),i.push(k.$),o.push(k._$),w=s[r[r.length-2]][r[r.length-1]],r.push(w);break;case 3:return!0}}return!0}},i=n(341).transform,o=!1,s=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),r=e[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],n=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var o in i)this[o]=i[o];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r;this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),o=0;ot[0].length)){if(t=n,r=o,this.options.backtrack_lexer){if(e=this.test_match(n,i[o]),e!==!1)return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?(e=this.test_match(t,i[r]),e!==!1&&e):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null, +line:this.yylineno})},lex:function(){var e=this.next();return e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){var e=this.conditionStack.length-1;return e>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,n,r){switch(n){case 0:return this.pushState("code"),5;case 1:return 43;case 2:return 44;case 3:return 45;case 4:return 46;case 5:return 47;case 6:break;case 7:break;case 8:break;case 9:return t.yytext=t.yytext.substr(1,t.yyleng-2),40;case 10:return 41;case 11:return t.yytext=t.yytext.substr(1,t.yyleng-2),42;case 12:return t.yytext=t.yytext.substr(1,t.yyleng-2),42;case 13:return 28;case 14:return 30;case 15:return 31;case 16:return this.pushState(o?"ebnf":"bnf"),5;case 17:e.options||(e.options={}),o=e.options.ebnf=!0;break;case 18:return 48;case 19:return 11;case 20:return 22;case 21:return 23;case 22:return 24;case 23:return 20;case 24:return 18;case 25:return 13;case 26:break;case 27:break;case 28:return t.yytext=t.yytext.substr(2,t.yyleng-4),15;case 29:return t.yytext=t.yytext.substr(2,t.yytext.length-4),15;case 30:return e.depth=0,this.pushState("action"),49;case 31:return t.yytext=t.yytext.substr(2,t.yyleng-2),52;case 32:break;case 33:return 8;case 34:return 54;case 35:return 54;case 36:return 54;case 37:return 54;case 38:return 54;case 39:return 54;case 40:return 54;case 41:return e.depth++,49;case 42:return 0==e.depth?this.begin(o?"ebnf":"bnf"):e.depth--,51;case 43:return 9}},rules:[/^(?:%%)/,/^(?:\()/,/^(?:\))/,/^(?:\*)/,/^(?:\?)/,/^(?:\+)/,/^(?:\s+)/,/^(?:\/\/.*)/,/^(?:\/\*(.|\n|\r)*?\*\/)/,/^(?:\[([a-zA-Z][a-zA-Z0-9_-]*)\])/,/^(?:([a-zA-Z][a-zA-Z0-9_-]*))/,/^(?:"[^"]+")/,/^(?:'[^']+')/,/^(?::)/,/^(?:;)/,/^(?:\|)/,/^(?:%%)/,/^(?:%ebnf\b)/,/^(?:%prec\b)/,/^(?:%start\b)/,/^(?:%left\b)/,/^(?:%right\b)/,/^(?:%nonassoc\b)/,/^(?:%parse-param\b)/,/^(?:%options\b)/,/^(?:%lex[\w\W]*?\/lex\b)/,/^(?:%[a-zA-Z]+[^\r\n]*)/,/^(?:<[a-zA-Z]*>)/,/^(?:\{\{[\w\W]*?\}\})/,/^(?:%\{(.|\r|\n)*?%\})/,/^(?:\{)/,/^(?:->.*)/,/^(?:.)/,/^(?:$)/,/^(?:\/\*(.|\n|\r)*?\*\/)/,/^(?:\/\/.*)/,/^(?:\/[^ \/]*?['"{}'][^ ]*?\/)/,/^(?:"(\\\\|\\"|[^"])*")/,/^(?:'(\\\\|\\'|[^'])*')/,/^(?:[\/"'][^{}\/"']+)/,/^(?:[^{}\/"']+)/,/^(?:\{)/,/^(?:\})/,/^(?:(.|\n|\r)+)/],conditions:{bnf:{rules:[0,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],inclusive:!0},ebnf:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],inclusive:!0},action:{rules:[33,34,35,36,37,38,39,40,41,42],inclusive:!1},code:{rules:[33,43],inclusive:!1},INITIAL:{rules:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],inclusive:!0}}};return e}();return r.lexer=s,t.prototype=r,r.Parser=t,new t}();t.parser=i,t.Parser=i.Parser,t.parse=function(){return i.parse.apply(i,arguments)},t.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),e.exit(1));var i=n(336).readFileSync(n(337).normalize(r[1]),"utf8");return t.parser.parse(i)},"undefined"!=typeof r&&n.c[0]===r&&t.main(e.argv.slice(1))}).call(t,n(330),n(335)(e))},function(e,t,n){var r=function(){var e=n(342),t=function(e,t,n){var o=e[0],s=e[1],a=!1;if("xalias"===o&&(o=e[1],s=e[2],a=e[3],o?e=e.slice(1,2):(e=s,o=e[0],s=e[1])),"symbol"===o){var c;c="\\"===e[1][0]?e[1][1]:"'"===e[1][0]?e[1].substring(1,e[1].length-1):e[1],n(c+(a?"["+a+"]":""))}else if("+"===o){a||(a=t.production+"_repetition_plus"+t.repid++),n(a),t=i(a,t.grammar);var u=r([s],t);t.grammar[a]=[[u,"$$ = [$1];"],[a+" "+u,"$1.push($2);"]]}else"*"===o?(a||(a=t.production+"_repetition"+t.repid++),n(a),t=i(a,t.grammar),t.grammar[a]=[["","$$ = [];"],[a+" "+r([s],t),"$1.push($2);"]]):"?"===o?(a||(a=t.production+"_option"+t.optid++),n(a),t=i(a,t.grammar),t.grammar[a]=["",r([s],t)]):"()"===o&&(1==s.length?n(r(s[0],t)):(a||(a=t.production+"_group"+t.groupid++),n(a),t=i(a,t.grammar),t.grammar[a]=s.map(function(e){return r(e,t)})))},r=function(e,n){return e.reduce(function(e,r){return t(r,n,function(t){e.push(t)}),e},[]).join(" ")},i=function(e,t){return{production:e,repid:0,groupid:0,optid:0,grammar:t}},o=function(t,n,o){var s=i(t,o);return n.map(function(t){var n=null,i=null;"string"!=typeof t&&(n=t[1],i=t[2],t=t[0]);var o=e.parse(t);t=r(o,s);var a=[t];return n&&a.push(n),i&&a.push(i),1==a.length?a[0]:a})},s=function(e){Object.keys(e).forEach(function(t){e[t]=o(t,e[t],e)})};return{transform:function(e){return s(e),e}}}();t.transform=r.transform},function(e,t,n){(function(e,r){var i=function(){function e(){this.yy={}}var t={trace:function(){},yy:{},symbols_:{error:2,production:3,handle:4,EOF:5,handle_list:6,"|":7,expression_suffix:8,expression:9,suffix:10,ALIAS:11,symbol:12,"(":13,")":14,"*":15,"?":16,"+":17,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",7:"|",11:"ALIAS",12:"symbol",13:"(",14:")",15:"*",16:"?",17:"+"},productions_:[0,[3,2],[6,1],[6,3],[4,0],[4,2],[8,3],[8,2],[9,1],[9,3],[10,0],[10,1],[10,1],[10,1]],performAction:function(e,t,n,r,i,o,s){var a=o.length-1;switch(i){case 1:return o[a-1];case 2:this.$=[o[a]];break;case 3:o[a-2].push(o[a]);break;case 4:this.$=[];break;case 5:o[a-1].push(o[a]);break;case 6:this.$=["xalias",o[a-1],o[a-2],o[a]];break;case 7:o[a]?this.$=[o[a],o[a-1]]:this.$=o[a-1];break;case 8:this.$=["symbol",o[a]];break;case 9:this.$=["()",o[a-1]]}},table:[{3:1,4:2,5:[2,4],12:[2,4],13:[2,4]},{1:[3]},{5:[1,3],8:4,9:5,12:[1,6],13:[1,7]},{1:[2,1]},{5:[2,5],7:[2,5],12:[2,5],13:[2,5],14:[2,5]},{5:[2,10],7:[2,10],10:8,11:[2,10],12:[2,10],13:[2,10],14:[2,10],15:[1,9],16:[1,10],17:[1,11]},{5:[2,8],7:[2,8],11:[2,8],12:[2,8],13:[2,8],14:[2,8],15:[2,8],16:[2,8],17:[2,8]},{4:13,6:12,7:[2,4],12:[2,4],13:[2,4],14:[2,4]},{5:[2,7],7:[2,7],11:[1,14],12:[2,7],13:[2,7],14:[2,7]},{5:[2,11],7:[2,11],11:[2,11],12:[2,11],13:[2,11],14:[2,11]},{5:[2,12],7:[2,12],11:[2,12],12:[2,12],13:[2,12],14:[2,12]},{5:[2,13],7:[2,13],11:[2,13],12:[2,13],13:[2,13],14:[2,13]},{7:[1,16],14:[1,15]},{7:[2,2],8:4,9:5,12:[1,6],13:[1,7],14:[2,2]},{5:[2,6],7:[2,6],12:[2,6],13:[2,6],14:[2,6]},{5:[2,9],7:[2,9],11:[2,9],12:[2,9],13:[2,9],14:[2,9],15:[2,9],16:[2,9],17:[2,9]},{4:17,7:[2,4],12:[2,4],13:[2,4],14:[2,4]},{7:[2,3],8:4,9:5,12:[1,6],13:[1,7],14:[2,3]}],defaultActions:{3:[2,1]},parseError:function(e,t){if(!t.recoverable)throw new Error(e);this.trace(e)},parse:function(e){function t(){var e;return e=n.lexer.lex()||f,"number"!=typeof e&&(e=n.symbols_[e]||e),e}var n=this,r=[0],i=[null],o=[],s=this.table,a="",c=0,u=0,l=0,h=2,f=1,p=o.slice.call(arguments,1);this.lexer.setInput(e),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var d=this.lexer.yylloc;o.push(d);var y=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError?this.parseError=this.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var m,g,v,b,x,_,S,w,E,k={};;){if(v=r[r.length-1],this.defaultActions[v]?b=this.defaultActions[v]:(null!==m&&"undefined"!=typeof m||(m=t()),b=s[v]&&s[v][m]),"undefined"==typeof b||!b.length||!b[0]){var A="";E=[];for(_ in s[v])this.terminals_[_]&&_>h&&E.push("'"+this.terminals_[_]+"'");A=this.lexer.showPosition?"Parse error on line "+(c+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(c+1)+": Unexpected "+(m==f?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(A,{text:this.lexer.match,token:this.terminals_[m]||m,line:this.lexer.yylineno,loc:d,expected:E})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+m);switch(b[0]){case 1:r.push(m),i.push(this.lexer.yytext),o.push(this.lexer.yylloc),r.push(b[1]),m=null,g?(m=g,g=null):(u=this.lexer.yyleng,a=this.lexer.yytext,c=this.lexer.yylineno,d=this.lexer.yylloc,l>0&&l--);break;case 2:if(S=this.productions_[b[1]][1],k.$=i[i.length-S],k._$={first_line:o[o.length-(S||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(S||1)].first_column,last_column:o[o.length-1].last_column},y&&(k._$.range=[o[o.length-(S||1)].range[0],o[o.length-1].range[1]]),x=this.performAction.apply(k,[a,u,c,this.yy,b[1],i,o].concat(p)),"undefined"!=typeof x)return x;S&&(r=r.slice(0,-1*S*2),i=i.slice(0,-1*S),o=o.slice(0,-1*S)),r.push(this.productions_[b[1]][0]),i.push(k.$),o.push(k._$),w=s[r[r.length-2]][r[r.length-1]],r.push(w);break;case 3:return!0}}return!0}},n=function(){var e={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e){return this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e;var t=e.match(/(?:\r\n?|\n).*/g);return t?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t-1),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),r=e[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],n=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var o in i)this[o]=i[o];return!1}return!1},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var e,t,n,r;this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),o=0;ot[0].length)){if(t=n,r=o,this.options.backtrack_lexer){if(e=this.test_match(n,i[o]),e!==!1)return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?(e=this.test_match(t,i[r]),e!==!1&&e):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e?e:this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){var e=this.conditionStack.length-1;return e>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return e=this.conditionStack.length-1-Math.abs(e||0),e>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,n,r){switch(n){case 0:break;case 1:return 12;case 2:return t.yytext=t.yytext.substr(1,t.yyleng-2),11;case 3:return 12;case 4:return 12;case 5:return"bar";case 6:return 13;case 7:return 14;case 8:return 15;case 9:return 16;case 10:return 7;case 11:return 17;case 12:return 5}},rules:[/^(?:\s+)/,/^(?:([a-zA-Z][a-zA-Z0-9_-]*))/,/^(?:\[([a-zA-Z][a-zA-Z0-9_-]*)\])/,/^(?:'[^']*')/,/^(?:\.)/,/^(?:bar\b)/,/^(?:\()/,/^(?:\))/,/^(?:\*)/,/^(?:\?)/,/^(?:\|)/,/^(?:\+)/,/^(?:$)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12],inclusive:!0}}};return e}();return t.lexer=n,e.prototype=t,t.Parser=e,new e}();t.parser=i,t.Parser=i.Parser,t.parse=function(){return i.parse.apply(i,arguments)},t.main=function(r){r[1]||(console.log("Usage: "+r[0]+" FILE"),e.exit(1));var i=n(336).readFileSync(n(337).normalize(r[1]),"utf8");return t.parser.parse(i)},"undefined"!=typeof r&&n.c[0]===r&&t.main(e.argv.slice(1))}).call(t,n(330),n(335)(e))},function(e,t,n){/*! Copyright (c) 2011, Lloyd Hilaiel, ISC License */ +!function(e){function t(e){try{return JSON&&JSON.parse?JSON.parse(e):new Function("return "+e)()}catch(e){n("ijs",e.message)}}function n(e,t){throw new Error(_[e]+(t&&" in '"+t+"'"))}function r(e,r){r||(r=0);var i=w.exec(e.substr(r));if(i){r+=i[0].length;var o;return i[1]?o=[r," "]:i[2]?o=[r,i[0]]:i[3]?o=[r,S.typ,i[0]]:i[4]?o=[r,S.psc,i[0]]:i[5]?o=[r,S.psf,i[0]]:i[6]?n("upc",e):i[8]?o=[r,i[7]?S.ide:S.str,t(i[8])]:i[9]?n("ujs",e):i[10]&&(o=[r,S.ide,i[10].replace(/\\([^\r\n\f0-9a-fA-F])/g,"$1")]),o}}function i(e,t){return typeof e===t}function o(e,n){var r,i=k.exec(e.substr(n));if(i)return n+=i[0].length,r=i[1]||i[2]||i[3]||i[5]||i[6],i[1]||i[2]||i[3]?[n,0,t(r)]:i[4]?[n,0,void 0]:[n,r]}function s(e,t){t||(t=0);var r,i=o(e,t);if(i&&"("===i[1]){r=s(e,i[0]);var a=o(e,r[0]);a&&")"===a[1]||n("epex",e),t=a[0],r=["(",r[1]]}else!i||i[1]&&"x"!=i[1]?n("ee",e+" - "+(i[1]&&i[1])):(r="x"===i[1]?void 0:i[2],t=i[0]);var c=o(e,t);if(!c||")"==c[1])return[t,r];"x"!=c[1]&&c[1]||n("bop",e+" - "+(c[1]&&c[1]));var u=s(e,c[0]);t=u[0],u=u[1];var l;if("object"!=typeof u||"("===u[0]||A[c[1]][0]=A[u[0][1]][0];)u=u[0];u[0]=[r,c[1],u[0]]}return[t,l]}function a(e,t){function n(e){return"object"!=typeof e||null===e?e:"("===e[0]?n(e[1]):[n(e[0]),e[1],n(e[2])]}var r=s(e,t?t:0);return[r[0],n(r[1])]}function c(e,t){if(void 0===e)return t;if(null===e||"object"!=typeof e)return e;var n=c(e[0],t),r=c(e[2],t);return A[e[1]][1](n,r)}function u(e,t,i,o){i||(o={});var s,a,c=[];for(t||(t=0);;){var u=f(e,t,o);if(c.push(u[1]),u=r(e,t=u[0]),u&&" "===u[1]&&(u=r(e,t=u[0])),!u)break;if(">"===u[1]||"~"===u[1])"~"===u[1]&&(o.usesSiblingOp=!0),c.push(u[1]),t=u[0];else if(","===u[1])void 0===s?s=[",",c]:s.push(c),c=[],t=u[0];else if(")"===u[1]){i||n("ucp",u[1]),a=1,t=u[0];break}}i&&!a&&n("mcp",e),s&&s.push(c);var l;return l=!i&&o.usesSiblingOp?h(s?s:c):s?s:c,[t,l]}function l(e){for(var t,n=[],r=0;r"!=e[r-2])&&(t=e.slice(0,r-1),t=t.concat([{has:[[{pc:":root"},">",e[r-1]]]},">"]),t=t.concat(e.slice(r+1)),n.push(t)),r>1){var i=">"===e[r-2]?r-3:r-2;t=e.slice(0,i);var o={};for(var s in e[i])e[i].hasOwnProperty(s)&&(o[s]=e[i][s]);o.has||(o.has=[]),o.has.push([{pc:":root"},">",e[r-1]]),t=t.concat(o,">",e.slice(r+1)),n.push(t)}break}return r==e.length?e:n.length>1?[","].concat(n):n[0]}function h(e){if(","===e[0]){for(var t=[","],n=n;n"===t[0]?t[1]:t[0],u=!0;if(a.type&&(u=u&&a.type===d(e)),a.id&&(u=u&&a.id===n),u&&a.pf&&(":nth-last-child"===a.pf?r=i-r:r++,0===a.a?u=a.b===r:(o=(r-a.b)%a.a,u=!o&&r*a.a+a.b>=0)),u&&a.has)for(var l=function(){throw 42},h=0;h"!==t[0]&&":root"!==t[0].pc&&s.push(t),u&&(">"===t[0]?t.length>2&&(u=!1,s.push(t.slice(2))):t.length>1&&(u=!1,s.push(t.slice(1)))),[u,s]}function m(e,t,n,r,i,o){var s,a,c=","===e[0]?e.slice(1):[e],u=[],l=!1,h=0,f=0;for(h=0;h=1&&u.unshift(","),p(t))for(h=0;h\\)\\(])|(string|boolean|null|array|object|number)|(:(?:root|first-child|last-child|only-child))|(:(?:nth-child|nth-last-child|has|expr|val|contains))|(:\\w+)|(?:(\\.)?(\\"(?:[^\\\\\\"]|\\\\[^\\"])*\\"))|(\\")|\\.((?:[_a-zA-Z]|[^\\0-\\0177]|\\\\[^\\r\\n\\f0-9a-fA-F])(?:[_a-zA-Z0-9\\-]|[^\\u0000-\\u0177]|(?:\\\\[^\\r\\n\\f0-9a-fA-F]))*))'),E=/^\s*\(\s*(?:([+\-]?)([0-9]*)n\s*(?:([+\-])\s*([0-9]))?|(odd|even)|([+\-]?[0-9]+))\s*\)/,k=new RegExp('^\\s*(?:(true|false|null)|(-?\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d+)?)|("(?:[^\\]|\\[^"])*")|(x)|(&&|\\|\\||[\\$\\^<>!\\*]=|[=+\\-*/%<>])|([\\(\\)]))'),A={"*":[9,function(e,t){return e*t}],"/":[9,function(e,t){return e/t}],"%":[9,function(e,t){return e%t}],"+":[7,function(e,t){return e+t}],"-":[7,function(e,t){return e-t}],"<=":[5,function(e,t){return i(e,"number")&&i(t,"number")&&e<=t}],">=":[5,function(e,t){return i(e,"number")&&i(t,"number")&&e>=t}],"$=":[5,function(e,t){return i(e,"string")&&i(t,"string")&&e.lastIndexOf(t)===e.length-t.length}],"^=":[5,function(e,t){return i(e,"string")&&i(t,"string")&&0===e.indexOf(t)}],"*=":[5,function(e,t){return i(e,"string")&&i(t,"string")&&e.indexOf(t)!==-1}],">":[5,function(e,t){return i(e,"number")&&i(t,"number")&&e>t}],"<":[5,function(e,t){return i(e,"number")&&i(t,"number")&&e=48&&e<=57}function r(e){return"0123456789abcdefABCDEF".indexOf(e)>=0}function i(e){return"01234567".indexOf(e)>=0}function o(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0}function s(e){return 10===e||13===e||8232===e||8233===e}function a(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||92===e||e>=128&&nt.NonAsciiIdentifierStart.test(String.fromCharCode(e))}function c(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&nt.NonAsciiIdentifierPart.test(String.fromCharCode(e))}function u(e){switch(e){case"class":case"enum":case"export":case"extends":case"import":case"super":return!0;default:return!1}}function l(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}}function h(e){return"eval"===e||"arguments"===e}function f(e){if(ot&&l(e))return!0;switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e||"let"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}}function p(e,n,r,i,o){var s,a;t("number"==typeof r,"Comment must have valid position"),ft.lastCommentStart>=r||(ft.lastCommentStart=r,s={type:e,value:n},pt.range&&(s.range=[r,i]),pt.loc&&(s.loc=o),pt.comments.push(s),pt.attachComment&&(a={comment:s,leading:null,trailing:null,range:[r,i]},pt.pendingComments.push(a)))}function d(e){var t,n,r,i;for(t=st-e,n={start:{line:at,column:st-ct-e}};st=ut&&M({},tt.UnexpectedToken,"ILLEGAL");else if(42===n){if(47===it.charCodeAt(st+1))return++st,++st,void(pt.comments&&(r=it.slice(e+2,st-2),t.end={line:at,column:st-ct},p("Block",r,e,st,t)));++st}else++st;M({},tt.UnexpectedToken,"ILLEGAL")}function m(){var e,t;for(t=0===st;st"===s&&">"===t&&">"===n&&"="===r?(st+=4,{type:He.Punctuator,value:">>>=",lineNumber:at,lineStart:ct,range:[i,st]}):">"===s&&">"===t&&">"===n?(st+=3,{type:He.Punctuator,value:">>>",lineNumber:at,lineStart:ct,range:[i,st]}):"<"===s&&"<"===t&&"="===n?(st+=3,{type:He.Punctuator,value:"<<=",lineNumber:at,lineStart:ct,range:[i,st]}):">"===s&&">"===t&&"="===n?(st+=3,{type:He.Punctuator,value:">>=",lineNumber:at,lineStart:ct,range:[i,st]}):s===t&&"+-<>&|".indexOf(s)>=0?(st+=2,{type:He.Punctuator,value:s+t,lineNumber:at,lineStart:ct,range:[i,st]}):"<>=!+-*%&|^/".indexOf(s)>=0?(++st,{type:He.Punctuator,value:s,lineNumber:at,lineStart:ct,range:[i,st]}):void M({},tt.UnexpectedToken,"ILLEGAL")}function S(e){for(var t="";st=0&&st0&&(r=pt.tokens[pt.tokens.length-1],r.range[0]===e&&"Punctuator"===r.type&&("/"!==r.value&&"/="!==r.value||pt.tokens.pop())),pt.tokens.push({type:"RegularExpression",value:n.literal,range:[e,st],loc:t})),n}function O(e){return e.type===He.Identifier||e.type===He.Keyword||e.type===He.BooleanLiteral||e.type===He.NullLiteral}function I(){var e,t;if(e=pt.tokens[pt.tokens.length-1],!e)return C();if("Punctuator"===e.type){if("]"===e.value)return _();if(")"===e.value)return t=pt.tokens[pt.openParenToken-1],!t||"Keyword"!==t.type||"if"!==t.value&&"while"!==t.value&&"for"!==t.value&&"with"!==t.value?_():C();if("}"===e.value){if(pt.tokens[pt.openCurlyToken-3]&&"Keyword"===pt.tokens[pt.openCurlyToken-3].type){if(t=pt.tokens[pt.openCurlyToken-4],!t)return _()}else{if(!pt.tokens[pt.openCurlyToken-4]||"Keyword"!==pt.tokens[pt.openCurlyToken-4].type)return _();if(t=pt.tokens[pt.openCurlyToken-5],!t)return C()}return Xe.indexOf(t.value)>=0?_():C()}return C()}return"Keyword"===e.type?C():_()}function N(){var e;return m(),st>=ut?{type:He.EOF,lineNumber:at,lineStart:ct,range:[st,st]}:(e=it.charCodeAt(st),40===e||41===e||58===e?_():39===e||34===e?k():a(e)?x():46===e?n(it.charCodeAt(st+1))?E():_():n(e)?E():pt.tokenize&&47===e?I():_())}function L(){var e,t,n,r,i;return m(),e=st,t={start:{line:at,column:st-ct}},n=N(),t.end={line:at,column:st-ct},n.type!==He.EOF&&(r=[n.range[0],n.range[1]],i=it.slice(n.range[0],n.range[1]),pt.tokens.push({type:Ke[n.type],value:i,range:r,loc:t})),n}function P(){var e;return e=ht,st=e.range[1],at=e.lineNumber,ct=e.lineStart,ht="undefined"!=typeof pt.tokens?L():N(),st=e.range[1],at=e.lineNumber,ct=e.lineStart,e}function T(){var e,t,n;e=st,t=at,n=ct,ht="undefined"!=typeof pt.tokens?L():N(),st=e,at=t,ct=n}function $(){var e,t,n,r;return e=st,t=at,n=ct,m(),r=at!==t,st=e,at=t,ct=n,r}function M(e,n){var r,i=Array.prototype.slice.call(arguments,2),o=n.replace(/%(\d)/g,function(e,n){return t(n>="===e||">>>="===e||"&="===e||"^="===e||"|="===e)}function U(){var e;return 59===it.charCodeAt(st)?void P():(e=at,m(),at===e?B(";")?void P():void(ht.type===He.EOF||B("}")||R(ht)):void 0)}function z(e){return e.type===Qe.Identifier||e.type===Qe.MemberExpression}function V(){var e=[];for(F("[");!B("]");)B(",")?(P(),e.push(null)):(e.push(le()),B("]")||F(","));return F("]"),lt.createArrayExpression(e)}function W(e,t){var n,r;return n=ot,lt.markStart(),r=Re(),t&&ot&&h(e[0].name)&&j(t,tt.StrictParamName),ot=n,lt.markEnd(lt.createFunctionExpression(null,e,[],r))}function J(){var e;return lt.markStart(),e=P(),e.type===He.StringLiteral||e.type===He.NumericLiteral?(ot&&e.octal&&j(e,tt.StrictOctalLiteral),lt.markEnd(lt.createLiteral(e))):lt.markEnd(lt.createIdentifier(e.value))}function Y(){var e,t,n,r,i;return e=ht,lt.markStart(),e.type===He.Identifier?(n=J(),"get"!==e.value||B(":")?"set"!==e.value||B(":")?(F(":"),r=le(),lt.markEnd(lt.createProperty("init",n,r))):(t=J(),F("("),e=ht,e.type!==He.Identifier?(F(")"),j(e,tt.UnexpectedToken,e.value),r=W([])):(i=[de()],F(")"),r=W(i,e)),lt.markEnd(lt.createProperty("set",t,r))):(t=J(),F("("),F(")"),r=W([]),lt.markEnd(lt.createProperty("get",t,r)))):e.type!==He.EOF&&e.type!==He.Punctuator?(t=J(),F(":"),r=le(),lt.markEnd(lt.createProperty("init",t,r))):void R(e)}function Z(){var e,t,n,r,i=[],o={},s=String;for(F("{");!B("}");)e=Y(),t=e.key.type===Qe.Identifier?e.key.name:s(e.key.value),r="init"===e.kind?et.Data:"get"===e.kind?et.Get:et.Set,n="$"+t,Object.prototype.hasOwnProperty.call(o,n)?(o[n]===et.Data?ot&&r===et.Data?j({},tt.StrictDuplicateProperty):r!==et.Data&&j({},tt.AccessorDataProperty):r===et.Data?j({},tt.AccessorDataProperty):o[n]&r&&j({},tt.AccessorGetSet),o[n]|=r):o[n]=r,i.push(e),B("}")||F(",");return F("}"),lt.createObjectExpression(i)}function H(){var e;return F("("),e=he(),F(")"),e}function K(){var e,t,n;return B("(")?H():(e=ht.type,lt.markStart(),e===He.Identifier?n=lt.createIdentifier(P().value):e===He.StringLiteral||e===He.NumericLiteral?(ot&&ht.octal&&j(ht,tt.StrictOctalLiteral),n=lt.createLiteral(P())):e===He.Keyword?G("this")?(P(),n=lt.createThisExpression()):G("function")&&(n=Be()):e===He.BooleanLiteral?(t=P(),t.value="true"===t.value,n=lt.createLiteral(t)):e===He.NullLiteral?(t=P(),t.value=null,n=lt.createLiteral(t)):B("[")?n=V():B("{")?n=Z():(B("/")||B("/="))&&(n="undefined"!=typeof pt.tokens?lt.createLiteral(C()):lt.createLiteral(A()),T()),n?lt.markEnd(n):void R(P()))}function X(){var e=[];if(F("("),!B(")"))for(;st":case"<=":case">=":case"instanceof":n=7;break;case"in":n=t?7:0;break;case"<<":case">>":case">>>":n=8;break;case"+":case"-":n=9;break;case"*":case"/":case"%":n=11}return n}function ce(){var e,t,n,r,i,o,s,a,c,u;if(e=Je(),c=se(),r=ht,i=ae(r,ft.allowIn),0===i)return c;for(r.prec=i,P(),t=[e,Je()],s=se(),o=[c,r,s];(i=ae(ht,ft.allowIn))>0;){for(;o.length>2&&i<=o[o.length-2].prec;)s=o.pop(),a=o.pop().value,c=o.pop(),n=lt.createBinaryExpression(a,c,s),t.pop(),e=t.pop(),e&&e.apply(n),o.push(n),t.push(e);r=P(),r.prec=i,o.push(r),t.push(Je()),n=se(),o.push(n)}for(u=o.length-1,n=o[u],t.pop();u>1;)n=lt.createBinaryExpression(o[u-1].value,o[u-2],n),u-=2,e=t.pop(),e&&e.apply(n);return n}function ue(){var e,t,n,r;return lt.markStart(),e=ce(),B("?")?(P(),t=ft.allowIn,ft.allowIn=!0,n=le(),ft.allowIn=t,F(":"),r=le(),e=lt.markEnd(lt.createConditionalExpression(e,n,r))):lt.markEnd({}),e}function le(){var e,t,n,r;return e=ht,lt.markStart(),r=t=ue(),q()&&(z(t)||j({},tt.InvalidLHSInAssignment),ot&&t.type===Qe.Identifier&&h(t.name)&&j(e,tt.StrictLHSAssignment),e=P(),n=le(),r=lt.createAssignmentExpression(e.value,t,n)),lt.markEndIf(r)}function he(){var e;if(lt.markStart(),e=le(),B(","))for(e=lt.createSequenceExpression([e]);st0?1:0,ct=0,ut=it.length,ht=null,ft={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1},pt={},t=t||{},t.tokens=!0,pt.tokens=[],pt.tokenize=!0,pt.openParenToken=-1,pt.openCurlyToken=-1,pt.range="boolean"==typeof t.range&&t.range,pt.loc="boolean"==typeof t.loc&&t.loc,"boolean"==typeof t.comment&&t.comment&&(pt.comments=[]),"boolean"==typeof t.tolerant&&t.tolerant&&(pt.errors=[]),ut>0&&"undefined"==typeof it[0]&&e instanceof String&&(it=e.valueOf());try{if(T(),ht.type===He.EOF)return pt.tokens;for(r=P();ht.type!==He.EOF;)try{r=P()}catch(e){if(r=ht,pt.errors){pt.errors.push(e);break}throw e}Ve(),i=pt.tokens,"undefined"!=typeof pt.comments&&(i.comments=pt.comments),"undefined"!=typeof pt.errors&&(i.errors=pt.errors)}catch(e){throw e}finally{pt={}}return i}function Ze(e,t){var n,r;r=String,"string"==typeof e||e instanceof String||(e=r(e)),lt=rt,it=e,st=0,at=it.length>0?1:0,ct=0,ut=it.length,ht=null,ft={allowIn:!0,labelSet:{},inFunctionBody:!1,inIteration:!1,inSwitch:!1,lastCommentStart:-1,markerStack:[]},pt={},"undefined"!=typeof t&&(pt.range="boolean"==typeof t.range&&t.range,pt.loc="boolean"==typeof t.loc&&t.loc,pt.attachComment="boolean"==typeof t.attachComment&&t.attachComment,pt.loc&&null!==t.source&&void 0!==t.source&&(pt.source=r(t.source)),"boolean"==typeof t.tokens&&t.tokens&&(pt.tokens=[]),"boolean"==typeof t.comment&&t.comment&&(pt.comments=[]),"boolean"==typeof t.tolerant&&t.tolerant&&(pt.errors=[]),pt.attachComment&&(pt.range=!0,pt.pendingComments=[],pt.comments=[])),ut>0&&"undefined"==typeof it[0]&&e instanceof String&&(it=e.valueOf());try{n=Ue(),"undefined"!=typeof pt.comments&&(n.comments=pt.comments),"undefined"!=typeof pt.tokens&&(Ve(),n.tokens=pt.tokens),"undefined"!=typeof pt.errors&&(n.errors=pt.errors),pt.attachComment&&ze()}catch(e){throw e}finally{pt={}}return n}var He,Ke,Xe,Qe,et,tt,nt,rt,it,ot,st,at,ct,ut,lt,ht,ft,pt;He={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8,RegularExpression:9},Ke={},Ke[He.BooleanLiteral]="Boolean",Ke[He.EOF]="",Ke[He.Identifier]="Identifier",Ke[He.Keyword]="Keyword",Ke[He.NullLiteral]="Null",Ke[He.NumericLiteral]="Numeric",Ke[He.Punctuator]="Punctuator",Ke[He.StringLiteral]="String",Ke[He.RegularExpression]="RegularExpression",Xe=["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="],Qe={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"},et={Data:1,Get:2,Set:4},tt={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictDuplicateProperty:"Duplicate data property in object literal not allowed in strict mode",AccessorDataProperty:"Object literal may not have data and accessor property with the same name",AccessorGetSet:"Object literal may not have multiple get/set accessors with the same name",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode"},nt={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},rt={name:"SyntaxTree",markStart:function(){m(),pt.loc&&(ft.markerStack.push(st-ct),ft.markerStack.push(at)),pt.range&&ft.markerStack.push(st)},processComment:function(e){var t,n,r,i,o;if("undefined"!=typeof e.type&&e.type!==Qe.Program)for(T(),t=0;t=n.comment.range[1]&&(o=n.leading,o?(r=o.range[0],i=o.range[1]-r,e.range[0]<=r&&e.range[1]-e.range[0]>=i&&(n.leading=e)):n.leading=e),e.range[1]<=n.comment.range[0]&&(o=n.trailing,o?(r=o.range[0],i=o.range[1]-r,e.range[0]<=r&&e.range[1]-e.range[0]>=i&&(n.trailing=e)):n.trailing=e)},markEnd:function(e){return pt.range&&(e.range=[ft.markerStack.pop(),st]),pt.loc&&(e.loc={start:{line:ft.markerStack.pop(),column:ft.markerStack.pop()},end:{line:at,column:st-ct}},this.postProcess(e)),pt.attachComment&&this.processComment(e),e},markEndIf:function(e){return e.range||e.loc?(pt.loc&&(ft.markerStack.pop(),ft.markerStack.pop()),pt.range&&ft.markerStack.pop()):this.markEnd(e),e},postProcess:function(e){return pt.source&&(e.loc.source=pt.source),e},createArrayExpression:function(e){return{type:Qe.ArrayExpression,elements:e}},createAssignmentExpression:function(e,t,n){return{type:Qe.AssignmentExpression,operator:e,left:t,right:n}},createBinaryExpression:function(e,t,n){var r="||"===e||"&&"===e?Qe.LogicalExpression:Qe.BinaryExpression;return{type:r,operator:e,left:t,right:n}},createBlockStatement:function(e){return{type:Qe.BlockStatement,body:e}},createBreakStatement:function(e){return{type:Qe.BreakStatement,label:e}},createCallExpression:function(e,t){return{type:Qe.CallExpression,callee:e,arguments:t}},createCatchClause:function(e,t){return{type:Qe.CatchClause,param:e,body:t}},createConditionalExpression:function(e,t,n){return{type:Qe.ConditionalExpression,test:e,consequent:t,alternate:n}},createContinueStatement:function(e){return{type:Qe.ContinueStatement,label:e}},createDebuggerStatement:function(){return{type:Qe.DebuggerStatement}},createDoWhileStatement:function(e,t){return{type:Qe.DoWhileStatement,body:e,test:t}},createEmptyStatement:function(){return{type:Qe.EmptyStatement}},createExpressionStatement:function(e){return{type:Qe.ExpressionStatement,expression:e}},createForStatement:function(e,t,n,r){return{type:Qe.ForStatement,init:e,test:t,update:n,body:r}},createForInStatement:function(e,t,n){return{type:Qe.ForInStatement,left:e,right:t,body:n,each:!1}},createFunctionDeclaration:function(e,t,n,r){return{type:Qe.FunctionDeclaration,id:e,params:t,defaults:n,body:r,rest:null,generator:!1,expression:!1}},createFunctionExpression:function(e,t,n,r){return{type:Qe.FunctionExpression,id:e,params:t,defaults:n,body:r,rest:null,generator:!1,expression:!1}},createIdentifier:function(e){return{type:Qe.Identifier,name:e}},createIfStatement:function(e,t,n){return{type:Qe.IfStatement,test:e,consequent:t,alternate:n}},createLabeledStatement:function(e,t){return{type:Qe.LabeledStatement,label:e,body:t}},createLiteral:function(e){return{type:Qe.Literal,value:e.value,raw:it.slice(e.range[0],e.range[1])}},createMemberExpression:function(e,t,n){return{type:Qe.MemberExpression,computed:"["===e,object:t,property:n}},createNewExpression:function(e,t){return{type:Qe.NewExpression,callee:e,arguments:t}},createObjectExpression:function(e){return{type:Qe.ObjectExpression,properties:e}},createPostfixExpression:function(e,t){return{type:Qe.UpdateExpression,operator:e,argument:t,prefix:!1}},createProgram:function(e){return{type:Qe.Program,body:e}},createProperty:function(e,t,n){return{type:Qe.Property,key:t,value:n,kind:e}},createReturnStatement:function(e){return{type:Qe.ReturnStatement,argument:e}},createSequenceExpression:function(e){return{type:Qe.SequenceExpression,expressions:e}},createSwitchCase:function(e,t){return{type:Qe.SwitchCase,test:e,consequent:t}},createSwitchStatement:function(e,t){return{type:Qe.SwitchStatement,discriminant:e,cases:t}},createThisExpression:function(){return{type:Qe.ThisExpression}},createThrowStatement:function(e){return{type:Qe.ThrowStatement,argument:e}},createTryStatement:function(e,t,n,r){return{type:Qe.TryStatement,block:e,guardedHandlers:t,handlers:n,finalizer:r}},createUnaryExpression:function(e,t){return"++"===e||"--"===e?{type:Qe.UpdateExpression,operator:e,argument:t,prefix:!0}:{type:Qe.UnaryExpression,operator:e,argument:t,prefix:!0}},createVariableDeclaration:function(e,t){return{type:Qe.VariableDeclaration,declarations:e,kind:t}},createVariableDeclarator:function(e,t){return{type:Qe.VariableDeclarator,id:e,init:t}},createWhileStatement:function(e,t){return{type:Qe.WhileStatement,test:e,body:t}},createWithStatement:function(e,t){return{type:Qe.WithStatement,object:e,body:t}}},We.prototype={constructor:We,apply:function(e){pt.range&&(e.range=[this.startIndex,st]),pt.loc&&(e.loc={start:{line:this.startLine,column:this.startColumn},end:{line:at,column:st-ct}},e=lt.postProcess(e)),pt.attachComment&<.processComment(e)}},e.version="1.1.1",e.tokenize=Ye,e.parse=Ze,e.Syntax=function(){var e,t={};"function"==typeof Object.create&&(t=Object.create(null));for(e in Qe)Qe.hasOwnProperty(e)&&(t[e]=Qe[e]);return"function"==typeof Object.freeze&&Object.freeze(t),t}()})},function(e,t,n){(function(e){!function(){"use strict";function r(){return{indent:null,base:null,parse:null,comment:!1,format:{indent:{style:" ",base:0,adjustMultilineComment:!1},newline:"\n",space:" ",json:!1,renumber:!1,hexadecimal:!1,quotes:"single",escapeless:!1,compact:!1,parentheses:!0,semicolons:!0,safeConcatenation:!1},moz:{comprehensionExpressionStartsWithAssignment:!1,starlessGenerator:!1,parenthesizedComprehensionBlock:!1},sourceMap:null,sourceMapRoot:null,sourceMapWithCode:!1,directive:!1,raw:!0,verbatim:null}}function i(e,t){var n="";for(t|=0;t>0;t>>>=1,e+=e)1&t&&(n+=e);return n}function o(e){return/[\r\n]/g.test(e)}function s(e){var t=e.length;return t&&U.code.isLineTerminator(e.charCodeAt(t-1))}function a(e,t){function n(e){return"object"==typeof e&&e instanceof Object&&!(e instanceof RegExp)}var r,i;for(r in t)t.hasOwnProperty(r)&&(i=t[r],n(i)?n(e[r])?a(e[r],i):e[r]=a({},i):e[r]=i);return e}function c(e){var t,n,r,i,o;if(e!==e)throw new Error("Numeric literal whose value is NaN");if(e<0||0===e&&1/e<0)throw new Error("Numeric literal whose value is negative");if(e===1/0)return J?"null":Y?"1e400":"1e+400";if(t=""+e,!Y||t.length<3)return t;for(n=t.indexOf("."),J||48!==t.charCodeAt(0)||1!==n||(n=0,t=t.slice(1)),r=t,t=t.replace("e+","e"),i=0,(o=r.indexOf("e"))>0&&(i=+r.slice(o+1),r=r.slice(0,o)),n>=0&&(i-=r.length-n-1,r=+(r.slice(0,n)+r.slice(n+1))+""),o=0;48===r.charCodeAt(r.length+o-1);)--o;return 0!==o&&(i-=o,r=r.slice(0,o)),0!==i&&(r+="e"+i),(r.length1e12&&Math.floor(e)===e&&(r="0x"+e.toString(16)).length255?"u"+"0000".slice(n.length)+n:0!==e||U.code.isDecimalDigit(t)?11===e?"x0B":"x"+"00".slice(n.length)+n:"0"}return r}function f(e){var t="\\";switch(e){case 92:t+="\\";break;case 10:t+="n";break;case 13:t+="r";break;case 8232:t+="u2028";break;case 8233:t+="u2029";break;default:throw new Error("Incorrectly classified character")}return t}function p(e){var t,n,r,i;for(i="double"===H?'"':"'",t=0,n=e.length;t=32&&r<=126)){s+=h(r,e.charCodeAt(t+1));continue}}s+=String.fromCharCode(r)}if(i=!("double"===H||"auto"===H&&c=0&&!U.code.isLineTerminator(e.charCodeAt(t));--t);return e.length-1-t}function S(e,t){var n,r,i,o,s,a,c,u;for(n=e.split(/\r\n|[\r\n]/),a=Number.MAX_VALUE,r=1,i=n.length;rs&&(a=s)}for("undefined"!=typeof t?(c=V,"*"===n[1][a]&&(t+=" "),V=t):(1&a&&--a,c=V),r=1,i=n.length;r0){for(a=t,o=e.leadingComments[0],t=[],ne&&e.type===F.Program&&0===e.body.length&&t.push("\n"),t.push(w(o)),s(m(t).toString())||t.push("\n"),n=1,r=e.leadingComments.length;n")),e.expression?(t.push(Q),i=M(e.body,{precedence:D.Assignment,allowIn:!0,allowCall:!0}),"{"===i.toString().charAt(0)&&(i=["(",i,")"]),t.push(i)):t.push(A(e.body,!1,!0)),t}function T(e,t,n){var r=["for"+Q+"("];return x(function(){t.left.type===F.VariableDeclaration?x(function(){r.push(t.left.kind+g()),r.push(j(t.left.declarations[0],{allowIn:!1}))}):r.push(M(t.left,{precedence:D.Call,allowIn:!0,allowCall:!0})),r=v(r,e),r=[v(r,M(t.right,{precedence:D.Sequence,allowIn:!0,allowCall:!0})),")"]}),r.push(A(t.body,n)),r}function $(e){var t;if(e.hasOwnProperty("raw")&&oe&&ie.raw)try{if(t=oe(e.raw).body[0].expression,t.type===F.Literal&&t.value===e.value)return e.raw}catch(e){}return null===e.value?"null":"string"==typeof e.value?d(e.value):"number"==typeof e.value?c(e.value):"boolean"==typeof e.value?e.value?"true":"false":l(e.value)}function M(e,t){var n,r,i,a,c,u,l,h,f,p,d,y,b,_,S,w;if(r=t.precedence,y=t.allowIn,b=t.allowCall,i=e.type||t.type,ie.verbatim&&e.hasOwnProperty(ie.verbatim))return I(e,t);switch(i){case F.SequenceExpression:for(n=[],y|=D.Sequence0){for(n.push("("),c=0;c=2&&48===l.charCodeAt(0))&&n.push(".")),n.push("."),n.push(N(e.property))),n=k(n,D.Member,r);break;case F.UnaryExpression:l=M(e.argument,{precedence:D.Unary,allowIn:!0,allowCall:!0}),""===Q?n=v(e.operator,l):(n=[e.operator],e.operator.length>2?n=v(n,l):(p=m(n).toString(),f=p.charCodeAt(p.length-1),d=l.toString().charCodeAt(0),(43===f||45===f)&&f===d||U.code.isIdentifierPart(f)&&U.code.isIdentifierPart(d)?(n.push(g()),n.push(l)):n.push(l))),n=k(n,D.Unary,r);break;case F.YieldExpression:n=e.delegate?"yield*":"yield",e.argument&&(n=v(n,M(e.argument,{precedence:D.Yield,allowIn:!0,allowCall:!0}))),n=k(n,D.Yield,r);break;case F.UpdateExpression:n=e.prefix?k([e.operator,M(e.argument,{precedence:D.Unary,allowIn:!0,allowCall:!0})],D.Unary,r):k([M(e.argument,{precedence:D.Postfix,allowIn:!0,allowCall:!0}),e.operator],D.Postfix,r);break;case F.FunctionExpression:w=e.generator&&!ie.moz.starlessGenerator,n=w?"function*":"function",n=e.id?[n,w?Q:g(),N(e.id),P(e)]:[n+Q,P(e)];break;case F.ArrayPattern:case F.ArrayExpression:if(!e.elements.length){n="[]";break}h=e.elements.length>1,n=["[",h?X:""],x(function(t){for(c=0,u=e.elements.length;c1,x(function(){l=M(e.properties[0],{precedence:D.Sequence,allowIn:!0,allowCall:!0,type:F.Property})}),!h&&!o(m(l).toString())){n=["{",Q,l,Q,"}"];break}x(function(t){if(n=["{",X,t,l],h)for(n.push(","+X),c=1,u=e.properties.length;c0||ie.moz.comprehensionExpressionStartsWithAssignment?n=v(n,l):n.push(l)}),e.filter&&(n=v(n,"if"+Q),l=M(e.filter,{precedence:D.Sequence,allowIn:!0,allowCall:!0}),n=ie.moz.parenthesizedComprehensionBlock?v(n,["(",l,")"]):v(n,l)),ie.moz.comprehensionExpressionStartsWithAssignment||(l=M(e.body,{precedence:D.Assignment,allowIn:!0,allowCall:!0}),n=v(n,l)),n.push(i===F.GeneratorExpression?")":"]");break;case F.ComprehensionBlock:l=e.left.type===F.VariableDeclaration?[e.left.kind,g(),j(e.left.declarations[0],{allowIn:!1})]:M(e.left,{precedence:D.Call,allowIn:!0,allowCall:!0}),l=v(l,e.of?"of":"in"),l=v(l,M(e.right,{precedence:D.Sequence,allowIn:!0,allowCall:!0})),n=ie.moz.parenthesizedComprehensionBlock?["for"+Q+"(",l,")"]:v("for"+Q,l);break;default:throw new Error("Unknown expression type: "+e.type)}return ie.comment&&(n=E(e,n)),m(n,e)}function j(e,t){var n,r,i,o,a,c,u,l,h,f,d;switch(c=!0,f=";",u=!1,l=!1,t&&(c=void 0===t.allowIn||t.allowIn,te||t.semicolonOptional!==!0||(f=""),u=t.functionBody,l=t.directiveContext),e.type){case F.BlockStatement:i=["{",X],x(function(){for(n=0,r=e.body.length;n=0||re&&l&&e.expression.type===F.Literal&&"string"==typeof e.expression.value?i=["(",i,")"+f]:i.push(f);break;case F.ImportDeclaration:0===e.specifiers.length?i=["import",Q,$(e.source)]:("default"===e.kind?i=["import",g(),e.specifiers[0].id.name,g()]:(i=["import",Q,"{"],1===e.specifiers.length?(a=e.specifiers[0],i.push(Q+a.id.name),a.name&&i.push(g()+"as"+g()+a.name.name),i.push(Q+"}"+Q)):(x(function(t){var n,r;for(i.push(X),n=0,r=e.specifiers.length;n0?"\n":""],n=0;n":D.Relational,"<=":D.Relational,">=":D.Relational,in:D.Relational,instanceof:D.Relational,"<<":D.BitwiseSHIFT,">>":D.BitwiseSHIFT,">>>":D.BitwiseSHIFT,"+":D.Additive,"-":D.Additive,"*":D.Multiplicative,"%":D.Multiplicative,"/":D.Multiplicative},z=Array.isArray,z||(z=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),ae={indent:{style:"",base:0},renumber:!0,hexadecimal:!0,quotes:"auto",escapeless:!0,compact:!0,parentheses:!1,semicolons:!1},ce=r().format,t.version=n(360).version,t.generate=R,t.attachComments=q.attachComments,t.Precedence=a({},D),t.browser=!1,t.FORMAT_MINIFY=ae,t.FORMAT_DEFAULTS=ce}()}).call(t,function(){return this}())},function(e,t,n){var r,i,o;!function(n,s){"use strict";i=[t],r=s,o="function"==typeof r?r.apply(t,i):r,!(void 0!==o&&(e.exports=o))}(this,function(e){"use strict";function t(){}function n(e){var t,r,i={};for(t in e)e.hasOwnProperty(t)&&(r=e[t],"object"==typeof r&&null!==r?i[t]=n(r):i[t]=r);return i}function r(e){var t,n={};for(t in e)e.hasOwnProperty(t)&&(n[t]=e[t]);return n}function i(e,t){var n,r,i,o;for(r=e.length,i=0;r;)n=r>>>1,o=i+n,t(e[o])?r=n:(i=o+1,r-=n+1);return i}function o(e,t){var n,r,i,o;for(r=e.length,i=0;r;)n=r>>>1,o=i+n,t(e[o])?(i=o+1,r-=n+1):r=n;return i}function s(e,t){this.parent=e,this.key=t}function a(e,t,n,r){this.node=e,this.path=t,this.wrap=n,this.ref=r}function c(){}function u(e,t){var n=new c;return n.traverse(e,t)}function l(e,t){var n=new c;return n.replace(e,t)}function h(e,t){var n;return n=i(t,function(t){return t.range[0]>e.range[0]}),e.extendedRange=[e.range[0],e.range[1]],n!==t.length&&(e.extendedRange[1]=t[n].range[0]),n-=1,n>=0&&(e.extendedRange[0]=t[n].range[1]),e}function f(e,t,r){var i,o,s,a,c=[];if(!e.range)throw new Error("attachComments needs range information");if(!r.length){if(t.length){for(s=0,o=t.length;se.range[0]));)t.extendedRange[1]===e.range[0]?(e.leadingComments||(e.leadingComments=[]),e.leadingComments.push(t),c.splice(a,1)):a+=1;return a===c.length?y.Break:c[a].extendedRange[0]>e.range[1]?y.Skip:void 0}}),a=0,u(e,{leave:function(e){for(var t;ae.range[1]?y.Skip:void 0}}),e}var p,d,y,m,g,v;p={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"},d=Array.isArray,d||(d=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),t(r),t(o),m={AssignmentExpression:["left","right"],ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","defaults","rest","body"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","body","superClass"],ClassExpression:["id","body","superClass"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],FunctionDeclaration:["id","params","defaults","rest","body"],FunctionExpression:["id","params","defaults","rest","body"],Identifier:[],IfStatement:["test","consequent","alternate"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MethodDefinition:["key","value"],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],Program:["body"],Property:["key","value"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handlers","handler","guardedHandlers","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},g={},v={},y={Break:g,Skip:v},s.prototype.replace=function(e){this.parent[this.key]=e},c.prototype.path=function(){function e(e,t){if(d(t))for(r=0,i=t.length;r=0;)if(u=f[l],y=o[u])if(d(y))for(h=y.length;(h-=1)>=0;)y[h]&&(i=s!==p.ObjectExpression&&s!==p.ObjectPattern||"properties"!==f[l]?new a(y[h],[u,h],null,null):new a(y[h],[u,h],"Property",null),n.push(i));else n.push(new a(y,u,null,null))}}else if(i=r.pop(),c=this.__execute(t.leave,i),this.__state===g||c===g)return},c.prototype.replace=function(e,t){var n,r,i,o,c,u,l,h,f,y,b,x,_;for(this.__initialize(e,t),b={},n=this.__worklist,r=this.__leavelist,x={root:e},u=new a(e,null,null,new s(x,"root")),n.push(u),r.push(u);n.length;)if(u=n.pop(),u!==b){if(c=this.__execute(t.enter,u),void 0!==c&&c!==g&&c!==v&&(u.ref.replace(c),u.node=c),this.__state===g||c===g)return x.root;if(i=u.node,i&&(n.push(b),r.push(u),this.__state!==v&&c!==v))for(o=u.wrap||i.type,f=m[o],l=f.length;(l-=1)>=0;)if(_=f[l],y=i[_])if(d(y))for(h=y.length;(h-=1)>=0;)y[h]&&(u=o===p.ObjectExpression&&"properties"===f[l]?new a(y[h],[_,h],"Property",new s(y,h)):new a(y[h],[_,h],null,new s(y,h)),n.push(u));else n.push(new a(y,_,null,new s(i,_)))}else if(u=r.pop(),c=this.__execute(t.leave,u),void 0!==c&&c!==g&&c!==v&&u.ref.replace(c),this.__state===g||c===g)return x.root;return x.root},e.version="1.5.1-dev",e.Syntax=p,e.traverse=u,e.replace=l,e.attachComments=f,e.VisitorKeys=m,e.VisitorOption=y,e.Controller=c})},function(e,t,n){!function(){"use strict";t.code=n(348),t.keyword=n(349)}()},function(e,t){!function(){"use strict";function t(e){return e>=48&&e<=57}function n(e){return t(e)||97<=e&&e<=102||65<=e&&e<=70}function r(e){return e>=48&&e<=55}function i(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0}function o(e){return 10===e||13===e||8232===e||8233===e}function s(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||92===e||e>=128&&c.NonAsciiIdentifierStart.test(String.fromCharCode(e))}function a(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&c.NonAsciiIdentifierPart.test(String.fromCharCode(e))}var c;c={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԧԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠࢢ-ࢬࣤ-ࣾऀ-ॣ०-९ॱ-ॷॹ-ॿঁ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఁ-ఃఅ-ఌఎ-ఐఒ-నప-ళవ-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤜᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶᴀ-ᷦ᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚗꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺꩻꪀ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︦︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")},e.exports={isDecimalDigit:t,isHexDigit:n,isOctalDigit:r,isWhiteSpace:i,isLineTerminator:o,isIdentifierStart:s,isIdentifierPart:a}}()},function(e,t,n){!function(){"use strict";function t(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function r(e,t){return!(!t&&"yield"===e)&&i(e,t)}function i(e,n){if(n&&t(e))return!0;switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}}function o(e){return"eval"===e||"arguments"===e}function s(e){var t,n,r;if(0===e.length)return!1;if(r=e.charCodeAt(0),!a.isIdentifierStart(r)||92===r)return!1;for(t=1,n=e.length;t0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},i.prototype._serializeMappings=function(){for(var e,t=0,n=1,r=0,i=0,a=0,c=0,u="",l=this._mappings.toArray(),h=0,f=l.length;h0){if(!s.compareByGeneratedPositions(e,l[h-1]))continue;u+=","}u+=o.encode(e.generatedColumn-t),t=e.generatedColumn,null!=e.source&&(u+=o.encode(this._sources.indexOf(e.source)-c),c=this._sources.indexOf(e.source),u+=o.encode(e.originalLine-1-i),i=e.originalLine-1,u+=o.encode(e.originalColumn-r),r=e.originalColumn,null!=e.name&&(u+=o.encode(this._names.indexOf(e.name)-a),a=this._names.indexOf(e.name)))}return u},i.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=s.relative(t,e));var n=s.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null},this)},i.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},i.prototype.toString=function(){return JSON.stringify(this)},t.SourceMapGenerator=i}.call(t,n,t,e),!(void 0!==r&&(e.exports=r))},function(e,t,n){var r;r=function(e,t,r){function i(e){return e<0?(-e<<1)+1:(e<<1)+0}function o(e){var t=1===(1&e),n=e>>1;return t?-n:n}var s=n(353),a=5,c=1<>>=a,r>0&&(t|=l),n+=s.encode(t);while(r>0);return n},t.decode=function(e,t){var n,r,i=0,c=e.length,h=0,f=0;do{if(i>=c)throw new Error("Expected more digits in base 64 VLQ value.");r=s.decode(e.charAt(i++)),n=!!(r&l),r&=u,h+=r<=0;u--)r=a[u],"."===r?a.splice(u,1):".."===r?c++:c>0&&(""===r?(a.splice(u+1,c),c=0):(a.splice(u,2),c--));return t=a.join("/"),""===t&&(t=s?"/":"."),n?(n.path=t,o(n)):t}function a(e,t){""===e&&(e="."),""===t&&(t=".");var n=i(t),r=i(e);if(r&&(e=r.path||"/"),n&&!n.scheme)return r&&(n.scheme=r.scheme),o(n);if(n||t.match(y))return t;if(r&&!r.host&&!r.path)return r.host=t,o(r);var a="/"===t.charAt(0)?t:s(e.replace(/\/+$/,"")+"/"+t);return r?(r.path=a,o(r)):a}function c(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");var n=i(e);return"/"==t.charAt(0)&&n&&"/"==n.path?t.slice(1):0===t.indexOf(e+"/")?t.substr(e.length+1):t}function u(e){return"$"+e}function l(e){return e.substr(1)}function h(e,t){var n=e||"",r=t||"";return(n>r)-(n=0&&en||r==n&&o>=i||s.compareByGeneratedPositions(e,t)<=0}function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var s=n(354);o.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},o.prototype.add=function(e){i(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(s.compareByGeneratedPositions),this._sorted=!0),this._array},t.MappingList=o}.call(t,n,t,e),!(void 0!==r&&(e.exports=r))},function(e,t,n){var r;r=function(e,t,r){function i(e){var t=e;"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,"")));var n=o.getArg(t,"version"),r=o.getArg(t,"sources"),i=o.getArg(t,"names",[]),s=o.getArg(t,"sourceRoot",null),c=o.getArg(t,"sourcesContent",null),u=o.getArg(t,"mappings"),l=o.getArg(t,"file",null);if(n!=this._version)throw new Error("Unsupported version: "+n);r=r.map(o.normalize),this._names=a.fromArray(i,!0),this._sources=a.fromArray(r,!0),this.sourceRoot=s,this.sourcesContent=c,this._mappings=u,this.file=l}var o=n(354),s=n(358),a=n(355).ArraySet,c=n(352);i.fromSourceMap=function(e){var t=Object.create(i.prototype);return t._names=a.fromArray(e._names.toArray(),!0),t._sources=a.fromArray(e._sources.toArray(),!0),t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file,t.__generatedMappings=e._mappings.toArray().slice(),t.__originalMappings=e._mappings.toArray().slice().sort(o.compareByOriginalPositions),t},i.prototype._version=3,Object.defineProperty(i.prototype,"sources",{get:function(){return this._sources.toArray().map(function(e){return null!=this.sourceRoot?o.join(this.sourceRoot,e):e},this)}}),i.prototype.__generatedMappings=null,Object.defineProperty(i.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__generatedMappings}}),i.prototype.__originalMappings=null,Object.defineProperty(i.prototype,"_originalMappings",{get:function(){return this.__originalMappings||(this.__generatedMappings=[],this.__originalMappings=[],this._parseMappings(this._mappings,this.sourceRoot)),this.__originalMappings}}),i.prototype._nextCharIsMappingSeparator=function(e){var t=e.charAt(0);return";"===t||","===t},i.prototype._parseMappings=function(e,t){for(var n,r=1,i=0,s=0,a=0,u=0,l=0,h=e,f={};h.length>0;)if(";"===h.charAt(0))r++,h=h.slice(1),i=0;else if(","===h.charAt(0))h=h.slice(1);else{if(n={},n.generatedLine=r,c.decode(h,f),n.generatedColumn=i+f.value,i=n.generatedColumn,h=f.rest,h.length>0&&!this._nextCharIsMappingSeparator(h)){if(c.decode(h,f),n.source=this._sources.at(u+f.value),u+=f.value,h=f.rest,0===h.length||this._nextCharIsMappingSeparator(h))throw new Error("Found a source, but no line and column");if(c.decode(h,f),n.originalLine=s+f.value,s=n.originalLine,n.originalLine+=1,h=f.rest,0===h.length||this._nextCharIsMappingSeparator(h))throw new Error("Found a source and line, but no column");c.decode(h,f),n.originalColumn=a+f.value,a=n.originalColumn,h=f.rest, +h.length>0&&!this._nextCharIsMappingSeparator(h)&&(c.decode(h,f),n.name=this._names.at(l+f.value),l+=f.value,h=f.rest)}this.__generatedMappings.push(n),"number"==typeof n.originalLine&&this.__originalMappings.push(n)}this.__generatedMappings.sort(o.compareByGeneratedPositions),this.__originalMappings.sort(o.compareByOriginalPositions)},i.prototype._findMapping=function(e,t,n,r,i){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return s.search(e,t,i)},i.prototype.computeColumnSpans=function(){for(var e=0;e=0){var r=this._generatedMappings[n];if(r.generatedLine===t.generatedLine){var i=o.getArg(r,"source",null);return null!=i&&null!=this.sourceRoot&&(i=o.join(this.sourceRoot,i)),{source:i,line:o.getArg(r,"originalLine",null),column:o.getArg(r,"originalColumn",null),name:o.getArg(r,"name",null)}}}return{source:null,line:null,column:null,name:null}},i.prototype.sourceContentFor=function(e){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=o.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var t;if(null!=this.sourceRoot&&(t=o.urlParse(this.sourceRoot))){var n=e.replace(/^file:\/\//,"");if("file"==t.scheme&&this._sources.has(n))return this.sourcesContent[this._sources.indexOf(n)];if((!t.path||"/"==t.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}throw new Error('"'+e+'" is not in the SourceMap.')},i.prototype.generatedPositionFor=function(e){var t={source:o.getArg(e,"source"),originalLine:o.getArg(e,"line"),originalColumn:o.getArg(e,"column")};null!=this.sourceRoot&&(t.source=o.relative(this.sourceRoot,t.source));var n=this._findMapping(t,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions);if(n>=0){var r=this._originalMappings[n];return{line:o.getArg(r,"generatedLine",null),column:o.getArg(r,"generatedColumn",null),lastColumn:o.getArg(r,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},i.prototype.allGeneratedPositionsFor=function(e){var t={source:o.getArg(e,"source"),originalLine:o.getArg(e,"line"),originalColumn:1/0};null!=this.sourceRoot&&(t.source=o.relative(this.sourceRoot,t.source));var n=[],r=this._findMapping(t,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions);if(r>=0)for(var i=this._originalMappings[r];i&&i.originalLine===t.originalLine;)n.push({line:o.getArg(i,"generatedLine",null),column:o.getArg(i,"generatedColumn",null),lastColumn:o.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[--r];return n.reverse()},i.GENERATED_ORDER=1,i.ORIGINAL_ORDER=2,i.prototype.eachMapping=function(e,t,n){var r,s=t||null,a=n||i.GENERATED_ORDER;switch(a){case i.GENERATED_ORDER:r=this._generatedMappings;break;case i.ORIGINAL_ORDER:r=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var c=this.sourceRoot;r.map(function(e){var t=e.source;return null!=t&&null!=c&&(t=o.join(c,t)),{source:t,generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:e.name}}).forEach(e,s)},t.SourceMapConsumer=i}.call(t,n,t,e),!(void 0!==r&&(e.exports=r))},function(e,t,n){var r;r=function(e,t,n){function r(e,t,n,i,o){var s=Math.floor((t-e)/2)+e,a=o(n,i[s],!0);return 0===a?s:a>0?t-s>1?r(s,t,n,i,o):s:s-e>1?r(e,s,n,i,o):e<0?-1:e}t.search=function(e,t,n){return 0===t.length?-1:r(-1,t.length,e,t,n)}}.call(t,n,t,e),!(void 0!==r&&(e.exports=r))},function(e,t,n){var r;r=function(e,t,r){function i(e,t,n,r,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==i?null:i,this[u]=!0,null!=r&&this.add(r)}var o=n(351).SourceMapGenerator,s=n(354),a=/(\r?\n)/,c=10,u="$$$isSourceNode$$$";i.fromStringWithSourceMap=function(e,t,n){function r(e,t){if(null===e||void 0===e.source)o.add(t);else{var r=n?s.join(n,e.source):e.source;o.add(new i(e.originalLine,e.originalColumn,r,t,e.name))}}var o=new i,c=e.split(a),u=function(){var e=c.shift(),t=c.shift()||"";return e+t},l=1,h=0,f=null;return t.eachMapping(function(e){if(null!==f){if(!(l0&&(f&&r(f,u()),o.add(c.join(""))),t.sources.forEach(function(e){var r=t.sourceContentFor(e);null!=r&&(null!=n&&(e=s.join(n,e)),o.setSourceContent(e,r))}),o},i.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},i.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},i.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n0){for(t=[],n=0;n=0.10.0"},homepage:"http://github.com/Constellation/escodegen",licenses:[{type:"BSD",url:"http://github.com/Constellation/escodegen/raw/master/LICENSE.BSD"}],main:"escodegen.js",maintainers:[{name:"Yusuke Suzuki",email:"utatane.tea@gmail.com",url:"http://github.com/Constellation"}],name:"escodegen",optionalDependencies:{"source-map":"~0.1.33"},repository:{type:"git",url:"git+ssh://git@github.com/Constellation/escodegen.git"},scripts:{build:"cjsify -a path: tools/entry-point.js > escodegen.browser.js","build-min":"cjsify -ma path: tools/entry-point.js > escodegen.browser.min.js",lint:"gulp lint",release:"node tools/release.js",test:"gulp travis","unit-test":"gulp test"},version:"1.3.3"}},function(e,t){e.exports={_args:[["jison@0.4.18","/Users/hayley/Dev/bondage.js"]],_from:"jison@0.4.18",_id:"jison@0.4.18",_inBundle:!1,_integrity:"sha512-FKkCiJvozgC7VTHhMJ00a0/IApSxhlGsFIshLW6trWJ8ONX2TQJBBz6DlcO1Gffy4w9LT+uL+PA+CVnUSJMF7w==",_location:"/jison",_phantomChildren:{},_requested:{type:"version",registry:!0,raw:"jison@0.4.18",name:"jison",escapedName:"jison",rawSpec:"0.4.18",saveSpec:null,fetchSpec:"0.4.18"},_requiredBy:["/"],_resolved:"https://registry.npmjs.org/jison/-/jison-0.4.18.tgz",_spec:"0.4.18",_where:"/Users/hayley/Dev/bondage.js",author:{name:"Zach Carter",email:"zach@carter.name",url:"http://zaa.ch"},bin:{jison:"lib/cli.js"},bugs:{url:"http://github.com/zaach/jison/issues",email:"jison@librelist.com"},dependencies:{JSONSelect:"0.4.0",cjson:"0.3.0","ebnf-parser":"0.1.10",escodegen:"1.3.x",esprima:"1.1.x","jison-lex":"0.3.x","lex-parser":"~0.1.3",nomnom:"1.5.2"},description:"A parser generator with Bison's API",devDependencies:{browserify:"2.x.x",jison:"0.4.x",test:"0.6.x","uglify-js":"~2.4.0"},engines:{node:">=0.4"},homepage:"http://jison.org",keywords:["jison","bison","yacc","parser","generator","lexer","flex","tokenizer","compiler"],license:"MIT",main:"lib/jison",name:"jison",preferGlobal:!0,repository:{type:"git",url:"git://github.com/zaach/jison.git"},scripts:{test:"node tests/all-tests.js"},version:"0.4.18"}},function(e,t){"use strict";function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function e(){i(this,e)},s=function e(){i(this,e)},a=function e(){i(this,e)},c=function e(){i(this,e)},u=function e(){i(this,e)},l=function e(){i(this,e)},h=function e(){i(this,e)},f=function e(){i(this,e)};e.exports={types:{Text:o,Shortcut:s,Link:a,Conditional:c,Assignment:u,Literal:l,Expression:h,Command:f},RootNode:function e(t){i(this,e),this.name="RootNode",this.dialogNodes=t||[]},DialogNode:function e(t,n){i(this,e),this.type="DialogNode",this.name=n||null,this.content=t},DialogOptionNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="DialogOptionNode",o.text=e,o.content=r,o}return r(t,e),t}(s),ConditionalDialogOptionNode:function(e){function t(e,r,o){i(this,t);var s=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return s.type="ConditionalDialogOptionNode",s.text=e,s.content=r,s.conditionalExpression=o,s}return r(t,e),t}(s),IfNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="IfNode",o.expression=e,o.statement=r,o}return r(t,e),t}(c),IfElseNode:function(e){function t(e,r,o){i(this,t);var s=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return s.type="IfElseNode",s.expression=e,s.statement=r,s.elseStatement=o,s}return r(t,e),t}(c),ElseNode:function(e){function t(e){i(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.type="ElseNode",r.statement=e,r}return r(t,e),t}(c),ElseIfNode:function(e){function t(e,r,o){i(this,t);var s=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return s.type="ElseIfNode",s.expression=e,s.statement=r,s.elseStatement=o,s}return r(t,e),t}(c),TextNode:function(e){function t(e){i(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.type="TextNode",r.text=e,r}return r(t,e),t}(o),LinkNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="LinkNode",o.text=e||null,o.identifier=r||o.text,o.selectable=!0,o}return r(t,e),t}(a),NumericLiteralNode:function(e){function t(e){i(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.type="NumericLiteralNode",r.numericLiteral=e,r}return r(t,e),t}(l),StringLiteralNode:function(e){function t(e){i(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.type="StringLiteralNode",r.stringLiteral=e,r}return r(t,e),t}(l),BooleanLiteralNode:function(e){function t(e){i(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.type="BooleanLiteralNode",r.booleanLiteral=e,r}return r(t,e),t}(l),VariableNode:function(e){function t(e){i(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.type="VariableNode",r.variableName=e,r}return r(t,e),t}(l),UnaryMinusExpressionNode:function(e){function t(e){i(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.type="UnaryMinusExpressionNode",r.expression=e,r}return r(t,e),t}(h),ArithmeticExpressionNode:function(e){function t(e){i(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.type="ArithmeticExpressionNode",r.expression=e,r}return r(t,e),t}(h),ArithmeticExpressionAddNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="ArithmeticExpressionAddNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),ArithmeticExpressionMinusNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="ArithmeticExpressionMinusNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),ArithmeticExpressionMultiplyNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="ArithmeticExpressionMultiplyNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),ArithmeticExpressionDivideNode:function e(t,n){i(this,e),this.type="ArithmeticExpressionDivideNode",this.expression1=t,this.expression2=n},BooleanExpressionNode:function(e){function t(e){i(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.type="BooleanExpressionNode",r.booleanExpression=e,r}return r(t,e),t}(h),NegatedBooleanExpressionNode:function(e){function t(e){i(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.type="NegatedBooleanExpressionNode",r.booleanExpression=e,r}return r(t,e),t}(h),BooleanOrExpressionNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="BooleanOrExpressionNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),BooleanAndExpressionNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="BooleanAndExpressionNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),BooleanXorExpressionNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="BooleanXorExpressionNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),EqualToExpressionNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="EqualToExpressionNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),NotEqualToExpressionNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="EqualToExpressionNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),GreaterThanExpressionNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="GreaterThanExpressionNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),GreaterThanOrEqualToExpressionNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="GreaterThanOrEqualToExpressionNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),LessThanExpressionNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="LessThanExpressionNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),LessThanOrEqualToExpressionNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="LessThanOrEqualToExpressionNode",o.expression1=e,o.expression2=r,o}return r(t,e),t}(h),SetVariableEqualToNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="SetVariableEqualToNode",o.variableName=e,o.expression=r,o}return r(t,e),t}(u),SetVariableAddNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="SetVariableAddNode",o.variableName=e,o.expression=r,o}return r(t,e),t}(u),SetVariableMinusNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="SetVariableMinusNode",o.variableName=e,o.expression=r,o}return r(t,e),t}(u),SetVariableMultipyNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="SetVariableMultipyNode",o.variableName=e,o.expression=r,o}return r(t,e),t}(u),SetVariableDivideNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="SetVariableDivideNode",o.variableName=e,o.expression=r,o}return r(t,e),t}(u),FunctionResultNode:function(e){function t(e,r){i(this,t);var o=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type="FunctionResultNode",o.functionName=e,o.args=r,o}return r(t,e),t}(l),CommandNode:function(e){function t(e){i(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return r.type="CommandNode",r.command=e,r}return r(t,e),t}(f)}},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;nthis.previousLevelOfIndentation)return this.indentation.push([e,!0]),this.shouldTrackNextIndentation=!1,this.yylloc.first_column=this.yylloc.last_column,this.yylloc.last_column+=e,this.yytext="","Indent";if(e=this.lines.length}},{key:"isAtTheEndOfLine",value:function(){return this.yylloc.last_column>=this.getCurrentLine().length}}]),e}();e.exports=s},function(e,t,n){"use strict";function r(){return{base:(new i).addTransition("BeginCommand","command",!0).addTransition("OptionStart","link",!0).addTransition("ShortcutOption","shortcutOption").addTextRule("Text"),shortcutOption:(new i).setTrackNextIndentation(!0).addTransition("BeginCommand","expression",!0).addTextRule("Text","base"),command:(new i).addTransition("If","expression").addTransition("Else").addTransition("ElseIf","expression").addTransition("EndIf").addTransition("Set","assignment").addTransition("EndCommand","base",!0).addTransition("CommandCall","commandOrExpression").addTextRule("Text"),commandOrExpression:(new i).addTransition("EndCommand","base",!0).addTextRule("Text"),assignment:(new i).addTransition("Variable").addTransition("EqualToOrAssign","expression").addTransition("AddAssign","expression").addTransition("MinusAssign","expression").addTransition("MultiplyAssign","expression").addTransition("DivideAssign","expression"),expression:(new i).addTransition("EndCommand","base").addTransition("Number").addTransition("String").addTransition("LeftParen").addTransition("RightParen").addTransition("EqualTo").addTransition("EqualToOrAssign").addTransition("NotEqualTo").addTransition("GreaterThanOrEqualTo").addTransition("GreaterThan").addTransition("LessThanOrEqualTo").addTransition("LessThan").addTransition("Add").addTransition("Minus").addTransition("Multiply").addTransition("Divide").addTransition("And").addTransition("Or").addTransition("Xor").addTransition("Not").addTransition("Variable").addTransition("Comma").addTransition("True").addTransition("False").addTransition("Null").addTransition("Identifier").addTextRule(),link:(new i).addTransition("OptionEnd","base",!0).addTransition("OptionDelimit","linkDestination",!0).addTextRule("Text"),linkDestination:(new i).addTransition("Identifier").addTransition("OptionEnd","base")}}var i=n(365);e.exports={makeStates:r}},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var i=function(){function e(e,t){for(var n=0;n>/,Variable:/\$([A-Za-z0-9_.])+/,ShortcutOption:/->/,OptionStart:/\[\[/,OptionDelimit:/\|/,OptionEnd:/\]\]/,If:/if(?!\w)/,ElseIf:/elseif(?!\w)/,Else:/else(?!\w)/,EndIf:/endif(?!\w)/,Set:/set(?!\w)/,True:/true(?!\w)/,False:/false(?!\w)/,Null:/null(?!\w)/,LeftParen:/\(/,RightParen:/\)/,Comma:/,/,EqualTo:/(==|is(?!\w)|eq(?!\w))/,GreaterThan:/(>|gt(?!\w))/,GreaterThanOrEqualTo:/(>=|gte(?!\w))/,LessThan:/(<|lt(?!\w))/,LessThanOrEqualTo:/(<=|lte(?!\w))/,NotEqualTo:/(!=|neq(?!\w))/,Or:/(\|\||or(?!\w))/,And:/(&&|and(?!\w))/,Xor:/(\^|xor(?!\w))/,Not:/(!|not(?!\w))/,EqualToOrAssign:/(=|to(?!\w))/,Add:/\+/,Minus:/-/,Multiply:/\*/,Divide:/\//,AddAssign:/\+=/,MinusAssign:/-=/,MultiplyAssign:/\*=/,DivideAssign:/\/=/,Comment:"//",Identifier:/[a-zA-Z0-9_:.]+/,CommandCall:/([^>]|(?!>)[^>]+>)+(?=>>)/,Text:/.*/};e.exports=n},function(e,t){"use strict";function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var o=function(){function e(e,t){for(var n=0;n=this.options.length)throw new Error("Cannot select option #"+e+", there are only "+this.options.length+" options");this.selected=e}}]),t}(s);e.exports={Result:s,TextResult:a,CommandResult:c,OptionsResult:u}},function(e,t){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var r=function(){function e(e,t){for(var n=0;n>/g; - const optionsPattern = /\[\[(Answer:([^|]+?)\|)?([^|]+?)\]\]/g; - const parse = function(raw) { - try { - let {body} = raw; - const links = {}; - const options = []; - const commands = []; - let rawCommand, rawOption; - while (rawCommand = commandPattern.exec(body)) { - commands.push(rawCommand[1]); - } - while (rawOption = optionsPattern.exec(body)) { - const option = rawOption[2] || rawOption[3]; - // eslint-disable-next-line prefer-destructuring - links[option] = rawOption[3]; - options.push(option); - } - body = body - .replace(commandPattern, '') - .replace(optionsPattern, '') - .trim(); - const tags = raw.tags.split(' ').filter(elt => elt); // filter out empty strings - return { - body, - commands, - options, - tags, - links - }; - } catch (e) { - console.error('An error occured while attempting to parse a node ', raw); - throw e; + const characterLine = /^(?:([\S]+):)?\s*([\s\S]+)/; + const soundCall = /^sound\("([\s\S]*)"\)$/; + const roomCall = /^room\("([\s\S]*)"\)$/; + const waitCall = /^wait\(([0-9]+)\)$/; + const playSound = function(sound) { + if (!(sound in ct.res.sounds)) { + console.error(`Skipping an attempt to play a non-existent sound ${sound} in a YarnStory`); + return; } + ct.sound.spawn(sound); }; - class YarnStory { - constructor(data) { - if (!data.length) { - throw new Error('An empty entity was given instead of a Yarn project'); - } - this.nodes = {}; - for (const node of data) { - node.title = node.title.trim(); - this.nodes[node.title] = node; + const switchRoom = function(room) { + if (!(room in ct.rooms.templates)) { + throw new Error(`An attempt to switch to a non-existent room ${room} in a YarnStory`); + } + ct.rooms.switch(room); + }; + + // Maybe it won't be needed someday + /** + * Parses "magic" functions and executes them + * + * @param {String} command A trimmed command string + * @param {YarnStory} story The story that runs this command + * @returns {Boolean|String} Returns `false` if no command was executied, + * `true` if a synchronous function was executed, and `"async"` + * if an asynchronous function was called. + */ + const ctCommandParser = function(command, story) { + if (soundCall.test(command)) { + playSound(soundCall.exec(command)[1]); + return true; + } else if (roomCall.test(command)) { + switchRoom(roomCall.exec(command)[1]); + return true; + } else if (waitCall.test(command)) { + const ms = parseInt(waitCall.exec(command)[1], 10); + if (!ms && ms !== 0) { + throw Error(`Invalid command ${command}: wrong number format.`); } - this.startingNode = this.nodes.Start || data[0]; - this.start(); + ct.u.wait(ms) + .then(() => story.next()); + return 'async'; + } + return false; + }; + const extendWithCtFunctions = function(bondage) { + const fs = bondage.functions; + fs.sound = playSound; + fs.room = switchRoom; + }; + class YarnStory extends PIXI.utils.EventEmitter { + /** + * Creates a new YarnStory + * @param {Object} data The exported, inlined Yarn's .json file + * @param {String} [first] The starting node's name from which to run the story. Defaults to "Start" + * @returns {YarnStory} self + */ + constructor(data, first) { + super(); + this.bondage = new bondage.Runner(); + extendWithCtFunctions(this.bondage); + this.bondage.load(data); + + this.nodes = this.bondage.yarnNodes; + this.startingNode = first? this.nodes[first] : this.nodes.Start; } + + /** + * Starts the story, essentially jumping to a starting node + * @returns {void} + */ start() { this.jump(this.startingNode.title); + this.emit('start', this.scene); } - get parsed() { - // eslint-disable-next-line no-underscore-dangle - return this.$parsed || (this.$parsed = parse(this.raw)); - } - get options() { - return this.parsed.options; - } + /** + * "Says" the given option, advancing the story further on a taken branch, if this dialogue option exists. + * @param {String} line The line to say + * @returns {void} + */ say(line) { - if (!(line in this.parsed.links)) { - this.log(); - throw new Error(`There is no such option as "${line}". It could be a typo, or maybe you are using a title instead of a dialogue option.`); + const ind = this.options.indexOf(line); + if (ind === -1) { + throw new Error(`There is no line "${line}". Is it a typo?`); } - this.jump(this.parsed.links[line]); + this.currentStep.select(ind); + this.next(); } + /** + * Manually moves the story to a node with a given title + * + * @param {String} title The title of the needed node + * @returns {void} + */ jump(title) { if (!(title in this.nodes)) { - this.log(); throw new Error(`Could not find a node called "${title}".`); } - this.previousNode = this.raw; - this.raw = this.nodes[title]; - delete this.$parsed; + this.position = 0; + this.scene = this.bondage.run(title); + this.next(); } + /** + * Moves back to the previous node, but just once + * + * @returns {void} + */ back() { this.jump(this.previousNode.title); } + /** + * Naturally advances in the story, if no options are available + * @returns {void} + */ + next() { + this.currentStep = this.scene.next().value; + if (this.currentStep instanceof bondage.TextResult || + this.currentStep instanceof bondage.CommandResult) { + if (this.raw !== this.currentStep.data) { + this.previousNode = this.raw; + this.raw = this.currentStep.data; + this.emit('newnode', this.currentStep); + } + } + if (this.currentStep) { + if (this.currentStep instanceof bondage.TextResult) { + // Optionally, skip empty lines + if ([/*%skipEmpty%*/][0] && !this.text.trim()) { + this.next(); + return; + } + this.emit('text', this.text); + } else if (this.currentStep instanceof bondage.CommandResult) { + if ([/*%magic%*/][0]) { + const commandStatus = ctCommandParser(this.command.trim(), this); + if (commandStatus && commandStatus !== 'async') { + this.next(); // Automatically advance the story after magic commands + // Async commands should call `this.next()` by themselves + return; + } else if (commandStatus === 'async') { + return; + } + } + this.emit('command', this.command.trim()); + } else if (this.currentStep instanceof bondage.OptionsResult) { + this.emit('options', this.options); + } + this.emit('next', this.currentStep); + } else { + this.emit('drained', this.currentStep); + } + } - + /** + * Returns the current text line, including the character's name + * + * @returns {String|Boolean} Returns `false` if the current position is not a speech line, + * otherwise returns the current line. + */ get text() { - return this.parsed.body; + if (this.currentStep instanceof bondage.TextResult) { + return this.currentStep.text; + } + return false; + } + /** + * Returns the character's name that says the current text line. + * It is expected that your character's names will be in one word, + * otherwise they will be detected as parts of the speech line. + * E.g. `Cat: Hello!` will return `'Cat'`, but `Kitty cat: Hello!` + * will return `undefined`. + * + * @return {Boolean|String|undefined} Returns `false` if the current position is not a speech line, + * `undefined` if the line does not have a character specified, and a string of your character + * if it was specified. + */ + get character() { + return this.text && characterLine.exec(this.text)[1]; } + + /** + * Returns the the current text line, without a character. + * It is expected that your character's names will be in one word, + * otherwise they will be detected as parts of the speech line. + * E.g. `Cat: Hello!` will return `'Cat'`, but `Kitty cat: Hello!` + * will return `undefined`. + * + * @return {String|Boolean} The speech line or `false` if the current position + * is not a speech line. + */ get body() { - return this.parsed.body; + return this.text && characterLine.exec(this.text)[2]; } + /** + * Returns the title of the current node + * + * @returns {String} The title of the current node + */ get title() { return this.raw.title; } - get commands() { - return this.parsed.commands; + /** + * Returns the current command + * + * @returns {String|Boolean} The current command, or `false` if the current + * position is not a command. + */ + get command() { + if (this.currentStep instanceof bondage.CommandResult) { + return this.currentStep.text; + } + return false; } + /** + * Returns the tags of the current node + * + * @returns {String} The tags of the current node. + */ get tags() { - return this.parsed.tags; + return this.raw.tags; } - - log() { - setTimeout(() => { - // eslint-disable-next-line no-console - console.log('The story in question is ', this); - // eslint-disable-next-line no-console - console.log('The current node is ', this.raw); - // eslint-disable-next-line no-console - console.log('The parsed data is ', this.parsed); - }, 0); + /** + * Returns currently possible dialogue options, if there are any. + * @returns {Array} An array of possible dialogue lines. + */ + get options() { + if (this.currentStep instanceof bondage.OptionsResult) { + return this.currentStep.options; + } + return false; + } + /** + * Current variables + * @type {Object} + */ + get variables() { + return this.bondage.variables; + } + /** + * Checks whether a given node was visited + * @param {String} title The node's title to check against + * @returns {Boolean} Returns `true` if the specified node was visited, `false` otherwise. + */ + visited(title) { + return (title in this.bondage.visited && this.bondage.visited[title]); } } - + ct.yarn = { + /** + * Opens the given JSON object and returns a YarnStory object, ready for playing. + * @param {Object} data The JSON object of a Yarn story + * @returns {YarnStory} The YarnStory object + */ openStory(data) { return new YarnStory(data); }, + /** + * Opens the given JSON object and returns a promise that resolves into a YarnStory. + * @param {String} url The link to the JSON file, relative or absolute. Use `myProject.json` + * for stories stored in your `project/include` directory. + * @returns {Promise} A promise that resolves into a YarnStory object after downloading the story + */ openFromFile(url) { return fetch(url) .then(data => data.json()) diff --git a/app/data/ct.libs/yarn/injects/htmltop.html b/app/data/ct.libs/yarn/injects/htmltop.html new file mode 100644 index 000000000..7ca4667d2 --- /dev/null +++ b/app/data/ct.libs/yarn/injects/htmltop.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/data/ct.libs/yarn/module.json b/app/data/ct.libs/yarn/module.json index 4607b3e36..bb145affe 100644 --- a/app/data/ct.libs/yarn/module.json +++ b/app/data/ct.libs/yarn/module.json @@ -6,5 +6,20 @@ "name": "Cosmo Myzrail Gorynych", "mail": "admin@nersta.ru" }] - } + }, + "fields": [{ + "name": "Skip empty lines", + "help": "Allows you to write empty lines in YarnEditor for better readability.", + "key": "skipEmpty", + "id": "skipEmpty", + "default": true, + "type": "checkbox" + }, { + "name": "Use magic commands", + "help": "Automatically execute commands `<>`, `<>` and `<>` and call `next()` after them.", + "key": "magic", + "id": "magic", + "default": true, + "type": "checkbox" + }] } \ No newline at end of file diff --git a/src/examples/yarn.ict b/src/examples/yarn.ict index a40353c71..ebe535619 100644 --- a/src/examples/yarn.ict +++ b/src/examples/yarn.ict @@ -1,6 +1,6 @@ { "ctjsVersion": "1.0.2", - "notes": "/* empty */", + "notes": "There is a number of interesting places to start learning the demo:\n\n— rooms' OnCreate events\n— Settings > Scripts > storyEngine\n— OptionButton and NextButton types, as they advance the story by player's interactions.", "libs": { "place": { "gridX": 512, @@ -16,7 +16,11 @@ "akatemplate": { "csscss": "body {\n background: #fff;\n}" }, - "yarn": {} + "yarn": { + "skipEmpty": true, + "magic": true + }, + "tween": {} }, "textures": [ { @@ -151,24 +155,67 @@ "lastmod": 1569837324744 }, { - "name": "Button", + "name": "OptionButton", "depth": 0, - "oncreate": "this.text = new PIXI.Text(this.option, {\n fill: 0x446ADB,\n fontWeight: 600,\n fontSize: 32,\n wordWrap: true,\n wordWrapWidth: 900,\n align: 'center'\n});\nthis.text.anchor.x = this.text.anchor.y = 0.5;\nthis.addChild(this.text);", - "onstep": "if (ct.mouse.hovers(this)) {\n if (ct.mouse.pressed) {\n ct.room.story.say(this.option);\n uiMaker();\n }\n}", + "oncreate": "this.text = new PIXI.Text(this.option, {\n fill: 0x446ADB,\n fontWeight: 600,\n fontSize: 32,\n wordWrap: true,\n wordWrapWidth: 900,\n align: 'center'\n});\nthis.text.anchor.x = this.text.anchor.y = 0.5;\nthis.addChild(this.text);\n\nthis.scale.x = this.scale.y = 0;\nct.tween.add({\n obj: this.scale,\n fields: {\n x: 1,\n y: 1\n },\n duration: 350,\n curve: ct.tween.easeOutQuad\n});\n ", + "onstep": "if (ct.mouse.hovers(this)) {\n if (ct.mouse.pressed) {\n ct.room.story.say(this.option);\n }\n}", "ondraw": "", "ondestroy": "", "uid": "cf5c44b2-f55a-4e18-a941-f7cdf5aecd0f", "texture": "e0cbccef-93ee-4c8a-ab19-4fcef639963c", "extends": {}, - "lastmod": 1569840402254 + "lastmod": 1570008110224 + }, + { + "name": "NextButton", + "depth": 0, + "oncreate": "this.text = new PIXI.Text(this.option, {\n fill: 0x446ADB,\n fontWeight: 600,\n fontSize: 32,\n wordWrap: true,\n wordWrapWidth: 900,\n align: 'center'\n});\nthis.text.anchor.x = this.text.anchor.y = 0.5;\nthis.addChild(this.text);\n\nthis.scale.x = this.scale.y = 0;\nct.tween.add({\n obj: this.scale,\n fields: {\n x: 1,\n y: 1\n },\n duration: 350,\n curve: ct.tween.easeOutQuad\n});\n ", + "onstep": "if (ct.mouse.hovers(this)) {\n if (ct.mouse.pressed) {\n ct.room.story.next();\n this.kill = true;\n }\n}", + "ondraw": "", + "ondestroy": "", + "uid": "4340a6a4-65fa-4bcf-b950-38716097f29e", + "texture": "e0cbccef-93ee-4c8a-ab19-4fcef639963c", + "extends": {}, + "lastmod": 1570008068600 + }, + { + "name": "Blurb", + "depth": 0, + "oncreate": "this.text = new PIXI.Text(this.blurb, {\n fill: 0x446ADB,\n fontSize: 32,\n wordWrap: true,\n wordWrapWidth: 1024\n});\nthis.addChild(this.text);\nthis.opacity = 0;\nthis.y += 50;\n\nct.tween.add({\n obj: this,\n fields: {\n y: this.y - 50,\n opacity: 1\n },\n duration: 500,\n curve: ct.tween.easeOutQuad\n})\n.then(() => {\n ct.room.story.next();\n});", + "onstep": "this.move();", + "ondraw": "", + "ondestroy": "", + "uid": "04a0aea0-f448-4920-97ad-f98906ac0d7c", + "texture": -1, + "extends": {}, + "lastmod": 1569990828755 + }, + { + "name": "RestartButton", + "depth": 0, + "oncreate": "this.text = new PIXI.Text('Restart', {\n fill: 0x446ADB,\n fontWeight: 600,\n fontSize: 32,\n wordWrap: true,\n wordWrapWidth: 900,\n align: 'center'\n});\nthis.text.anchor.x = this.text.anchor.y = 0.5;\nthis.addChild(this.text);\n\nthis.scale.x = this.scale.y = 0;\nct.tween.add({\n obj: this.scale,\n fields: {\n x: 1,\n y: 1\n },\n duration: 350,\n curve: ct.tween.easeOutQuad\n});\n ", + "onstep": "if (ct.mouse.hovers(this)) {\n if (ct.mouse.pressed) {\n ct.rooms.switch(ct.room.name);\n this.kill = true;\n }\n}", + "ondraw": "", + "ondestroy": "", + "uid": "9a5d6ecd-82b4-4b26-827b-08904fbaf962", + "texture": "e0cbccef-93ee-4c8a-ab19-4fcef639963c", + "extends": {}, + "lastmod": 1570008107016 + } + ], + "sounds": [ + { + "name": "Hehe", + "uid": "0bd4a1eb-b5f1-4047-a8dd-56feca282803", + "origname": "s0bd4a1eb-b5f1-4047-a8dd-56feca282803.mp3", + "lastmod": 1570005238168 } ], - "sounds": [], "styles": [], "rooms": [ { "name": "Main", - "oncreate": "ct.yarn.openFromFile('theStory.json')\n.then(story => {\n this.story = story;\n uiMaker();\n});\n\nthis.ctText = new PIXI.Text('', {\n fill: 0x446ADB,\n fontSize: 32,\n wordWrap: true,\n wordWrapWidth: 1024\n});\nthis.nodeTitle = new PIXI.Text('Loading the awesomeness…', {\n fill: 0x446ADB,\n fontSize: 24,\n wordWrap: true,\n wordWrapWidth: 1024\n});\nthis.ctText.x = 100;\nthis.ctText.y = 150;\nthis.nodeTitle.x = 100;\nthis.nodeTitle.y = 50;\nthis.addChild(this.ctText, this.nodeTitle);", + "oncreate": "var latestBlurb; // we will need it to accurately position text lines\n\nct.yarn.openFromFile('theStory.json?q=' + Math.random())\n.then(story => {\n this.story = story;\n storyEngine(story); // see it in the Settings tab -> Scripts\n});\n\n\nthis.nodeTitle = new PIXI.Text('Loading the awesomeness…', {\n fill: 0x446ADB,\n fontSize: 24,\n wordWrap: true,\n wordWrapWidth: 1024\n});\nthis.nodeTitle.x = 100;\nthis.nodeTitle.y = 50;\nthis.addChild(this.nodeTitle);", "onstep": "", "ondraw": "", "onleave": "", @@ -193,7 +240,98 @@ "uid": "d21d2804-d690-4c65-9657-7a1486b7f1d9", "thumbnail": "7a1486b7f1d9", "gridX": 64, - "gridY": 64 + "gridY": 64, + "lastmod": 1570007451105 + }, + { + "name": "Micro", + "oncreate": "var latestBlurb; // we will need it to accurately position text lines\n\nct.yarn.openFromFile('micro.json?q=' + Math.random())\n.then(story => {\n this.story = story;\n storyEngine(story); // see it in the Settings tab -> Scripts\n});\n\n\nthis.nodeTitle = new PIXI.Text('Loading the awesomeness…', {\n fill: 0x446ADB,\n fontSize: 24,\n wordWrap: true,\n wordWrapWidth: 1024\n});\nthis.nodeTitle.x = 100;\nthis.nodeTitle.y = 50;\nthis.addChild(this.nodeTitle);", + "onstep": "", + "ondraw": "", + "onleave": "", + "width": 1920, + "height": 1080, + "backgrounds": [], + "copies": [ + { + "x": 1536, + "y": 448, + "uid": "9e7aec96-1ad3-4679-a248-01180284e78e", + "tx": 0.75, + "ty": 0.75 + } + ], + "tiles": [ + { + "depth": -10, + "tiles": [] + } + ], + "uid": "cb9565fc-6666-4f0c-bc6c-b49f813ea9ce", + "thumbnail": "b49f813ea9ce", + "gridX": 64, + "gridY": 64, + "lastmod": 1570007519025 + }, + { + "name": "Stop", + "oncreate": "var latestBlurb; // we will need it to accurately position text lines\n\nct.yarn.openFromFile('stop.json?q=' + Math.random())\n.then(story => {\n this.story = story;\n storyEngine(story); // see it in the Settings tab -> Scripts\n});\n\n\nthis.nodeTitle = new PIXI.Text('Loading the awesomeness…', {\n fill: 0x446ADB,\n fontSize: 24,\n wordWrap: true,\n wordWrapWidth: 1024\n});\nthis.nodeTitle.x = 100;\nthis.nodeTitle.y = 50;\nthis.addChild(this.nodeTitle);", + "onstep": "", + "ondraw": "", + "onleave": "", + "width": 1920, + "height": 1080, + "backgrounds": [], + "copies": [ + { + "x": 1536, + "y": 448, + "uid": "9e7aec96-1ad3-4679-a248-01180284e78e", + "tx": 0.75, + "ty": 0.75 + } + ], + "tiles": [ + { + "depth": -10, + "tiles": [] + } + ], + "uid": "95f73a99-6402-4848-81a7-d96488130d15", + "thumbnail": "d96488130d15", + "gridX": 64, + "gridY": 64, + "lastmod": 1570013323128 + }, + { + "name": "Wait", + "oncreate": "var latestBlurb; // we will need it to accurately position text lines\n\nct.yarn.openFromFile('wait.json?q=' + Math.random())\n.then(story => {\n this.story = story;\n storyEngine(story); // see it in the Settings tab -> Scripts\n});\n\n\nthis.nodeTitle = new PIXI.Text('Loading the awesomeness…', {\n fill: 0x446ADB,\n fontSize: 24,\n wordWrap: true,\n wordWrapWidth: 1024\n});\nthis.nodeTitle.x = 100;\nthis.nodeTitle.y = 50;\nthis.addChild(this.nodeTitle);", + "onstep": "", + "ondraw": "", + "onleave": "", + "width": 1920, + "height": 1080, + "backgrounds": [], + "copies": [ + { + "x": 1536, + "y": 448, + "uid": "9e7aec96-1ad3-4679-a248-01180284e78e", + "tx": 0.75, + "ty": 0.75 + } + ], + "tiles": [ + { + "depth": -10, + "tiles": [] + } + ], + "uid": "48b25b49-58b8-44ee-b4c5-cc6b9ea24c38", + "thumbnail": "cc6b9ea24c38", + "gridX": 64, + "gridY": 64, + "lastmod": 1570056924685 } ], "actions": [], @@ -219,13 +357,14 @@ }, "scripts": [ { - "name": "uiMaker", - "code": "var uiMaker = function() {\n const story = ct.room.story;\n // Clear the previous buttons\n for (const button of ct.types.list['Button']) {\n button.kill = true;\n }\n \n // Update the speech and the node's title\n ct.room.ctText.text = story.body;\n ct.room.nodeTitle.text = story.title;\n \n // Re-generate buttons\n const options = story.options;\n var buttonY = ct.viewHeight - 60;\n for (const option of options) {\n ct.types.copy('Button', ct.viewWidth / 2, buttonY, {\n option: option\n });\n buttonY -= 120;\n }\n \n // Update the cat's texture, if needed\n const cat = ct.types.list['TheCat'][0];\n if (story.tags.indexOf('cat:happy') !== -1) {\n cat.tex = 'CatHappy';\n } else if (story.tags.indexOf('cat:thoughtful') !== -1) {\n cat.tex = 'CatThoughtful';\n } else if (story.tags.indexOf('cat:normal') !== -1) {\n cat.tex = 'CatNormal';\n }\n};" + "name": "storyEngine", + "code": "var storyEngine = function (story) {\n var latestBlurb; // used to position lines nicely, see below at story.on('options')\n var spacing = true;\n story.on('newnode', () => {\n // Clear the previous buttons and blurbs\n for (const button of ct.types.list['NextButton']) {\n button.kill = true;\n }\n for (const button of ct.types.list['OptionButton']) {\n button.kill = true;\n }\n for (const blurb of ct.types.list['Blurb']) {\n blurb.kill = true;\n }\n // Update the node's title\n ct.room.nodeTitle.text = story.title;\n });\n story.on('text', text => {\n // Yarn does not support single dialogue options, but we will fake\n // them to add a better feeling of authority\n if (story.character === 'Player') {\n // Clear the previous buttons\n for (const button of ct.types.list['NextButton']) {\n button.kill = true;\n }\n ct.types.copy('NextButton', ct.viewWidth / 2, ct.viewHeight - 60, {\n option: story.body // it will appear in button's OnCreate event as this.option\n });\n } else {\n let blurbY = 150; // the default blurb location\n // Get the latest blurb's bottom line, if any\n if (latestBlurb && !latestBlurb.kill) {\n blurbY = latestBlurb.y + latestBlurb.text.height + (spacing? 32 : 0);\n }\n latestBlurb = ct.types.copy('Blurb', 100, blurbY, {\n blurb: story.body // it will appear in Blurb's OnCreate event as this.blurb\n });\n }\n });\n story.on('options', options => {\n let buttonY = ct.viewHeight - 60;\n for (const option of options) {\n ct.types.copy('OptionButton', ct.viewWidth / 2, buttonY, {\n option: option // it will appear in button's OnCreate event as this.option\n });\n buttonY -= 120;\n }\n });\n story.on('command', command => {\n const cat = ct.types.list['TheCat'][0];\n if (command === 'cat happy') {\n cat.tex = 'CatHappy';\n } else if (command === 'cat thoughtful') {\n cat.tex = 'CatThoughtful';\n } else if (command === 'cat normal') {\n cat.tex = 'CatNormal';\n } else if (command === 'disable spacing') {\n spacing = false;\n } else if (command === 'enable spacing') {\n spacing = true;\n } else {\n console.warn(`Unknown command \"${command}\"`);\n }\n story.next();\n });\n story.on('drained', () => {\n // Clear the previous buttons and blurbs\n for (const button of ct.types.list['NextButton']) {\n button.kill = true;\n }\n for (const button of ct.types.list['OptionButton']) {\n button.kill = true;\n }\n for (const blurb of ct.types.list['Blurb']) {\n blurb.kill = true;\n }\n ct.types.copy('RestartButton', ct.viewWidth / 2, ct.viewHeight - 60);\n });\n \n story.start();\n}" }, { "name": "Background color", "code": "ct.pixiApp.renderer.backgroundColor = 0xffffff;" } ], - "fonts": [] + "fonts": [], + "startroom": "cb9565fc-6666-4f0c-bc6c-b49f813ea9ce" } diff --git a/src/examples/yarn/img/r7a1486b7f1d9.png b/src/examples/yarn/img/r7a1486b7f1d9.png index 1b09cafe6a366a81f85b8157bc93174a2545129b..d6513cef2c1281131a6f5455ca1d8cb89ae34750 100644 GIT binary patch literal 8106 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 R18?v!16>oHGOf#h{SO;Fr^^5U literal 7715 zcmXYWbyO7Z_y6p&$kIy+NGwY$2q-DFG)ULdAzjkau}HXtfJiD0BB6BW0t!fX3KF7( zNJ!^*-=E*_k2y2v%$)n2xzBU&D{hRorZOoJ0}%iKq^c?kx&Q#eJ%Rw}9o)^#tHd4v zn6_0FWcB?mcFi?>?}^raF5uy*?SD`eoKRYtN}~{}-v%f3x{Kg@Y=$+aN7cUt?4)+%aMM4OvBW1j$mMmIvM z8rk}=;Q$N{1L6UwKkmZXY}jlf0SIsp05h`z;C-WWx+gFIguR1C_d(HsBuYA(41xrz zK=2hoFdR+vAndeJ%k%}=GHmi8A(NlP>vS6ChtX+xAQ+Nt%(b#6=*+41M%Z6b{gqw~ z*_P_*i}h~bbJkpOT#R2;A`^PG$D`8KZO;mZ{a+!j{cpZv`cN>Cq&==d%NKvvQ^?28O6!|Ve@k0ZwH;Kvbhv*ZK`E0$=2zb{OF915?B42_(D7H7xZnOh%gRGwwYxZc4g#D(xwey8bqsSw^=ABS^T^Z%vj%4`nTi|E0XQQC(aEOnwjV4*^oKT zl#e8XfpRTf=Ix$Cn)v5z=R*~y?-gdMleiODtj>h*PhF6JtvwYnk5^J@P|ViO!K zS#qvJ0I_6e;P@FyiE6@DYjpyc!t zVjA6AK^U4-yZm88*|*A{3DHEv)7v~ytJisBrfUVFvIrql9W~tUbkLRTozEyZ} zvGs9OhrnQknvyLjaslz@+Woc^^QSL_uW(wzJU3V9?~YJ0%0PELgfl>pXK(F<2$EO$ z9M5h_1Rdq;qTZKr^%buIaX%(nd8lpd_6>&;BD7Bqb1NwmAe4=%Kg*|HKtS`f#l|yU zL)pcR*1gIqMaj3|YBN92P}us7&Tar=Rrpn|SdIe25}}m-hu3F__ig~ny!!K^UE^d% z>cBk41oL7pngIJ7mZSvnpVPiw0!<%4FuJVB-vniC?hHV?i z0)0hgcC*ioOcya^rN-`eiaGsfSlE!Zlpmc}v@{Ck6YS%sA~)NmbUpPorsci|5-69O zS@Z4T>T&MkdQK5lm)01xd-DbsW#LJytNcug_3yO*nO_b^Lqjlk#ywnNxoy@M=v$go z-WtZ+i^T4`aTS@xw_eeU5v)I?9?)usz;s{n@c39A}L&o6X317M1@z zK@VRRIQN*WNImjU7WgDHm94+PWUMW46idZKF`3A)_H)2p;CStziApl4IQ%3F0Y_iW zIZc0eu?)EiHRX*LDZjGI+HYX|@mC%=x~ zNS4!Xc;PM-{=k}hj|r?7BcoJUsV+$X#Y%YhqH7VbMCB4)AucGqT-XQ|8ccc`g<&j_ zD#MUqocYVEWa{y^?OSCq%XTFbb`N1_K2(}~0zP?+Zfd*`flw4G2A|!){=5ihMYzxGBCKmwODBArZy~5vP=LkFjO5Y6N~yca?(RmRk%q+0e~D|zR%cD z{vXUCYhymdaYPnzHW>dRM2{4*8N?J?n&i_80pKxxxe3GJqenqqHG$65x@#K3*?dG$ zEBU+fvYFnb9I zsfYb~QZklqRoG!S!A*HhPFR!Pd^NjNFsBJTE|-c3WhV9Jt%E|5R3n=c4e@Lu*&phi zKH4%q`OFuKm+1dRD^UGOpzv^Yl{FkqqFvVJAB~RzmSw7LJBy95#eGst!3R-? zuf;BoUAMfGPR-y%Z%O?72j|gKViM+Xt$)g9z!Z?qhX*#ImBl-*?+#P@Zn~3o{UBqi zkeRcP^Iu7EZ1e5iRRG*?!x6o+=|4Ltc{%&Wog{PGaXv$ODGida%i_r+TJt*)n0(!QM_}RKs&Z2o z;bI57tna`6h=Sd z?_G}0V_*VT$!acg=I|Y&fda_bb{M>P>077kK)EQDBbyJs>(uGsa@pp0os#ay3k~XX z1seb;oW>+X7P9$1#_k%e1w`2qToa%FJ0*C-BdTy2_y4>NW z6kDiQ~20S8i_h$&ne=GTTqkeeU)G@mY3)o3uo zki1dC9cJh1LT0L-RV*skf7XtBWIIqpv%01k`TGy7n>&~)uKyo<>QP8*1HVjNP5-R2?y@+QaqwlhV$I?oDis? zK$K7`nvw#I9g2+k+aP~%UJ3+UwXA=Pudn>h#WJE#RQLAJVnBoR)57GA54Sn568#`~ zX`x4W=IJ4c(&b&nsfOzb=f zbLDp8=T6=A0tcpMNfSZ@#P(ce%xtX))BQhzJp+M)E)t@nFn|~PiTo+h|3MV%&xR+hojs58!X@G6J(a( z8Fw{5&N%m^J%5A8N^CNH-!uTM5_?uw(Zr^;W!@qmaX0l7g4=gAFioNOAr zwiGK!6B1kg%_2A+!Tx5-&@v;T+=tqk@JKUe6$CoEef>8mWbllt0?j?gFk>6{!FL!j z+eLnCF%8bodiR2s5Vr|1CWm+^C{$9Pi2ZID1Cz#4FQ=dR)_$Pk zd~Q^y+fptG;?_4<>wCYtApEdD#oA`Z=LyXfyU+NpP>vCsnd(b_S%BkNoEx9KRppWl zTfs*^>wrKIcNr}VZKp)!iFyS*0*0-L!A9Bb`F3$I=sH^m{;iT?*@RtHn|1_nhof{&mKtZ&uiQfE{jA8A@pBApqpVqJS?)7MsL@^L#QvBAc6`2QxWLbj#)K^MV9*jUpet6x`JcBs)SVHb2fsmN2>#!|f z20!=P^Kw)?BXpB>MH+N9^Mj)pSH%>TVNxFosbLxL6-f{>6$vK||4-(q*T~E5{n!4S zHbO3#AS-Vhq!?YU%vG{r8uvg@Y>(>dWYYRa1q=)ybY^?IoJbP@(7p#yz_QjGXFLE5 zfbPtmvY~rK;SX zPg?Tui*e+mG2^>HRbswu44U2#fD+~t({QrMV&$x96M*FFDaBpH;JZ4TKG!5 zwh0?%U?TtzvaNg}0-QS2424Vpuqsqc79iwrwLT{gx&y|CuiOEBnFxJ$Zi)Ui4uN@a z@SP3yB<4S`8eql4l4cOHkAVe>oEOm` zyl`un$4elV{=NwajD#luP(Vb-2{N^PV6pql>GdXMBj8{_3NEQTzm#h7KNC9yy#%gu zC~{s)GfQhWNs8Ejj6nV(Ji!cqEm|wxVmo5v=^K@8?%-?yCnbLo6b#wYEemYX2ehN|PXNu?3G1BHhkr(>3J$-dl@mnDSbAln&Fgc6G{cpWSXv%UFNrkBFPCh$)% zoNst8+5nQ2az-^OZX^9$5#Es<$v2E}q5;7V94z#d+XJAHEUCA5Byc@~IqO>*6>xZC zgTMpTLXGOd7>66#<*?db^zxNFmH~{Bx#UpD9o1qm#Q`7N9q=z$RWz{X(6G9m%auqr zEE}GKMu$O-)DVGC@;f0cf87+4y-G#o33DdbTfGivAw0o_kU+!;2{hK%W-Cb7)4-ntkC-qgq0*E}<3mnLIycUGcX)nbTR2$myi{gO{O zUZ2!fw@Y21El|V#B3Sy8f_Z_rB;OSUL1_R7rk_d=N&jc)AnLR7!5=7qSbs^3dL zSQ$dq8rqORLxrD)n!Jam>>c#IdiTFWEpZsr)WsSVu8pGABorV?SVym zo1gV5=(GG9SbkAxY_NTrcJnoMOpiI0*RAq+Z@NsBx0KFZr81Y%H>Az=U*o`$vE0N# zK6SxL&fRvCeZlRq2irYG3myK~9!Z>)TR+rT(M^7|^I_`cOSw1tx?>BC?>z!?exc*u zM0u%)5sGY^K3N0|DfnIiQ#mnPiBL!Xs~!X5vZU{xVIT^F8}S1#Xx{&T;0+ZzeMxh@ zNvUo09sR7y=j6JqPg#{L0@tX;YlZ5frj;J>HQ!=GvYGWsbTZGX8PC3lU>{^!!? z%Ek}@s{(@j7$<-G>qm<54ZM&6b+sR^mhI2hBF0k$(qWC%U}&OAWMZE(o6$|W-NB|G zQFuElY}@?l3ljg<>XWxIm7ZC_>e;cWazK>?+=>l+Ff_GJeO0klx&4KIe7}!^`ZMdK zEtxI+9T%;MtQbOROe#TtIM9{>z9E}X&`siQS-+Xu#qNc>6@p8@P?0N{{CbpJ(JKqI zsN`q8g$^m5sa6KnTu+t}JoYY9@d*i?Xv&@08}eKUybfI$VEsI-*ckz&$&$awM#8l; z(RKtPClW^mno`+gYiGjedCrhLI^#apnonSD7N|OmI|9)EQ7zRz6Ds}gnTo=4j$cF1 zCf4AZ-V_wsMQQ0S9W4$-)g>yUggxqZ$ick_2eEmtHwM8I3@2DHK_fPs>4LXn0 zfxhUWWA-0Qf;v83Xj>A5XL<+X{oZ-vHLu;v2wEYkBE2}#y#vDr*S}{&&nXgviG#%H z2kC^M*gIg%Z@{eDua-n!KGzo^aIZXZ_qT$c5(;>h^{;W|M@hgYW6YeBX3~H#q}UoH z+5azHQAP=h^$|kR0@^d=knZ@-;8t&3GqFw$7p}-B1bb-MB;AElW6<@Sna-C(B=qJJPhhiEwA=$z8TIdg^U(cnu6{NlY6k8gPW-%I{a0 zk#P7xl(JYN^SIhTP!2dCpsq#hrXj}pVg0el3BA>p)iy%on0mQawF7kg?va50$907~ zf)-;`8WY_%9_TH!gpgM_@UDhm<;84>iEHKbEmFOeB2%xD{H~z14MaP#$`KDb7mXF8 z=r5o9N&3}nZKpD$r~mO999ZNfIur}X&W)e;v8RW<99yv5Z$FtHt3J*JYYVvPr7gyBceu2x3xdHMuM>Vi#k>= zeaNfi{T^bA2|TI%6Apy^jxc1)RVC#tvM6rJ0fm>&UU&9h3V9T3Hbg#D-Q=Fk4x`C5 zB9>Oljz%1w?)ENJ#H@FIJ3|6a?|S!eY$YerdOXi3vDCo-z+~56?=+5Ow|4&KcZO-QuJsT=5o(#fQYhkXQW*v)|Uh=p+hgQ#_Iff{w>N zd{1I)8Hwe-zTVZdpC_8x30vsM7LW(3gMlWpcvXF2NUzhL1$2D%v^M0jvDF@$H!Z_n zEW`O!lzzudSiZ;qkDQeceuf3?AoPkeFL~U=}QfTJ;k%BuZ<61Q{aep8ivG8bSAVWBqowaTM82DbR5P^>0Vm+gmQtVSb&~@ z__~5BS;FgTn#{;{WnxxZ^=&WIs*R`#UYyJ3QXJ>@@t`P>Gn!%^gUo15+!&VZ%ZB~W z9A4zUEVF&|6xfzVw$ld3k}65Om?%RcTSMV6i;icZ9gcMkEQ>Usc?uy(O+?VQTx-?6 z1vGId_7s@k%kS^A9w}nT&A#{X7rLxN1o~nMvZVtuy9z2gp+lx2u^yGZJ>gplj17+6 zVxW@n(ISU;d8|I)cZDn#z+^v5$iN5d5;R5L%kv$BUre*#*xys-f#fM-APzGJymlf?=E^9-b)Pq{kJ%Q~B**J957@yP^B9;7?avzU~Hww!=>9+stvcX-`o1?w5acbph#UFN%y1+da7G~%- zS)oO3620#tyz~8OyV5ra%R|niUFwp9*1Gy39|_?^FI)cTlrR06QF8yh^qIuRi#+TTCdwP2ogS>jXKN{z3jPNT8yP$Afa$85UVC7Yy z7FU75bxzZf%9)ALh}-P!@^+oEhW9to`}Mk}mkg53HGiu1(}>Ox#YvCCb-JNHnL4n8~Xt z)v)3P8qn{a*jI_s%-jr5c;ZvjTVnTsxLtSIIn_BfDzNPNGkO6}x;A$9SrHav&5rL> z>OPjf37z=OFg^d>7wT?yIAe~&k%ofArN)3Qhdu85J63#+i02Iz(tLqJh%%l3uS4IZ zrB<%tv;+_Fo^p(BFAt|=(^Au^g+q+wNmv^l-=LlMGu$L9XzauMUvi&*A@xG3BD_DV zlR}*>KV$)hIZcc#&Gb@G?+;m{sn>rS5KD#!?db+}r6#k@W&aHshS+2E5#VtSL31jd z#AqK1?GSXo2I;z~Ck1Xg2cVkCFdIfYYTSo7pM)v8=HbPl-2F19Y?tZGw4Ha)%Q||D zUbDJe7kqT8|BhSk&OUkiJT>>8=+bjRC9byE;|%;sd)*-Uh&VsG&X@Q5e%s2Lh@!(TvEQB$Ep&g$j=0sK`DasU7T diff --git a/src/examples/yarn/img/rb49f813ea9ce.png b/src/examples/yarn/img/rb49f813ea9ce.png new file mode 100644 index 0000000000000000000000000000000000000000..d6513cef2c1281131a6f5455ca1d8cb89ae34750 GIT binary patch literal 8106 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 R18?v!16>oHGOf#h{SO;Fr^^5U literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/rcc6b9ea24c38.png b/src/examples/yarn/img/rcc6b9ea24c38.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3409daff0475fdc9450bc37af158912ad01cb1 GIT binary patch literal 7333 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 F{|ld%dn^C| literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/rd96488130d15.png b/src/examples/yarn/img/rd96488130d15.png new file mode 100644 index 0000000000000000000000000000000000000000..9b3409daff0475fdc9450bc37af158912ad01cb1 GIT binary patch literal 7333 zcmds6dpOiv+g7_>6FG<70XY}Rwl(aW=52&cVPb}qLnWq0Xk$!9sEm}7T}TeY{#6)* zqzP%v%vQUc*=5H0P=pM|ag1T`E$^Y;YG2$&fBueGkB z9Bn1Vw~C92iAmc1bii3mYz-QG#9-^ef5sASf-l?8+8x-BKJPV7j{M~mCOob$gpLjK zJAs%-ZQj4eQ)cf}jI+E}$|aurf&KEKE-6So8~sznb{HmKbU$V5!6gIP1VxOYcFLRN zlxaP~i^q>VMziA~)cy4*^04kQIj8o!E4KFtKSVgw9-X+hLcRJdHW`Sn|5To~wIeUdIW@R+@hIPIt?-JZ?FO3{1%FAZy465L%OLGy$ z2;P-cPtmzLBXS>O1k+{0;NMJ+c;Xj?>kA$_R<70KQ_W`)>fM#1K?|i&7JquBeYOnr z^z{AmXsZ`tT5HjnCrdB8?)g35f|Q zCT)$#z0J0wn7Wdvw0QCX3JgAXNGl&CQux1^NRl}IWLvrSmc`54ETWGVzvEr=6igBu zW2b-5dEE~sN3{39xtp+8TC?ZA&C85~jHw(ypXfRbxT2!>AKR3}zaLb2iJX`Xeo~@0 zsFLt9$0b6eaq%{<1g+BMuV~koUFNKc+VLW;{np)=hv00IB_bc zxK^3ktHJvlL@Bn*|9@cpw^`qRA(1pRWt?mhbTzVySw3mg_8mh%tmnmOMHZsRr2AoV z#O{>qqv_tT5LK@Qn^WKrSh4iXkWmK1?I$6rmhajR|YS31JRb5HdibUhNZa@@{xt?&0$oF97*ghS9VI;wgW@Z>l5fK>6WYi~;qQlUc}K%Jd#|DRuhiLjG#vh!v?)zqmMd=by9R6dIn_lD;`SV%IF)pE zrET3A;QhMiM0 zBCJJP)QwHn6o2fF+97lyWOL3j%o@ksqrIAybqSP(g8baoc_~8a4vrI|Ou^u+JzGW> z$?OSd=WZxCt~1C6w-QOB zmY**bFNJd$J^RecRd)fj78`#WXCEEnu0q z(YMBS@*1LkZ-_)fB$O=m2c6QU9cTulz=hH?SU$4NZRhHw8|;dVz$7Mc^4y_%LgnML ziuFMx^+*uXm9!^Yfg0oCwR1J)FJOhkTCmI{7O5b<^x;jI*RYL8Z_&%Z5%s7mI7^J z4jpu$ffUAYvfTG62t-Hf42xZBe(U|MY}@7i*xayi06}OetkeR&csPVNV7i60u-nyq zTH4f-Ujx{YSYSgT^ECX*ymVqvvfN)=oLkKQI(Sq2S!3n<8JFv&00p1OSgvOTj;9hb z=S*IYw9wU45yoxFxzGkmmVj5_cIELb0(J0&(>Vi&5COvJBoGix!Ua7rtUn3P?n%}VO?`ZdHrmQzzIyZGuj@P^%n{;W>lTsh*+L89PG;~5k)&y|4F=jML6fy zJYhDNw@_QUY9%`#uz!q2@rPQiDH+A0+SIyWk;RuGTMA+{W$-5`+v6Y@j_P2a-~w_F zR3<$O$MHP8cX#uau11|ROe;biBSa0Xo4P?PEE(drW~@NWr|Re>*EGS zHKzOYh(tcPsM2AgG4tVxMOBAdX!{n6q9YzpfrV!73wwCXbTTG6;_kMkfEfvd9ld(~ zV8g_UFV!NxnI)RB4jOTu$aq~oFKA|J&kwjPcpiHEe92g9$#SIxk?hes`qYZEn7X1& zC5$(92M#Mby_dpFM4;rL^(X41WRaX>cj>5dkI26H7c(2?_LZLoJpUqkjLdT*chG_I z&b-w`O4_9IkzjQV2!OjZ3BSN~5Z6N5QJsA})ZG9``eLvm_xBC-yuG&L%)u5=tHV`x zq^&phjK%_lyqiEt5D-I^OIk?Iq6JzGl8QCxdI=()AVTn)FbOfRp%7Vd_UdeC(wF`n z;8Z<^B0te(+3FEdw``>|c*}bt{2a*semzkQ$>~ZhK~}oXuU| zH6THKx77p_(<*#`Vvj;#>pV?zR|Hkj6}*}IJBDs-taRrNqGNWYZ&R#o)aPm5T&>*7 zcH#817fxW?%i5qLi~Igrp%R!*q`P>j(V`@lCk+4@-U;URtxuRW7~=8v*k^BaG5`$) z=09FT#k}@q$UxljdIw68G`{&~N%}yV4#1~5CJ6@r&a+hlG-q~`I>pp@yk`u9A{~GE()IgO1vrS1tnRputoaKqXm+K?1r>XX62bF=-o1u|sYm%IPor zs(|4`hEwzIluZoVnr;DUsDRU1)rZGkS5f@AL3Oq(b}l=!q8{Yh^#SCqd`9tGFri#? z61V3RcDSckbOweQ8~?qVU#xgPxbTBQ-kpT$x7el!3%d4%3-0rM52!4UwzQ%tznN7Z z8-UgDuhiEbn^B>w?F@u)#38_Rs z{bBnVy_NIu(5{%#K+$Y?AZ4wsduHJ|s>F~KT%iNkHVEq6Ns2&8B6qYALlCB&`SV-8 zDB%sO+fTG14FRgcJ4sU(Cs&wa06d7|;0|^xd(3ON+mu8V!0qH9?W&`~d!S4Yb7B{6 zvd*9DVOGzLjT6*Wgp0EAlaZvYYffI#0$@C$O7Jh|D=R5HoOfl(tFfa<>K9ZYn~Qf( zYy@7Qh>HwxYV^W3d3H}6fR(C3us&Og><+&pYay;fK^cnS@6>2u%=#taT9e!Ic^{w%S|Y%FPhBv7iuT7NTl6lZ|q^ zjKVluy_ez2O#a{nfE~iPQe1k*ht47`HX<>0lDDiVR=?Gs--YC4xM3hiNBl5@cKGYT z6k<&cX^f8U$hvz`;zlG>SkZ60k&^3Dg+BmLAH^ekMA(p^J*gtWtjiAe{v+RFKd}|F z8AoqfN>1}E%3cdeJ=gv5`bTCK+(R8BcX&2+%OZXW%4wOZDgKPOAiO~+k#D7A{RL^M z8}a>-^jGQrsdJ+`=hd&FHfSmSVoO=`2ksHjLWjb1z|o)EzV&_m)Ecn{sho^Cr}9y* z+~81I-moREH`)WlJa1wA=dRT5R}&Y){frIXU)Errb8uV8dAs)c^EV3C@9Lee${Esz zFSmufCKw&GWIcTS9iNdU($-Y_W{BZ$n#Ztt#q7TObE42hnwjVwHK}^RJzJq|g=0N+ z-LeAv`1$Ky=I+0kvC*drJX6ik3`7duYCJUB&ksAQ^HvIva;*ygq|AdPQ@B}BQ*CrG z@xud=v;Ai(>$VRHdsg4f`zBhAed(4YQw)-7DwNU#1^-faBmU$olMMRs`h{&#JYedi z!PSYCM#Eza=Cud6`Y7}U$+JH8O@F2gy zmZDa8xoyYCeT1qBJT@=SZ<({e(O}ECR{6_()L;d9ZgGRi?(0B`EVtp%>)yzY0YBqh zZwsX435Ck_pU_u;yq=WO{YtQj=^a<2_%JvLGr9E>1{l)99YJ4d;Dy4H>IU&8t}G5# z@D~0_uBkBmj6#UPZi$tPQG-rS(|x(fTFFO%6=DT8he0XQbddo848iucV^6JE!KAHq zy62TYZkWZoNOC53nMnvMh#G{!lQEN~pGNj25q$;9%qKxyx0@&{_iu}>K8h{Ino^X{ zi^!xIjQm+_e1x~y*wr`sRZNY2pVqm0j0`HwE_~FxTy-0U|9Fg4fa+Q)kOUZg%u4Ng4D*^`>?x;NE1Yh>RDJ!D&@z;3ww^gQ0TS)Uc)^|<)T zXafJjz;CaOj~ER*;(Fg~S}@O#!IMp9rdBlGNM_@z4Hh)7o{DwB-~J~?U@EK_r~L^_ z{kO*rvHP>$_2kZew%IGlanoOBMY9{G*0&HBv$`~qk%8fEz9u9p;hrwili44ZM;EPc z**04cty`;%gO#oU6};vWM-#}djjP?N?5^;8y>h-TMZk#T`}ERa?uEQKf+wJYcLR`obk+{M%>XTXMHDzbEo_aR=dP$FpgW!)JWD)LOtCZw|5 z@!Wdg6`t0Ka~jJ2?mWZNI_#DlNvJP&Q(XzXaI?I8S4LxqV>qR+ZyxxU&-^4O_SuEo zA!Xf$#Aykem6nFy&<9Dt*L?OHDWpYcdTXelm|R|vy7E2uYa5nHdUk<2hZYbTDl!^G zExkkFviWmQE6=S;QWmL-_4qf$>oJ5Uh1o#+KC{CIA+@4oQv#z1;b zWJ@K(OXu9ICeq@DG%^A18qNV{DHd0qeUQfr9LMW;KMoSUmvL9UAm)BxUoDm-|x|Oy8F~n>nJ+Q-cOI+I>yJ6w$GpT&-6b# z&1_5X6rACE3~0_UHaPPRKN~v#E_E)i`@UmoL~Kz&a@b^`7AMtU%=+OI?;L9Mqri7f zPu?_Z_q<5Q-qr6R2TM<6=$Mv25w$tiGKo>Ap1f03y7}Z1D`M%@E9q7S{ruDJe#KNT z$g9R7JKW{5DqdT!P$lpWaM2SZS74h3cB@1@)5=0UHZASs46lBVexv0XKdefEYZ3rGBOz5y2jx*^k*Sg`zS|1aMO{>Sey|E*q5PB}x%yh!gYiIG+Qg5v0U<`kpv z`szc7zp8innLfkBuq0l|dC@|o2CE|@IMI~jMGI}XA{-h>d|=+v&YUumF6=>oKh?=Medmvlm2`m%aKAGz>W4BCyTMQR5p9VRo-9K2n8ora8xij{^9Nj8 z0e4oWoQ*+wQ+V6D5lNW1p73Dw$=~VD<~MT+xM}!1JS+owehEhsfiX F{|ld%dn^C| literal 0 HcmV?d00001 diff --git a/src/examples/yarn/img/splash.png b/src/examples/yarn/img/splash.png index 1b09cafe6a366a81f85b8157bc93174a2545129b..9b3409daff0475fdc9450bc37af158912ad01cb1 100644 GIT binary patch literal 7333 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 F{|ld%dn^C| literal 7715 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 diff --git a/src/examples/yarn/include/micro.json b/src/examples/yarn/include/micro.json new file mode 100644 index 000000000..0644b6557 --- /dev/null +++ b/src/examples/yarn/include/micro.json @@ -0,0 +1,12 @@ +[ + { + "title": "Start", + "tags": "", + "body": "The beginning\nAnd the end", + "position": { + "x": 815, + "y": 180 + }, + "colorID": 0 + } +] \ No newline at end of file diff --git a/src/examples/yarn/include/stop.json b/src/examples/yarn/include/stop.json new file mode 100644 index 000000000..29c774911 --- /dev/null +++ b/src/examples/yarn/include/stop.json @@ -0,0 +1,12 @@ +[ + { + "title": "Start", + "tags": "", + "body": "A line 1/3\nA line 2/3\n<>\nA line 3/3", + "position": { + "x": 2780, + "y": 1798 + }, + "colorID": 0 + } +] \ No newline at end of file diff --git a/src/examples/yarn/include/theStory.json b/src/examples/yarn/include/theStory.json index f5c7f41b9..18b24257e 100644 --- a/src/examples/yarn/include/theStory.json +++ b/src/examples/yarn/include/theStory.json @@ -1,161 +1,251 @@ [ { - "title": "Start", - "tags": "cat:happy", - "body": "Hello, fellow game developer! You are playing the educational demo of using Yarn Editor for creating interactive dialogues in ct.js!\n\n[[Answer:Such wow. I'm in.|What is Yarn]]", + "title": "CommandsExample", + "tags": "", + "body": "<< cat normal >>\n\nI use them to change my texture and play sounds!\n\n<< cat happy >>\n<< sound(\"Hehe\")>> \n\nPlayer: Whoa! *O* Anything else??\n\n[[ExtraFunctions]]", + "position": { + "x": 6082, + "y": 5335 + }, + "colorID": 1 + }, + { + "title": "Conditionals", + "tags": "", + "body": "Make your stories data-driven!\n\nYarn has math variables, functions, comparisons and complex conditionals. For the full guide, see https://bit.ly/2p8LI6n\n\n[[Wonderful!|FAQ]]\n[[I want to see it in action.|SeeConditionals]]", "position": { - "x": 25, - "y": 189 + "x": 5828, + "y": 7519 }, "colorID": 0 }, { - "title": "What is Yarn", - "tags": "cat:thoughtful", - "body": "Yarn Editor is an open-source for writing game dialogues. Its license is MIT, much like ct.js, and it means that you can use Yarn Editor in any of your projects, be they commercial or not. For free.\n\n[[Answer:Cool! So, how to use Yarn projects in ct.js?|How to export a project]]", + "title": "ExportProject", + "tags": "", + "body": "<< cat normal >> \n\nCat: Yarn is available at yarnspinnertool.github.io/YarnEditor/\nCat: Design your dialogue, then open the File menu → Save as JSON.\nPlayer: Done.\n\n[[ImportingToCt]]", "position": { - "x": 363, - "y": 181 + "x": 6401, + "y": 3947 }, "colorID": 0 }, { - "title": "How to export a project", - "tags": "cat:normal", - "body": "Yarn is available at yarnspinnertool.github.io/YarnEditor/\nDesign your dialogue, then open the File menu → Save as JSON.\n\n[[Answer:Done.|Importing it to ct.js]]", + "title": "Extending", + "tags": "", + "body": "<< cat happy >>\nThat's up to you! You have the power of ct.js, the flexibility of JavaScript and the exploitability of this module.\nYou can split your stories into scenes, load them into ct.js, and then create a room for each one, with nifty backgrounds and decorations. Much like in visual novels! *U*\nYou can use ct.room.story.raw instead of e.g. ct.room.story.text to get the source of a node and get extra variables that you put in the body of your node.\n\nIf you struggle, though, check out the source of this edutational demo!\n\nPlayer: Thanks!\n\n[[FAQ]]", "position": { - "x": 681, - "y": 188 + "x": 5287, + "y": 7513 }, "colorID": 0 }, { - "title": "Importing it to ct.js", - "tags": "cat:happy", - "body": "Open the downloaded JSON file and copy its contents. Now open ct.js. Click the \"Settings\" tab, and create a new script. Write the beginning of a line:\nvar myStory = \nand then paste the JSON file. That's enough, you can save the script and move on.\n\n[[Answer:Wait, where do I get this JSON file, again?|How to export a project]]\n[[Answer:Got it.|Opening a story]]", + "title": "ExtraFunctions", + "tags": "", + "body": "<< cat normal >>\nYes, there are some extra variables that may help you:\n\nct.room.story.nodes is a map of all the nodes in your story. E.g. ct.room.story.nodes['ExtraFunctions'] will return the current node.\nct.room.story.raw is an object with the unprocessed body and other meta information exported by Yarn.\nct.room.story.startingNode is the name of, well, the starting node.\n\nPlayer: How do I combine it into a working game or dialogue system?\n\n[[TyingTogether]]", "position": { - "x": 995, - "y": 204 + "x": 6361, + "y": 5470 }, "colorID": 0 }, { - "title": "Opening a story", + "title": "FAQ", + "tags": "", + "body": "<>\n <>\n See? I don't have the default line now.\n <> \n<>\n <>\n Ask me anything. Well, anything that was hardcoded by Comigo.\n<>\n\n[[I'm done|Fin]]\n[[Projects…|FAQProjects]]\n[[Writing stories…|FAQStories]]\n[[More than text…|FAQMore]]", + "position": { + "x": 6400, + "y": 6695 + }, + "colorID": 6 + }, + { + "title": "FormatStory", "tags": "", - "body": "The JSON file is still a raw product, though. In order to use your story, you should first load it in your game's code. For example, we can write the following to a room's OnCreate code:\nct.room.story = ct.yarn.openStory(myStory);\nct.yarn will read your JSON and structure it in a more useful format. You can now use other methods of ct.yarn to navigate your story, search for its nodes and get dialogue options.\n\n[[Answer:Mhm…|Navigating a story]]", + "body": "<< cat normal >>\n\nIt is recommended that you put dialogue options at the end of a node. Otherwise, use Yarn as usual!\n\nPlayer: Thanks!\n\n[[FAQ]]", "position": { - "x": 1308, - "y": 195 + "x": 7123, + "y": 6881 }, "colorID": 0 }, { - "title": "Navigating a story", - "tags": "cat:thoughtful", - "body": "We should now use ct.room.story in our function calls:\nct.room.story.start() will put us in the beginning of it. It is called automatically after creating a project, though.\nct.room.story.options is an array of strings with currently available dialogue options.\nct.room.story.say(string) will navigate the story further. The string must match with entries from ct.room.story.options()\nct.room.story.jump(string) will open a node with a given name. Note that it is different from dialogue options!\nct.room.story.back() will switch to the previous story node. It works just once, though, like in ye olde MS Paint.\n\n[[Answer:But what about the speech of NPCs and stuff?|Getting the current scene]]\n[[Answer:Wait-wait-wait, what is ct.room.story.jump, again?|ct.room.story.jump]]", + "title": "GettingScene", + "tags": "tag1 tag2", + "body": "<< cat thoughtful >> \n\nThe details of the current node can be read by these variables:\n\nstory.character is the name of the current character. E.g. if you write \"John: Hey there!\" in Yarn, story.character will be \"John\". Names cannot contain spaces! \nstory.body is what I'm saying right now :)\nstory.text is character's name and body combined, in case it comes in handy.\nstory.title is the name of a node. You can view it in the top-left corner there.\nstory.command is the code of the current command, if any.\nstory.tags is an array of strings with tags written at Yarn Editor. Use them however you want!\n\n<>\n\n[[How do you use tags, though?|CommandsExample]]\n[[Are there any special variables?|ExtraFunctions]]", "position": { - "x": 1588, - "y": 185 + "x": 6370, + "y": 5116 }, "colorID": 0 }, { - "title": "Getting the current scene", - "tags": "cat:thoughtful", - "body": "The details of the current node can be read by these variables:\n\n\nct.room.story.text is what I'm saying right now :) It is the body of your node in Yarn.\nct.room.story.title is the name of a node. You can view it in the top-left corner there.\nct.room.story.raw is an object with the unprocessed body and other meta information exported by Yarn.\nct.room.story.commands is an array of strings with commands included in the story node.\nct.room.story.tags is an array of strings with tags written at Yarn Editor. Use them however you want!\n\n[[Answer:How do you use tags, though?|Example of tags]]\n[[Answer:Are there any special variables?|Extra functions]]", + "title": "ImportingToCt", + "tags": "", + "body": "<< cat normal >> \n\nOpen the downloaded JSON file and copy its contents. Now open ct.js. Click the \"Settings\" tab, and create a new script. Write the beginning of a line:\nvar myStory = \nand then paste the JSON file. That's enough, you can save the script and move on.\n\n[[Wait, where do I get this JSON file, again?|ExportProject]]\n[[Got it.|OpeningStory]]", "position": { - "x": 1899, - "y": 188 + "x": 6398, + "y": 4232 }, "colorID": 0 }, { - "title": "Example of tags", - "tags": "cat:happy sound:tada", - "body": "I use them to change my texture and play sounds!\n\n[[Answer:Whoa! *O* Anything else??|Extra functions]]", + "title": "LoadingFile", + "tags": "", + "body": "<< cat thoughtful >>\n\nYou can use this code to load a story from an external file:\n\nct.yarn.openFromFile('myStory.json')\n.then(story => {\n ct.room.story = story;\n});\n\nJSON files are better placed into your projects folder → 'include' subdirectory.\n\nPlayer: Thanks!\n\n[[FAQ]]", "position": { - "x": 2161, - "y": 448 + "x": 6667, + "y": 7538 }, "colorID": 0 }, { - "title": "ct.room.story.jump", + "title": "MultipleFiles", "tags": "", - "body": "All nodes in Yarn are named, and you can use them to instantly jump to a specific node, out of your story's flow. Just think about its debugging capabilities 👀\nIf you haven't specifically named all your story nodes in Yarn Editor, they all are probably just Node1, Node2, Node3… nothing fancy, really.\n\n[[Answer:Ok, I gotcha|Getting the current scene]]", + "body": "<< cat happy >>\n\nThat's actually easy. Export each one to JSON, create one Script in ct's Settings tab, and give them different variable names. E.g.\nvar detectiveMystery = {/*yarn json goes here*/};\n/*in the other Script*/\nvar bossMonologue = {/* another yarn json */};\n/* and in the other */\nvar iLoveChocolate = {/* here ct bursts into tears and eats all the chocolate */};\n\nAnd so on.\n\nYou can also use files in the `include` folder.\n\n[[Thanks!|FAQ]]\n[[Aaaand how do I use these files?|LoadingFile]]", "position": { - "x": 1699, - "y": 489 + "x": 6999, + "y": 7409 }, "colorID": 0 }, { - "title": "Extra functions", - "tags": "cat:normal", - "body": "Yes, there are some extra variables that may help you:\n\nct.room.story.nodes is a map of all the nodes in your story. E.g. ct.room.story.nodes['Extra functions'] will return the current node.\nct.room.story.startingNode is the name of, well, the starting node.\n\n[[Answer:That's dope! But I have some questions…|FAQ]]", + "title": "NavigatingStory", + "tags": "", + "body": "<< cat happy>>\n\nCat: I will use just \"story\" instead of ct.room.story from now, ok?\n\nPlayer: Of course!\n\n<< cat thoughtful >> \n\nWe should use story in our function calls:\nstory.start() will put us in the beginning of it.\nstory.next() will advance the story. It will pull new speech lines, new options, and load commands, but one thing at a time.\nstory.back() will switch to the previous story node. It works just once, though, like in ye olde MS Paint.\nstory.options is an array of strings with currently available dialogue options, if there are any.\nstory.say(string) will navigate the story further. The string must match with entries from ct.room.story.options.\n\n<< cat normal >> \n\n[[But what about the speech of NPCs and stuff?|GettingScene]]\n[[Can I jump to a specific position in story, by code?|StoryJump]]", "position": { - "x": 2423, - "y": 178 + "x": 6397, + "y": 4790 }, "colorID": 0 }, { - "title": "FAQ", - "tags": "cat:normal", - "body": "Ask me anything. Well, anything that was hardcoded by Comigo.\n\n[[Answer:How do I use multiple Yarn projects?|How do I use multiple Yarn projects?]]\n[[Answer:How do I make transitions, effects and stuff?|How do I make transitions, effects and stuff?]]\n[[Answer:How do I format my story nodes in the Yarn Editor?|How do I format my story nodes in the Yarn Editor?]]\n[[Answer:Where are the sources of this demo?|Where are the sources of this demo?]]\n[[Answer:Scripts are not that handy, especially when updating the story. Other options??|Loading stories from a file]]", + "title": "OpeningStory", + "tags": "", + "body": "The JSON file is still a raw product, though. In order to use your story, you should first load it in your game's code. For example, we can write the following to a room's OnCreate code:\nct.room.story = ct.yarn.openStory(myStory);\nBy default, ct.yarn will look for the 'Start' node. If you want to provide another default title, use ct.yarn.openStory(myStory, 'Specific title');\nct.yarn will read your JSON and structure it in a more useful format. You can now use other methods of ct.yarn to navigate your story, search for its nodes and get dialogue options.\n\nPlayer: Mhm…\n\n[[NavigatingStory]]", + "position": { + "x": 6406, + "y": 4484 + }, + "colorID": 0 + }, + { + "title": "SeeConditionals", + "tags": "", + "body": "Then go to FAQ page ;)\n\n<< set $seeConditional = true>> \n\nPlayer: Eh, ok…\n\n[[FAQ]]", + "position": { + "x": 5827, + "y": 7806 + }, + "colorID": 1 + }, + { + "title": "Sources", + "tags": "", + "body": "They are bundled with each fresh ct.js version. Check the ct.js folder > examples > yarn.ict.\n\nPlayer: Thanks!\n\n[[FAQ]]", "position": { - "x": 2715, - "y": 252 + "x": 5557, + "y": 7520 }, "colorID": 0 }, { - "title": "How do I use multiple Yarn projects?", - "tags": "cat:happy", - "body": "That's actually easy. Export each one to JSON, create one Script in ct's Settings tab, and give them different variable names. E.g.\nvar detectiveMystery = {/*yarn json goes here*/};\n/*in the other Script*/\nvar bossMonologue = {/* another yarn json */};\n/* and in the other */\nvar iLoveChocolate = {/* here ct bursts into tears and eats all the chocolate */};\n\nAnd so on.\n\n[[Answer:Thanks!|FAQ]]", + "title": "Start", + "tags": "", + "body": "<> \nCat: Hello, fellow game developer! You are playing the educational demo of using Yarn Editor for creating interactive dialogues in ct.js!\nPlayer: Such wow. I'm in.\n[[WhatIsYarn]]", + "position": { + "x": 6413, + "y": 3384 + }, + "colorID": 4 + }, + { + "title": "StoryJump", + "tags": "", + "body": "<< cat happy >> \nYes! All nodes in Yarn are named, and you can use them to instantly jump to a specific node, out of your story's flow.\nThe function is ct.room.story.jump('SomeNode');\n<< cat thoughtful >> \nJust think about its debugging capabilities 👀\nIf you haven't specifically named all your story nodes in Yarn Editor, they all are probably just Node1, Node2, Node3… nothing fancy, really.\n\n<>\n\nPlayer: Ok, I got ya\n\n[[GettingScene]]", + "position": { + "x": 6072, + "y": 4996 + }, + "colorID": 1 + }, + { + "title": "WhatIsYarn", + "tags": "", + "body": "<> \nCat: Yarn Editor is an open-source tool for writing game dialogues.\n<> \nCat: Its license is MIT, much like ct.js, and it means that you can use Yarn Editor in any of your projects, be they commercial or not. For free.\nPlayer: Cool! So, how to use Yarn projects in ct.js?\n[[ExportProject]]", "position": { - "x": 2980, - "y": 447 + "x": 6405, + "y": 3655 }, "colorID": 0 }, { - "title": "How do I make transitions, effects and stuff?", - "tags": "cat:happy", - "body": "That's up to you! You have the power of ct.js, the flexibility of JavaScript and the exploitability of this module.\nYou can split your stories into scenes, load them into ct.js, and then create a room for each one, with nifty backgrounds and decorations. Much like in visual novels! *U*\nYou can use ct.room.story.raw instead of e.g. ct.room.story.text to get the source of a node and get extra variables that you put in the body of your node.\n\nIf you struggle, though, check out the source of this edutational demo!\n\n[[Answer:Thanks!|FAQ]]", + "title": "TyingTogether", + "tags": "", + "body": "There are two main ways:\n— by reading and utilizing variables like story.text or story.options,\n— or by listening story's events.\n\nPlayer: Let's see them.\n\n[[ByVariables]]", "position": { - "x": 2980, - "y": 203 + "x": 6365, + "y": 5740 }, "colorID": 0 }, { - "title": "How do I format my story nodes in the Yarn Editor?", - "tags": "cat:normal", - "body": "It is recommended that you put dialogue options at the end of a node. Otherwise, use Yarn as usual!\n\n[[Answer:Thanks!|FAQ]]", + "title": "ByVariables", + "tags": "", + "body": "<>\nIn the first case, you should check story.command, story.text and story.options.\n\nPlayer: Let's see an example.\n\n<>\n\nvar story = ct.room.story;\n<>\nif (ct.actions.Next.pressed) {\n if (story.text) { /* advance by buttons only when someone is talking */\n story.next();\n if (story.text) {\n /* create new blurbs */\n } else if (story.options) {\n /* create dialogue options */\n } else if (story.command) {\n /* custom logic goes here */\n }\n }\n}\n<>\n\nPlayer: Good, and by events?\n\n[[ByEvents]]", "position": { - "x": 2938, - "y": 712 + "x": 6361, + "y": 6012 }, "colorID": 0 }, { - "title": "Where are the sources of this demo?", + "title": "ByEvents", "tags": "", - "body": "They are bundled with each fresh ct.js version. Check the ct.js folder > examples > yarn.ict.\n\n[[Answer:Thanks!|FAQ]]", + "body": "<>\nIt is a bit simpler as you always execute the needed code:\n<>\n\nstory.on('text', text => {\n<>\n /* Someone said something, let's create a blurb for `text` variable */\n});\nstory.on('options', options => {\n /* we are now presented with dialogue options! We need to create reply buttons… */\n});\nstory.on('command', command => {\n /* custom actions may appear here */\n});\n<>\n\nPlayer: Now I feel immense power in my hands! But I still have questions…\n\n[[FAQ]]", "position": { - "x": 2666, - "y": 569 + "x": 6384, + "y": 6309 }, "colorID": 0 }, { - "title": "Loading stories from a file", - "tags": "cat:thoughtful", - "body": "You can use this code to load a story from an external file:\n\nct.yarn.openFromFile('myStory.json')\n.then(story => {\n ct.room.story = story;\n});\n\nJSON files are better placed into your projects folder → 'include' subdirectory.\n\n[[Answer:Thanks!|FAQ]]", + "title": "FAQProjects", + "tags": "", + "body": "Yes?\n\n[[How do I use multiple Yarn projects?|MultipleFiles]]\n[[Scripts are not that handy, especially when updating the story. Other options??|LoadingFile]]", + "position": { + "x": 6670, + "y": 7220 + }, + "colorID": 2 + }, + { + "title": "FAQStories", + "tags": "", + "body": "Yes?\n\nPlayer: How do I format my story nodes in the Yarn Editor?\n[[FormatStory]]", + "position": { + "x": 7131, + "y": 6572 + }, + "colorID": 2 + }, + { + "title": "FAQMore", + "tags": "", + "body": "Yes?\n\n[[This demo is cool! Where are its sources?|Sources]]\n[[What about conditionals and variables?|Conditionals]]\n[[How do I make transitions, effects and stuff?|Extending]]", + "position": { + "x": 5610, + "y": 7018 + }, + "colorID": 2 + }, + { + "title": "Fin", + "tags": "", + "body": "<>\n\nOk. Go make some great games now!\n\n<>", "position": { - "x": 2982, - "y": -72 + "x": 6389, + "y": 8356 }, "colorID": 0 } diff --git a/src/examples/yarn/include/wait.json b/src/examples/yarn/include/wait.json new file mode 100644 index 000000000..f9751f78a --- /dev/null +++ b/src/examples/yarn/include/wait.json @@ -0,0 +1,12 @@ +[ + { + "title": "Start", + "tags": "", + "body": "First line…\nPause…\n<>\nSecond line…", + "position": { + "x": 477, + "y": 2188 + }, + "colorID": 0 + } +] \ No newline at end of file diff --git a/src/examples/yarn/snd/s0bd4a1eb-b5f1-4047-a8dd-56feca282803.mp3 b/src/examples/yarn/snd/s0bd4a1eb-b5f1-4047-a8dd-56feca282803.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..5488154b3d7fafd7bbe437d4ff6796ff8743aa66 GIT binary patch literal 18953 zcmd>_hf`Be^yqI2AwYmo4b_AaLlF`P0)iTP3rPP0BBszm1VjaELN5V=6hl+GRH-5; zYUnK>NUOHxu2dzWjwl$4az?9#ML=Pq0> zcX*d4yUfqeukG?GM#B?-Md(s-OEZts;(Bx2>X}u5# z1RRsUm7kx_$-Cn1(T(OTz+eGCLV05sLU;%SLWaeTZaI8HzWu==d<2>u&1I|L#_yf= z6x`;Z6y+5i=QgOnzI`sve|T0 zMu{5n!KKY@38Em!WOJemBvG1RWhsUTZR1w)T7>ws52Uco<=|D?vsq6eJ>5X+aj%}Q)IL+^32E6p(Ui|)4o50&n?j{*kz@T z)iz~x>i3G99ITozJB0-*LoinY`%2&0(g zmb0_X?csM!;_>+Un3rVl{Dm*mVQfK6A2bjt;`o zJiSDf5l>rBHX*-vMU6*Mxf87cF!9Se65P8m1~=naiEnum^}SO8>e30u9>tZ--u2FwVY4SXJJe)c z<-CFqIJlP*R4zd(S2gEQ zMB|Aw3ckqe0%qPfhuOY2WIVbD{;1qIT0MO#`?KMftYZd94u2d(i5gKbbKj%;?Ci2- zRpK}G=Kbb}B~-sIXCALFOr1&eRI;S_hM#@K_tk!%Qn}2HeJZEyo33X#sDG1XA}jw> z^E@_RlZCKP|CsQ{yx4rtzTsXB27D-`CNwN{I4%KaP