From cd24feeeb902fdf585529ed81015c6dbe9d475b0 Mon Sep 17 00:00:00 2001 From: IjzerenHein Date: Tue, 28 Jul 2015 09:44:03 +0200 Subject: [PATCH] Updated dist --- dist/autolayout.js | 639 ++++++++++++++++++++++------------------ dist/autolayout.min.js | 8 +- dist/autolayout.min.map | 2 +- 3 files changed, 354 insertions(+), 295 deletions(-) diff --git a/dist/autolayout.js b/dist/autolayout.js index 91f8d0f..97a138d 100644 --- a/dist/autolayout.js +++ b/dist/autolayout.js @@ -8,8 +8,8 @@ * @copyright Gloey Apps, 2015 * * @library autolayout.js -* @version 0.4.0 -* @generated 27-07-2015 +* @version 0.4.1 +* @generated 28-07-2015 */ /** * Parts Copyright (C) 2011-2012, Alex Russell (slightlyoff@chromium.org) @@ -1273,183 +1273,194 @@ var parserExt = (function () { cascade: (superto || []).concat([view], [].concat.apply([], views), tosuper || []) }; }, - peg$c6 = 'H', - peg$c7 = { type: 'literal', value: 'H', description: '"H"' }, - peg$c8 = 'V', - peg$c9 = { type: 'literal', value: 'V', description: '"V"' }, - peg$c10 = 'Z', - peg$c11 = { type: 'literal', value: 'Z', description: '"Z"' }, - peg$c12 = function peg$c12(orient) { - return orient == 'H' ? 'horizontal' : orient == 'V' ? 'vertical' : 'zIndex'; + peg$c6 = 'HV', + peg$c7 = { type: 'literal', value: 'HV', description: '"HV"' }, + peg$c8 = function peg$c8() { + return 'horzvert'; + }, + peg$c9 = 'H', + peg$c10 = { type: 'literal', value: 'H', description: '"H"' }, + peg$c11 = function peg$c11() { + return 'horizontal'; }, - peg$c13 = ' ', - peg$c14 = { type: 'literal', value: ' ', description: '" "' }, - peg$c15 = '//', - peg$c16 = { type: 'literal', value: '//', description: '"//"' }, - peg$c17 = { type: 'any', description: 'any character' }, - peg$c18 = '|', - peg$c19 = { type: 'literal', value: '|', description: '"|"' }, - peg$c20 = function peg$c20() { + peg$c12 = 'V', + peg$c13 = { type: 'literal', value: 'V', description: '"V"' }, + peg$c14 = function peg$c14() { + return 'vertical'; + }, + peg$c15 = 'Z', + peg$c16 = { type: 'literal', value: 'Z', description: '"Z"' }, + peg$c17 = function peg$c17() { + return 'zIndex'; + }, + peg$c18 = ' ', + peg$c19 = { type: 'literal', value: ' ', description: '" "' }, + peg$c20 = '//', + peg$c21 = { type: 'literal', value: '//', description: '"//"' }, + peg$c22 = { type: 'any', description: 'any character' }, + peg$c23 = '|', + peg$c24 = { type: 'literal', value: '|', description: '"|"' }, + peg$c25 = function peg$c25() { return { view: null }; }, - peg$c21 = '[', - peg$c22 = { type: 'literal', value: '[', description: '"["' }, - peg$c23 = ']', - peg$c24 = { type: 'literal', value: ']', description: '"]"' }, - peg$c25 = function peg$c25(view, predicates, cascadedViews) { + peg$c26 = '[', + peg$c27 = { type: 'literal', value: '[', description: '"["' }, + peg$c28 = ']', + peg$c29 = { type: 'literal', value: ']', description: '"]"' }, + peg$c30 = function peg$c30(view, predicates, cascadedViews) { return extend(extend(view, predicates ? { constraints: predicates } : {}), cascadedViews ? { cascade: cascadedViews } : {}); }, - peg$c26 = function peg$c26(views, connection) { + peg$c31 = function peg$c31(views, connection) { return [].concat([].concat.apply([], views), [connection]); }, - peg$c27 = '->', - peg$c28 = { type: 'literal', value: '->', description: '"->"' }, - peg$c29 = function peg$c29() { + peg$c32 = '->', + peg$c33 = { type: 'literal', value: '->', description: '"->"' }, + peg$c34 = function peg$c34() { return [{ relation: 'none', $parserOffset: offset() }]; }, - peg$c30 = '-', - peg$c31 = { type: 'literal', value: '-', description: '"-"' }, - peg$c32 = function peg$c32(predicateList) { + peg$c35 = '-', + peg$c36 = { type: 'literal', value: '-', description: '"-"' }, + peg$c37 = function peg$c37(predicateList) { return predicateList; }, - peg$c33 = function peg$c33() { + peg$c38 = function peg$c38() { return [{ relation: 'equ', constant: 'default', $parserOffset: offset() }]; }, - peg$c34 = '~', - peg$c35 = { type: 'literal', value: '~', description: '"~"' }, - peg$c36 = function peg$c36() { + peg$c39 = '~', + peg$c40 = { type: 'literal', value: '~', description: '"~"' }, + peg$c41 = function peg$c41() { return [{ relation: 'equ', equalSpacing: true, $parserOffset: offset() }]; }, - peg$c37 = '', - peg$c38 = function peg$c38() { + peg$c42 = '', + peg$c43 = function peg$c43() { return [{ relation: 'equ', constant: 0, $parserOffset: offset() }]; }, - peg$c39 = function peg$c39(p) { + peg$c44 = function peg$c44(p) { return [{ relation: 'equ', multiplier: p.multiplier, $parserOffset: offset() }]; }, - peg$c40 = function peg$c40(n) { + peg$c45 = function peg$c45(n) { return [{ relation: 'equ', constant: n, $parserOffset: offset() }]; }, - peg$c41 = '(', - peg$c42 = { type: 'literal', value: '(', description: '"("' }, - peg$c43 = ',', - peg$c44 = { type: 'literal', value: ',', description: '","' }, - peg$c45 = ')', - peg$c46 = { type: 'literal', value: ')', description: '")"' }, - peg$c47 = function peg$c47(p, ps) { + peg$c46 = '(', + peg$c47 = { type: 'literal', value: '(', description: '"("' }, + peg$c48 = ',', + peg$c49 = { type: 'literal', value: ',', description: '","' }, + peg$c50 = ')', + peg$c51 = { type: 'literal', value: ')', description: '")"' }, + peg$c52 = function peg$c52(p, ps) { return [p].concat(ps.map(function (p) { return p[1]; })); }, - peg$c48 = '@', - peg$c49 = { type: 'literal', value: '@', description: '"@"' }, - peg$c50 = function peg$c50(r, o, p) { + peg$c53 = '@', + peg$c54 = { type: 'literal', value: '@', description: '"@"' }, + peg$c55 = function peg$c55(r, o, p) { return extend({ relation: 'equ' }, r || {}, o, p ? p[1] : {}); }, - peg$c51 = function peg$c51(r, o, p) { + peg$c56 = function peg$c56(r, o, p) { return extend({ relation: 'equ', equalSpacing: true }, r || {}, o, p ? p[1] : {}); }, - peg$c52 = '==', - peg$c53 = { type: 'literal', value: '==', description: '"=="' }, - peg$c54 = function peg$c54() { + peg$c57 = '==', + peg$c58 = { type: 'literal', value: '==', description: '"=="' }, + peg$c59 = function peg$c59() { return { relation: 'equ', $parserOffset: offset() }; }, - peg$c55 = '<=', - peg$c56 = { type: 'literal', value: '<=', description: '"<="' }, - peg$c57 = function peg$c57() { + peg$c60 = '<=', + peg$c61 = { type: 'literal', value: '<=', description: '"<="' }, + peg$c62 = function peg$c62() { return { relation: 'leq', $parserOffset: offset() }; }, - peg$c58 = '>=', - peg$c59 = { type: 'literal', value: '>=', description: '">="' }, - peg$c60 = function peg$c60() { + peg$c63 = '>=', + peg$c64 = { type: 'literal', value: '>=', description: '">="' }, + peg$c65 = function peg$c65() { return { relation: 'geq', $parserOffset: offset() }; }, - peg$c61 = /^[0-9]/, - peg$c62 = { type: 'class', value: '[0-9]', description: '[0-9]' }, - peg$c63 = function peg$c63(digits) { + peg$c66 = /^[0-9]/, + peg$c67 = { type: 'class', value: '[0-9]', description: '[0-9]' }, + peg$c68 = function peg$c68(digits) { return { priority: parseInt(digits.join(''), 10) }; }, - peg$c64 = function peg$c64(n) { + peg$c69 = function peg$c69(n) { return { constant: n }; }, - peg$c65 = '%', - peg$c66 = { type: 'literal', value: '%', description: '"%"' }, - peg$c67 = function peg$c67(n) { + peg$c70 = '%', + peg$c71 = { type: 'literal', value: '%', description: '"%"' }, + peg$c72 = function peg$c72(n) { return { view: null, multiplier: n / 100 }; }, - peg$c68 = function peg$c68(vn, a, m, c) { + peg$c73 = function peg$c73(vn, a, m, c) { return { view: vn.view, attribute: a ? a : undefined, multiplier: m ? m : 1, constant: c ? c : undefined }; }, - peg$c69 = '.left', - peg$c70 = { type: 'literal', value: '.left', description: '".left"' }, - peg$c71 = function peg$c71() { + peg$c74 = '.left', + peg$c75 = { type: 'literal', value: '.left', description: '".left"' }, + peg$c76 = function peg$c76() { return 'left'; }, - peg$c72 = '.right', - peg$c73 = { type: 'literal', value: '.right', description: '".right"' }, - peg$c74 = function peg$c74() { + peg$c77 = '.right', + peg$c78 = { type: 'literal', value: '.right', description: '".right"' }, + peg$c79 = function peg$c79() { return 'right'; }, - peg$c75 = '.top', - peg$c76 = { type: 'literal', value: '.top', description: '".top"' }, - peg$c77 = function peg$c77() { + peg$c80 = '.top', + peg$c81 = { type: 'literal', value: '.top', description: '".top"' }, + peg$c82 = function peg$c82() { return 'top'; }, - peg$c78 = '.bottom', - peg$c79 = { type: 'literal', value: '.bottom', description: '".bottom"' }, - peg$c80 = function peg$c80() { + peg$c83 = '.bottom', + peg$c84 = { type: 'literal', value: '.bottom', description: '".bottom"' }, + peg$c85 = function peg$c85() { return 'bottom'; }, - peg$c81 = '.width', - peg$c82 = { type: 'literal', value: '.width', description: '".width"' }, - peg$c83 = function peg$c83() { + peg$c86 = '.width', + peg$c87 = { type: 'literal', value: '.width', description: '".width"' }, + peg$c88 = function peg$c88() { return 'width'; }, - peg$c84 = '.height', - peg$c85 = { type: 'literal', value: '.height', description: '".height"' }, - peg$c86 = function peg$c86() { + peg$c89 = '.height', + peg$c90 = { type: 'literal', value: '.height', description: '".height"' }, + peg$c91 = function peg$c91() { return 'height'; }, - peg$c87 = '.centerX', - peg$c88 = { type: 'literal', value: '.centerX', description: '".centerX"' }, - peg$c89 = function peg$c89() { + peg$c92 = '.centerX', + peg$c93 = { type: 'literal', value: '.centerX', description: '".centerX"' }, + peg$c94 = function peg$c94() { return 'centerX'; }, - peg$c90 = '.centerY', - peg$c91 = { type: 'literal', value: '.centerY', description: '".centerY"' }, - peg$c92 = function peg$c92() { + peg$c95 = '.centerY', + peg$c96 = { type: 'literal', value: '.centerY', description: '".centerY"' }, + peg$c97 = function peg$c97() { return 'centerY'; }, - peg$c93 = '/', - peg$c94 = { type: 'literal', value: '/', description: '"/"' }, - peg$c95 = function peg$c95(n) { + peg$c98 = '/', + peg$c99 = { type: 'literal', value: '/', description: '"/"' }, + peg$c100 = function peg$c100(n) { return 1 / n; }, - peg$c96 = '*', - peg$c97 = { type: 'literal', value: '*', description: '"*"' }, - peg$c98 = function peg$c98(n) { + peg$c101 = '*', + peg$c102 = { type: 'literal', value: '*', description: '"*"' }, + peg$c103 = function peg$c103(n) { return n; }, - peg$c99 = function peg$c99(n) { + peg$c104 = function peg$c104(n) { return -n; }, - peg$c100 = '+', - peg$c101 = { type: 'literal', value: '+', description: '"+"' }, - peg$c102 = /^[a-zA-Z_]/, - peg$c103 = { type: 'class', value: '[a-zA-Z_]', description: '[a-zA-Z_]' }, - peg$c104 = /^[a-zA-Z0-9_]/, - peg$c105 = { type: 'class', value: '[a-zA-Z0-9_]', description: '[a-zA-Z0-9_]' }, - peg$c106 = function peg$c106(f, v) { + peg$c105 = '+', + peg$c106 = { type: 'literal', value: '+', description: '"+"' }, + peg$c107 = /^[a-zA-Z_]/, + peg$c108 = { type: 'class', value: '[a-zA-Z_]', description: '[a-zA-Z_]' }, + peg$c109 = /^[a-zA-Z0-9_]/, + peg$c110 = { type: 'class', value: '[a-zA-Z0-9_]', description: '[a-zA-Z0-9_]' }, + peg$c111 = function peg$c111(f, v) { return { view: f + v }; }, - peg$c107 = '.', - peg$c108 = { type: 'literal', value: '.', description: '"."' }, - peg$c109 = function peg$c109(digits, decimals) { + peg$c112 = '.', + peg$c113 = { type: 'literal', value: '.', description: '"."' }, + peg$c114 = function peg$c114(digits, decimals) { return parseFloat(digits.concat('.').concat(decimals).join(''), 10); }, - peg$c110 = function peg$c110(digits) { + peg$c115 = function peg$c115(digits) { return parseInt(digits.join(''), 10); }, peg$currPos = 0, @@ -1753,42 +1764,71 @@ var parserExt = (function () { var s0, s1; s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 72) { + if (input.substr(peg$currPos, 2) === peg$c6) { s1 = peg$c6; - peg$currPos++; + peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$c7); } } - if (s1 === peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 86) { - s1 = peg$c8; + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c8(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 72) { + s1 = peg$c9; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c9); + peg$fail(peg$c10); } } - if (s1 === peg$FAILED) { - if (input.charCodeAt(peg$currPos) === 90) { - s1 = peg$c10; + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c11(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 86) { + s1 = peg$c12; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c11); + peg$fail(peg$c13); + } + } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c14(); + } + s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 90) { + s1 = peg$c15; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { + peg$fail(peg$c16); + } } + if (s1 !== peg$FAILED) { + peg$reportedPos = s0; + s1 = peg$c17(); + } + s0 = s1; } } } - if (s1 !== peg$FAILED) { - peg$reportedPos = s0; - s1 = peg$c12(s1); - } - s0 = s1; return s0; } @@ -1799,34 +1839,34 @@ var parserExt = (function () { s0 = peg$currPos; s1 = []; if (input.charCodeAt(peg$currPos) === 32) { - s2 = peg$c13; + s2 = peg$c18; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c14); + peg$fail(peg$c19); } } while (s2 !== peg$FAILED) { s1.push(s2); if (input.charCodeAt(peg$currPos) === 32) { - s2 = peg$c13; + s2 = peg$c18; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c14); + peg$fail(peg$c19); } } } if (s1 !== peg$FAILED) { - if (input.substr(peg$currPos, 2) === peg$c15) { - s2 = peg$c15; + if (input.substr(peg$currPos, 2) === peg$c20) { + s2 = peg$c20; peg$currPos += 2; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c16); + peg$fail(peg$c21); } } if (s2 !== peg$FAILED) { @@ -1837,7 +1877,7 @@ var parserExt = (function () { } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c17); + peg$fail(peg$c22); } } while (s4 !== peg$FAILED) { @@ -1848,7 +1888,7 @@ var parserExt = (function () { } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c17); + peg$fail(peg$c22); } } } @@ -1876,17 +1916,17 @@ var parserExt = (function () { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 124) { - s1 = peg$c18; + s1 = peg$c23; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c19); + peg$fail(peg$c24); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c20(); + s1 = peg$c25(); } s0 = s1; @@ -1898,12 +1938,12 @@ var parserExt = (function () { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 91) { - s1 = peg$c21; + s1 = peg$c26; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c22); + peg$fail(peg$c27); } } if (s1 !== peg$FAILED) { @@ -1920,17 +1960,17 @@ var parserExt = (function () { } if (s4 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 93) { - s5 = peg$c23; + s5 = peg$c28; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c24); + peg$fail(peg$c29); } } if (s5 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c25(s2, s3, s4); + s1 = peg$c30(s2, s3, s4); s0 = s1; } else { peg$currPos = s0; @@ -2012,7 +2052,7 @@ var parserExt = (function () { s3 = peg$parseconnection(); if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c26(s2, s3); + s1 = peg$c31(s2, s3); s0 = s1; } else { peg$currPos = s0; @@ -2034,46 +2074,46 @@ var parserExt = (function () { var s0, s1, s2, s3; s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c27) { - s1 = peg$c27; + if (input.substr(peg$currPos, 2) === peg$c32) { + s1 = peg$c32; peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c28); + peg$fail(peg$c33); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c29(); + s1 = peg$c34(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 45) { - s1 = peg$c30; + s1 = peg$c35; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c31); + peg$fail(peg$c36); } } if (s1 !== peg$FAILED) { s2 = peg$parsepredicateList(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 45) { - s3 = peg$c30; + s3 = peg$c35; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c31); + peg$fail(peg$c36); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c32(s2); + s1 = peg$c37(s2); s0 = s1; } else { peg$currPos = s0; @@ -2090,45 +2130,45 @@ var parserExt = (function () { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 45) { - s1 = peg$c30; + s1 = peg$c35; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c31); + peg$fail(peg$c36); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c33(); + s1 = peg$c38(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 126) { - s1 = peg$c34; + s1 = peg$c39; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c35); + peg$fail(peg$c40); } } if (s1 !== peg$FAILED) { s2 = peg$parseequalSpacingPredicateList(); if (s2 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 126) { - s3 = peg$c34; + s3 = peg$c39; peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c35); + peg$fail(peg$c40); } } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c32(s2); + s1 = peg$c37(s2); s0 = s1; } else { peg$currPos = s0; @@ -2145,25 +2185,25 @@ var parserExt = (function () { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 126) { - s1 = peg$c34; + s1 = peg$c39; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c35); + peg$fail(peg$c40); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c36(); + s1 = peg$c41(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - s1 = peg$c37; + s1 = peg$c42; if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c38(); + s1 = peg$c43(); } s0 = s1; } @@ -2193,7 +2233,7 @@ var parserExt = (function () { s1 = peg$parsepercentage(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c39(s1); + s1 = peg$c44(s1); } s0 = s1; if (s0 === peg$FAILED) { @@ -2201,7 +2241,7 @@ var parserExt = (function () { s1 = peg$parsenumber(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c40(s1); + s1 = peg$c45(s1); } s0 = s1; } @@ -2214,12 +2254,12 @@ var parserExt = (function () { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 40) { - s1 = peg$c41; + s1 = peg$c46; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c42); + peg$fail(peg$c47); } } if (s1 !== peg$FAILED) { @@ -2228,12 +2268,12 @@ var parserExt = (function () { s3 = []; s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 44) { - s5 = peg$c43; + s5 = peg$c48; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c44); + peg$fail(peg$c49); } } if (s5 !== peg$FAILED) { @@ -2253,12 +2293,12 @@ var parserExt = (function () { s3.push(s4); s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 44) { - s5 = peg$c43; + s5 = peg$c48; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c44); + peg$fail(peg$c49); } } if (s5 !== peg$FAILED) { @@ -2277,17 +2317,17 @@ var parserExt = (function () { } if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { - s4 = peg$c45; + s4 = peg$c50; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c46); + peg$fail(peg$c51); } } if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c47(s2, s3); + s1 = peg$c52(s2, s3); s0 = s1; } else { peg$currPos = s0; @@ -2322,12 +2362,12 @@ var parserExt = (function () { if (s2 !== peg$FAILED) { s3 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { - s4 = peg$c48; + s4 = peg$c53; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c49); + peg$fail(peg$c54); } } if (s4 !== peg$FAILED) { @@ -2348,7 +2388,7 @@ var parserExt = (function () { } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c50(s1, s2, s3); + s1 = peg$c55(s1, s2, s3); s0 = s1; } else { peg$currPos = s0; @@ -2371,12 +2411,12 @@ var parserExt = (function () { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 40) { - s1 = peg$c41; + s1 = peg$c46; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c42); + peg$fail(peg$c47); } } if (s1 !== peg$FAILED) { @@ -2385,12 +2425,12 @@ var parserExt = (function () { s3 = []; s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 44) { - s5 = peg$c43; + s5 = peg$c48; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c44); + peg$fail(peg$c49); } } if (s5 !== peg$FAILED) { @@ -2410,12 +2450,12 @@ var parserExt = (function () { s3.push(s4); s4 = peg$currPos; if (input.charCodeAt(peg$currPos) === 44) { - s5 = peg$c43; + s5 = peg$c48; peg$currPos++; } else { s5 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c44); + peg$fail(peg$c49); } } if (s5 !== peg$FAILED) { @@ -2434,17 +2474,17 @@ var parserExt = (function () { } if (s3 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 41) { - s4 = peg$c45; + s4 = peg$c50; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c46); + peg$fail(peg$c51); } } if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c47(s2, s3); + s1 = peg$c52(s2, s3); s0 = s1; } else { peg$currPos = s0; @@ -2479,12 +2519,12 @@ var parserExt = (function () { if (s2 !== peg$FAILED) { s3 = peg$currPos; if (input.charCodeAt(peg$currPos) === 64) { - s4 = peg$c48; + s4 = peg$c53; peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c49); + peg$fail(peg$c54); } } if (s4 !== peg$FAILED) { @@ -2505,7 +2545,7 @@ var parserExt = (function () { } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c51(s1, s2, s3); + s1 = peg$c56(s1, s2, s3); s0 = s1; } else { peg$currPos = s0; @@ -2527,50 +2567,50 @@ var parserExt = (function () { var s0, s1; s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c52) { - s1 = peg$c52; + if (input.substr(peg$currPos, 2) === peg$c57) { + s1 = peg$c57; peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c53); + peg$fail(peg$c58); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c54(); + s1 = peg$c59(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c55) { - s1 = peg$c55; + if (input.substr(peg$currPos, 2) === peg$c60) { + s1 = peg$c60; peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c56); + peg$fail(peg$c61); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c57(); + s1 = peg$c62(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c58) { - s1 = peg$c58; + if (input.substr(peg$currPos, 2) === peg$c63) { + s1 = peg$c63; peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c59); + peg$fail(peg$c64); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c60(); + s1 = peg$c65(); } s0 = s1; } @@ -2598,25 +2638,25 @@ var parserExt = (function () { s0 = peg$currPos; s1 = []; - if (peg$c61.test(input.charAt(peg$currPos))) { + if (peg$c66.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c62); + peg$fail(peg$c67); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); - if (peg$c61.test(input.charAt(peg$currPos))) { + if (peg$c66.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c62); + peg$fail(peg$c67); } } } @@ -2625,7 +2665,7 @@ var parserExt = (function () { } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c63(s1); + s1 = peg$c68(s1); } s0 = s1; @@ -2639,7 +2679,7 @@ var parserExt = (function () { s1 = peg$parsenumber(); if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c64(s1); + s1 = peg$c69(s1); } s0 = s1; @@ -2653,17 +2693,17 @@ var parserExt = (function () { s1 = peg$parsenumber(); if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 37) { - s2 = peg$c65; + s2 = peg$c70; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c66); + peg$fail(peg$c71); } } if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c67(s1); + s1 = peg$c72(s1); s0 = s1; } else { peg$currPos = s0; @@ -2699,7 +2739,7 @@ var parserExt = (function () { } if (s4 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c68(s1, s2, s3, s4); + s1 = peg$c73(s1, s2, s3, s4); s0 = s1; } else { peg$currPos = s0; @@ -2725,130 +2765,130 @@ var parserExt = (function () { var s0, s1; s0 = peg$currPos; - if (input.substr(peg$currPos, 5) === peg$c69) { - s1 = peg$c69; + if (input.substr(peg$currPos, 5) === peg$c74) { + s1 = peg$c74; peg$currPos += 5; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c70); + peg$fail(peg$c75); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c71(); + s1 = peg$c76(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c72) { - s1 = peg$c72; + if (input.substr(peg$currPos, 6) === peg$c77) { + s1 = peg$c77; peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c73); + peg$fail(peg$c78); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c74(); + s1 = peg$c79(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 4) === peg$c75) { - s1 = peg$c75; + if (input.substr(peg$currPos, 4) === peg$c80) { + s1 = peg$c80; peg$currPos += 4; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c76); + peg$fail(peg$c81); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c77(); + s1 = peg$c82(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 7) === peg$c78) { - s1 = peg$c78; + if (input.substr(peg$currPos, 7) === peg$c83) { + s1 = peg$c83; peg$currPos += 7; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c79); + peg$fail(peg$c84); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c80(); + s1 = peg$c85(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 6) === peg$c81) { - s1 = peg$c81; + if (input.substr(peg$currPos, 6) === peg$c86) { + s1 = peg$c86; peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c82); + peg$fail(peg$c87); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c83(); + s1 = peg$c88(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 7) === peg$c84) { - s1 = peg$c84; + if (input.substr(peg$currPos, 7) === peg$c89) { + s1 = peg$c89; peg$currPos += 7; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c85); + peg$fail(peg$c90); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c86(); + s1 = peg$c91(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 8) === peg$c87) { - s1 = peg$c87; + if (input.substr(peg$currPos, 8) === peg$c92) { + s1 = peg$c92; peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c88); + peg$fail(peg$c93); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c89(); + s1 = peg$c94(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 8) === peg$c90) { - s1 = peg$c90; + if (input.substr(peg$currPos, 8) === peg$c95) { + s1 = peg$c95; peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c91); + peg$fail(peg$c96); } } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c92(); + s1 = peg$c97(); } s0 = s1; } @@ -2867,19 +2907,19 @@ var parserExt = (function () { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 47) { - s1 = peg$c93; + s1 = peg$c98; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c94); + peg$fail(peg$c99); } } if (s1 !== peg$FAILED) { s2 = peg$parsenumber(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c95(s2); + s1 = peg$c100(s2); s0 = s1; } else { peg$currPos = s0; @@ -2892,19 +2932,19 @@ var parserExt = (function () { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 42) { - s1 = peg$c96; + s1 = peg$c101; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c97); + peg$fail(peg$c102); } } if (s1 !== peg$FAILED) { s2 = peg$parsenumber(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c98(s2); + s1 = peg$c103(s2); s0 = s1; } else { peg$currPos = s0; @@ -2924,19 +2964,19 @@ var parserExt = (function () { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 45) { - s1 = peg$c30; + s1 = peg$c35; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c31); + peg$fail(peg$c36); } } if (s1 !== peg$FAILED) { s2 = peg$parsenumber(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c99(s2); + s1 = peg$c104(s2); s0 = s1; } else { peg$currPos = s0; @@ -2949,19 +2989,19 @@ var parserExt = (function () { if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 43) { - s1 = peg$c100; + s1 = peg$c105; peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c101); + peg$fail(peg$c106); } } if (s1 !== peg$FAILED) { s2 = peg$parsenumber(); if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c98(s2); + s1 = peg$c103(s2); s0 = s1; } else { peg$currPos = s0; @@ -2982,25 +3022,25 @@ var parserExt = (function () { s0 = peg$currPos; s1 = peg$currPos; s2 = []; - if (peg$c102.test(input.charAt(peg$currPos))) { + if (peg$c107.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c103); + peg$fail(peg$c108); } } if (s3 !== peg$FAILED) { while (s3 !== peg$FAILED) { s2.push(s3); - if (peg$c102.test(input.charAt(peg$currPos))) { + if (peg$c107.test(input.charAt(peg$currPos))) { s3 = input.charAt(peg$currPos); peg$currPos++; } else { s3 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c103); + peg$fail(peg$c108); } } } @@ -3014,24 +3054,24 @@ var parserExt = (function () { if (s1 !== peg$FAILED) { s2 = peg$currPos; s3 = []; - if (peg$c104.test(input.charAt(peg$currPos))) { + if (peg$c109.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c105); + peg$fail(peg$c110); } } while (s4 !== peg$FAILED) { s3.push(s4); - if (peg$c104.test(input.charAt(peg$currPos))) { + if (peg$c109.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c105); + peg$fail(peg$c110); } } } @@ -3041,7 +3081,7 @@ var parserExt = (function () { s2 = s3; if (s2 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c106(s1, s2); + s1 = peg$c111(s1, s2); s0 = s1; } else { peg$currPos = s0; @@ -3060,25 +3100,25 @@ var parserExt = (function () { s0 = peg$currPos; s1 = []; - if (peg$c61.test(input.charAt(peg$currPos))) { + if (peg$c66.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c62); + peg$fail(peg$c67); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); - if (peg$c61.test(input.charAt(peg$currPos))) { + if (peg$c66.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c62); + peg$fail(peg$c67); } } } @@ -3087,35 +3127,35 @@ var parserExt = (function () { } if (s1 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 46) { - s2 = peg$c107; + s2 = peg$c112; peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c108); + peg$fail(peg$c113); } } if (s2 !== peg$FAILED) { s3 = []; - if (peg$c61.test(input.charAt(peg$currPos))) { + if (peg$c66.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c62); + peg$fail(peg$c67); } } if (s4 !== peg$FAILED) { while (s4 !== peg$FAILED) { s3.push(s4); - if (peg$c61.test(input.charAt(peg$currPos))) { + if (peg$c66.test(input.charAt(peg$currPos))) { s4 = input.charAt(peg$currPos); peg$currPos++; } else { s4 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c62); + peg$fail(peg$c67); } } } @@ -3124,7 +3164,7 @@ var parserExt = (function () { } if (s3 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c109(s1, s3); + s1 = peg$c114(s1, s3); s0 = s1; } else { peg$currPos = s0; @@ -3141,25 +3181,25 @@ var parserExt = (function () { if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = []; - if (peg$c61.test(input.charAt(peg$currPos))) { + if (peg$c66.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c62); + peg$fail(peg$c67); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { s1.push(s2); - if (peg$c61.test(input.charAt(peg$currPos))) { + if (peg$c66.test(input.charAt(peg$currPos))) { s2 = input.charAt(peg$currPos); peg$currPos++; } else { s2 = peg$FAILED; if (peg$silentFails === 0) { - peg$fail(peg$c62); + peg$fail(peg$c67); } } } @@ -3168,7 +3208,7 @@ var parserExt = (function () { } if (s1 !== peg$FAILED) { peg$reportedPos = s0; - s1 = peg$c110(s1); + s1 = peg$c115(s1); } s0 = s1; } @@ -3527,15 +3567,29 @@ var VisualFormat = (function () { case 'horizontal': context.orientation = Orientation.HORIZONTAL; context.horizontal = true; + _processCascade(context, res.cascade, null); break; case 'vertical': context.orientation = Orientation.VERTICAL; + _processCascade(context, res.cascade, null); + break; + case 'horzvert': + context.orientation = Orientation.HORIZONTAL; + context.horizontal = true; + _processCascade(context, res.cascade, null); + context = { + constraints: context.constraints, + lineIndex: context.lineIndex, + subViews: context.subViews, + orientation: Orientation.VERTICAL + }; + _processCascade(context, res.cascade, null); break; case 'zIndex': context.orientation = Orientation.ZINDEX; + _processCascade(context, res.cascade, null); break; } - _processCascade(context, res.cascade, null); return context.constraints; } }, { @@ -3641,10 +3695,12 @@ var VisualFormat = (function () { * @param {String|Array} visualFormat One or more visual format strings. * @param {Object} [options] Configuration options. * @param {String} [options.lineSeperator] String that defines the end of a line (default `\n`). + * @param {String} [options.prefix] When specified, also processes the categories using that prefix (e.g. "-dev-viewport max-height:10"). * @return {Object} meta-info */ value: function parseMetaInfo(visualFormat, options) { var lineSeperator = options && options.lineSeperator ? options.lineSeperator : '\n'; + var prefix = options ? options.prefix : undefined; visualFormat = Array.isArray(visualFormat) ? visualFormat : [visualFormat]; var metaInfo = {}; var key; @@ -3653,16 +3709,19 @@ var VisualFormat = (function () { for (var i = 0; i < lines.length; i++) { var line = lines[i]; for (var c = 0; c < metaInfoCategories.length; c++) { - var category = metaInfoCategories[c]; - if (line.indexOf('//' + category + ' ') === 0) { - var items = line.substring(3 + category.length).split(' '); - for (var j = 0; j < items.length; j++) { - var item = items[j].split(':'); - metaInfo[category] = metaInfo[category] || {}; - metaInfo[category][item[0]] = item.length > 1 ? item[1] : ''; + for (var s = 0; s < (prefix ? 2 : 1); s++) { + var category = metaInfoCategories[c]; + var prefixedCategory = (s === 0 ? '' : prefix) + category; + if (line.indexOf('//' + prefixedCategory + ' ') === 0) { + var items = line.substring(3 + prefixedCategory.length).split(' '); + for (var j = 0; j < items.length; j++) { + var item = items[j].split(':'); + metaInfo[category] = metaInfo[category] || {}; + metaInfo[category][item[0]] = item.length > 1 ? item[1] : ''; + } + } else if (line.indexOf('//' + prefixedCategory + ':') === 0) { + metaInfo[category] = line.substring(3 + prefixedCategory.length); } - } else if (line.indexOf('//' + category + ':') === 0) { - metaInfo[category] = line.substring(3 + category.length); } } } diff --git a/dist/autolayout.min.js b/dist/autolayout.min.js index bcc2a95..44e2580 100644 --- a/dist/autolayout.min.js +++ b/dist/autolayout.min.js @@ -8,8 +8,8 @@ * @copyright Gloey Apps, 2015 * * @library autolayout.js -* @version 0.4.0 -* @generated 27-07-2015 +* @version 0.4.1 +* @generated 28-07-2015 */ /** * Parts Copyright (C) 2011-2012, Alex Russell (slightlyoff@chromium.org) @@ -23,8 +23,8 @@ (function(){!function(t){"use strict";try{(function(){}).bind(t)}catch(e){Object.defineProperty(Function.prototype,"bind",{value:function(t){var e=this;return function(){return e.apply(t,arguments)}},enumerable:!1,configurable:!0,writable:!0})}var n=void 0!==t.HTMLElement,i=function(t){for(var e=null;t&&t!=Object.prototype;){if(t.tagName){e=t.tagName;break}t=t.prototype}return e||"div"},r=1e-8,s={},a=function(t,e){if(t&&e){if("function"==typeof t[e])return t[e];var n=t.prototype;if(n&&"function"==typeof n[e])return n[e];if(n!==Object.prototype&&n!==Function.prototype)return"function"==typeof t.__super__?a(t.__super__,e):void 0}},l=t.c={debug:!1,trace:!1,verbose:!1,traceAdded:!1,GC:!1,GEQ:1,LEQ:2,inherit:function(e){var r=null,a=null;e["extends"]&&(a=e["extends"],delete e["extends"]),e.initialize&&(r=e.initialize,delete e.initialize);var l=r||function(){};Object.defineProperty(l,"__super__",{value:a?a:Object,enumerable:!1,configurable:!0,writable:!1}),e._t&&(s[e._t]=l);var o=l.prototype=Object.create(a?a.prototype:Object.prototype);if(this.extend(o,e),n&&a&&a.prototype instanceof t.HTMLElement){var u=l,c=i(o),h=function(t){return t.__proto__=o,u.apply(t,arguments),o.created&&t.created(),o.decorate&&t.decorate(),t};this.extend(o,{upgrade:h}),l=function(){return h(t.document.createElement(c))},l.prototype=o,this.extend(l,{ctor:u})}return l},extend:function(t,e){return this.own(e,function(n){var i=Object.getOwnPropertyDescriptor(e,n);try{"function"==typeof i.get||"function"==typeof i.set?Object.defineProperty(t,n,i):"function"==typeof i.value||"_"===n.charAt(0)?(i.writable=!0,i.configurable=!0,i.enumerable=!1,Object.defineProperty(t,n,i)):t[n]=e[n]}catch(r){}}),t},own:function(e,n,i){return Object.getOwnPropertyNames(e).forEach(n,i||t),e},traceprint:function(t){l.verbose&&console.log(t)},fnenterprint:function(t){console.log("* "+t)},fnexitprint:function(t){console.log("- "+t)},assert:function(t,e){if(!t)throw new l.InternalError("Assertion failed: "+e)},plus:function(t,e){return t instanceof l.Expression||(t=new l.Expression(t)),e instanceof l.Expression||(e=new l.Expression(e)),t.plus(e)},minus:function(t,e){return t instanceof l.Expression||(t=new l.Expression(t)),e instanceof l.Expression||(e=new l.Expression(e)),t.minus(e)},times:function(t,e){return("number"==typeof t||t instanceof l.Variable)&&(t=new l.Expression(t)),("number"==typeof e||e instanceof l.Variable)&&(e=new l.Expression(e)),t.times(e)},divide:function(t,e){return("number"==typeof t||t instanceof l.Variable)&&(t=new l.Expression(t)),("number"==typeof e||e instanceof l.Variable)&&(e=new l.Expression(e)),t.divide(e)},approx:function(t,e){if(t===e)return!0;var n,i;return n=t instanceof l.Variable?t.value:t,i=e instanceof l.Variable?e.value:e,0==n?r>Math.abs(i):0==i?r>Math.abs(n):Math.abs(n-i)64||this._deleted>this._compactThreshold&&(this._compact(),this._deleted=0)},"delete":function(t){t=e(t),this._store.hasOwnProperty(t)&&(this._deleted++,delete this._store[t],this.size>0&&this.size--)},each:function(t,e){if(this.size){this._perhapsCompact();var n=this._store,i=this._keyStrMap;Object.keys(this._store).forEach(function(r){t.call(e||null,i[r],n[r])},this)}},escapingEach:function(t,e){if(this.size){this._perhapsCompact();for(var n=this,r=this._store,s=this._keyStrMap,a=i,l=Object.keys(r),o=0;l.length>o;o++)if(function(i){n._store.hasOwnProperty(i)&&(a=t.call(e||null,s[i],r[i]))}(l[o]),a){if(void 0!==a.retval)return a;if(a.brk)break}}},clone:function(){var e=new t.HashTable;return this.size&&(e.size=this.size,n(this._store,e._store),n(this._keyStrMap,e._keyStrMap)),e},equals:function(e){if(e===this)return!0;if(!(e instanceof t.HashTable)||e._size!==this._size)return!1;for(var n=Object.keys(this._store),i=0;n.length>i;i++){var r=n[i];if(this._keyStrMap[r]!==e._keyStrMap[r]||this._store[r]!==e._store[r])return!1}return!0},toString:function(){var t="";return this.each(function(e,n){t+=e+" => "+n+"\n"}),t}})}(this.c||module.parent.exports||{}),function(t){"use strict";t.HashSet=t.inherit({_t:"c.HashSet",initialize:function(){this.storage=[],this.size=0},add:function(t){var e=this.storage;e.indexOf(t),-1==e.indexOf(t)&&e.push(t),this.size=this.storage.length},values:function(){return this.storage},has:function(t){var e=this.storage;return-1!=e.indexOf(t)},"delete":function(t){var e=this.storage.indexOf(t);return-1==e?null:(this.storage.splice(e,1)[0],void(this.size=this.storage.length))},clear:function(){this.storage.length=0},each:function(t,e){this.size&&this.storage.forEach(t,e)},escapingEach:function(t,e){this.size&&this.storage.forEach(t,e)},toString:function(){var t=this.size+" {",e=!0;return this.each(function(n){e?e=!1:t+=", ",t+=n}),t+="}\n"},toJSON:function(){var t=[];return this.each(function(e){t.push(e.toJSON())}),{_t:"c.HashSet",data:t}},fromJSON:function(e){var n=new t.HashSet;return e.data&&(n.size=e.data.length,n.storage=e.data),n}})}(this.c||module.parent.exports||{}),function(t){"use strict";t.Error=t.inherit({initialize:function(t){t&&(this._description=t)},_name:"c.Error",_description:"An error has occured in Cassowary",set description(t){this._description=t},get description(){return"("+this._name+") "+this._description},get message(){return this.description},toString:function(){return this.description}});var e=function(e,n){return t.inherit({"extends":t.Error,initialize:function(){t.Error.apply(this,arguments)},_name:e||"",_description:n||""})};t.ConstraintNotFound=e("c.ConstraintNotFound","Tried to remove a constraint never added to the tableu"),t.InternalError=e("c.InternalError"),t.NonExpression=e("c.NonExpression","The resulting expression would be non"),t.NotEnoughStays=e("c.NotEnoughStays","There are not enough stays to give specific values to every variable"),t.RequiredFailure=e("c.RequiredFailure","A required constraint cannot be satisfied"),t.TooDifficult=e("c.TooDifficult","The constraints are too difficult to solve")}(this.c||module.parent.exports||{}),function(t){"use strict";var e=1e3;t.SymbolicWeight=t.inherit({_t:"c.SymbolicWeight",initialize:function(){this.value=0;for(var t=1,n=arguments.length-1;n>=0;--n)this.value+=arguments[n]*t,t*=e},toJSON:function(){return{_t:this._t,value:this.value}}})}(this.c||module.parent.exports||{}),function(t){t.Strength=t.inherit({initialize:function(e,n,i,r){this.name=e,this.symbolicWeight=n instanceof t.SymbolicWeight?n:new t.SymbolicWeight(n,i,r)},get required(){return this===t.Strength.required},toString:function(){return this.name+(this.isRequired?"":":"+this.symbolicWeight)}}),t.Strength.required=new t.Strength("",1e3,1e3,1e3),t.Strength.strong=new t.Strength("strong",1,0,0),t.Strength.medium=new t.Strength("medium",0,1,0),t.Strength.weak=new t.Strength("weak",0,0,1)}(this.c||("undefined"!=typeof module?module.parent.exports.c:{})),function(t){"use strict";t.AbstractVariable=t.inherit({isDummy:!1,isExternal:!1,isPivotable:!1,isRestricted:!1,_init:function(e,n){this.hashCode=t._inc(),this.name=(n||"")+this.hashCode,e&&(void 0!==e.name&&(this.name=e.name),void 0!==e.value&&(this.value=e.value),void 0!==e.prefix&&(this._prefix=e.prefix))},_prefix:"",name:"",value:0,toJSON:function(){var t={};return this._t&&(t._t=this._t),this.name&&(t.name=this.name),void 0!==this.value&&(t.value=this.value),this._prefix&&(t._prefix=this._prefix),this._t&&(t._t=this._t),t},fromJSON:function(e,n){var i=new n;return t.extend(i,e),i},toString:function(){return this._prefix+"["+this.name+":"+this.value+"]"}}),t.Variable=t.inherit({_t:"c.Variable","extends":t.AbstractVariable,initialize:function(e){this._init(e,"v");var n=t.Variable._map;n&&(n[this.name]=this)},isExternal:!0}),t.DummyVariable=t.inherit({_t:"c.DummyVariable","extends":t.AbstractVariable,initialize:function(t){this._init(t,"d")},isDummy:!0,isRestricted:!0,value:"dummy"}),t.ObjectiveVariable=t.inherit({_t:"c.ObjectiveVariable","extends":t.AbstractVariable,initialize:function(t){this._init(t,"o")},value:"obj"}),t.SlackVariable=t.inherit({_t:"c.SlackVariable","extends":t.AbstractVariable,initialize:function(t){this._init(t,"s")},isPivotable:!0,isRestricted:!0,value:"slack"})}(this.c||module.parent.exports||{}),function(t){"use strict";t.Point=t.inherit({initialize:function(e,n,i){if(e instanceof t.Variable)this._x=e;else{var r={value:e};i&&(r.name="x"+i),this._x=new t.Variable(r)}if(n instanceof t.Variable)this._y=n;else{var s={value:n};i&&(s.name="y"+i),this._y=new t.Variable(s)}},get x(){return this._x},set x(e){e instanceof t.Variable?this._x=e:this._x.value=e},get y(){return this._y},set y(e){e instanceof t.Variable?this._y=e:this._y.value=e},toString:function(){return"("+this.x+", "+this.y+")"}})}(this.c||module.parent.exports||{}),function(t){"use strict";t.Expression=t.inherit({initialize:function(e,n,i){t.GC&&console.log("new c.Expression"),this.constant="number"!=typeof i||isNaN(i)?0:i,this.terms=new t.HashTable,e instanceof t.AbstractVariable?this.setVariable(e,"number"==typeof n?n:1):"number"==typeof e&&(isNaN(e)?console.trace():this.constant=e)},initializeFromHash:function(e,n){return t.verbose&&(console.log("*******************************"),console.log("clone c.initializeFromHash"),console.log("*******************************")),t.GC&&console.log("clone c.Expression"),this.constant=e,this.terms=n.clone(),this},multiplyMe:function(t){this.constant*=t;var e=this.terms;return e.each(function(n,i){e.set(n,i*t)}),this},clone:function(){t.verbose&&(console.log("*******************************"),console.log("clone c.Expression"),console.log("*******************************"));var e=new t.Expression;return e.initializeFromHash(this.constant,this.terms),e},times:function(e){if("number"==typeof e)return this.clone().multiplyMe(e);if(this.isConstant)return e.times(this.constant);if(e.isConstant)return this.times(e.constant);throw new t.NonExpression},plus:function(e){return e instanceof t.Expression?this.clone().addExpression(e,1):e instanceof t.Variable?this.clone().addVariable(e,1):void 0},minus:function(e){return e instanceof t.Expression?this.clone().addExpression(e,-1):e instanceof t.Variable?this.clone().addVariable(e,-1):void 0},divide:function(e){if("number"==typeof e){if(t.approx(e,0))throw new t.NonExpression;return this.times(1/e)}if(e instanceof t.Expression){if(!e.isConstant)throw new t.NonExpression;return this.times(1/e.constant)}},addExpression:function(e,n,i,r){return e instanceof t.AbstractVariable&&(e=new t.Expression(e),t.trace&&console.log("addExpression: Had to cast a var to an expression")),n=n||1,this.constant+=n*e.constant,e.terms.each(function(t,e){this.addVariable(t,e*n,i,r)},this),this},addVariable:function(e,n,i,r){null==n&&(n=1),t.trace&&console.log("c.Expression::addVariable():",e,n);var s=this.terms.get(e);if(s){var a=s+n;0==a||t.approx(a,0)?(r&&r.noteRemovedVariable(e,i),this.terms["delete"](e)):this.setVariable(e,a)}else t.approx(n,0)||(this.setVariable(e,n),r&&r.noteAddedVariable(e,i));return this},setVariable:function(t,e){return this.terms.set(t,e),this},anyPivotableVariable:function(){if(this.isConstant)throw new t.InternalError("anyPivotableVariable called on a constant");var e=this.terms.escapingEach(function(t){return t.isPivotable?{retval:t}:void 0});return e&&void 0!==e.retval?e.retval:null},substituteOut:function(e,n,i,r){t.trace&&(t.fnenterprint("CLE:substituteOut: "+e+", "+n+", "+i+", ..."),t.traceprint("this = "+this));var s=this.setVariable.bind(this),a=this.terms,l=a.get(e);a["delete"](e),this.constant+=l*n.constant,n.terms.each(function(e,n){var o=a.get(e);if(o){var u=o+l*n;t.approx(u,0)?(r.noteRemovedVariable(e,i),a["delete"](e)):s(e,u)}else s(e,l*n),r&&r.noteAddedVariable(e,i)}),t.trace&&t.traceprint("Now this is "+this)},changeSubject:function(t,e){this.setVariable(t,this.newSubject(e))},newSubject:function(e){t.trace&&t.fnenterprint("newSubject:"+e);var n=1/this.terms.get(e);return this.terms["delete"](e),this.multiplyMe(-n),n},coefficientFor:function(t){return this.terms.get(t)||0},get isConstant(){return 0==this.terms.size},toString:function(){var e="",n=!1;if(!t.approx(this.constant,0)||this.isConstant){if(e+=this.constant,this.isConstant)return e;n=!0}return this.terms.each(function(t,i){n&&(e+=" + "),e+=i+"*"+t,n=!0}),e},equals:function(e){return e===this?!0:e instanceof t.Expression&&e.constant===this.constant&&e.terms.equals(this.terms)},Plus:function(t,e){return t.plus(e)},Minus:function(t,e){return t.minus(e)},Times:function(t,e){return t.times(e)},Divide:function(t,e){return t.divide(e)}})}(this.c||module.parent.exports||{}),function(t){"use strict";t.AbstractConstraint=t.inherit({initialize:function(e,n){this.hashCode=t._inc(),this.strength=e||t.Strength.required,this.weight=n||1},isEditConstraint:!1,isInequality:!1,isStayConstraint:!1,get required(){return this.strength===t.Strength.required},toString:function(){return this.strength+" {"+this.weight+"} ("+this.expression+")"}});var e=t.AbstractConstraint.prototype.toString,n=function(e,n,i){t.AbstractConstraint.call(this,n||t.Strength.strong,i),this.variable=e,this.expression=new t.Expression(e,-1,e.value)};t.EditConstraint=t.inherit({"extends":t.AbstractConstraint,initialize:function(){n.apply(this,arguments)},isEditConstraint:!0,toString:function(){return"edit:"+e.call(this)}}),t.StayConstraint=t.inherit({"extends":t.AbstractConstraint,initialize:function(){n.apply(this,arguments)},isStayConstraint:!0,toString:function(){return"stay:"+e.call(this)}});var i=t.Constraint=t.inherit({"extends":t.AbstractConstraint,initialize:function(e,n,i){t.AbstractConstraint.call(this,n,i),this.expression=e}});t.Inequality=t.inherit({"extends":t.Constraint,_cloneOrNewCle:function(e){return e.clone?e.clone():new t.Expression(e)},initialize:function(e,n,r,s,a){var l=e instanceof t.Expression,o=r instanceof t.Expression,u=e instanceof t.AbstractVariable,c=r instanceof t.AbstractVariable,h="number"==typeof e,f="number"==typeof r;if((l||h)&&c){var d=e,p=n,v=r,b=s,m=a;if(i.call(this,this._cloneOrNewCle(d),b,m),p==t.LEQ)this.expression.multiplyMe(-1),this.expression.addVariable(v);else{if(p!=t.GEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");this.expression.addVariable(v,-1)}}else if(u&&(o||f)){var d=r,p=n,v=e,b=s,m=a;if(i.call(this,this._cloneOrNewCle(d),b,m),p==t.GEQ)this.expression.multiplyMe(-1),this.expression.addVariable(v);else{if(p!=t.LEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");this.expression.addVariable(v,-1)}}else{if(l&&f){var g=e,p=n,_=r,b=s,m=a;if(i.call(this,this._cloneOrNewCle(g),b,m),p==t.LEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(_));else{if(p!=t.GEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");this.expression.addExpression(this._cloneOrNewCle(_),-1)}return this}if(h&&o){var g=r,p=n,_=e,b=s,m=a;if(i.call(this,this._cloneOrNewCle(g),b,m),p==t.GEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(_));else{if(p!=t.LEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");this.expression.addExpression(this._cloneOrNewCle(_),-1)}return this}if(l&&o){var g=e,p=n,_=r,b=s,m=a;if(i.call(this,this._cloneOrNewCle(_),b,m),p==t.GEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(g));else{if(p!=t.LEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");this.expression.addExpression(this._cloneOrNewCle(g),-1)}}else{if(l)return i.call(this,e,n,r);if(n==t.GEQ)i.call(this,new t.Expression(r),s,a),this.expression.multiplyMe(-1),this.expression.addVariable(e);else{if(n!=t.LEQ)throw new t.InternalError("Invalid operator in c.Inequality constructor");i.call(this,new t.Expression(r),s,a),this.expression.addVariable(e,-1)}}}},isInequality:!0,toString:function(){return i.prototype.toString.call(this)+" >= 0) id: "+this.hashCode}}),t.Equation=t.inherit({"extends":t.Constraint,initialize:function(e,n,r,s){if(e instanceof t.Expression&&!n||n instanceof t.Strength)i.call(this,e,n,r);else if(e instanceof t.AbstractVariable&&n instanceof t.Expression){var a=e,l=n,o=r,u=s;i.call(this,l.clone(),o,u),this.expression.addVariable(a,-1)}else if(e instanceof t.AbstractVariable&&"number"==typeof n){var a=e,c=n,o=r,u=s;i.call(this,new t.Expression(c),o,u),this.expression.addVariable(a,-1)}else if(e instanceof t.Expression&&n instanceof t.AbstractVariable){var l=e,a=n,o=r,u=s;i.call(this,l.clone(),o,u),this.expression.addVariable(a,-1)}else{if(!(e instanceof t.Expression||e instanceof t.AbstractVariable||"number"==typeof e)||!(n instanceof t.Expression||n instanceof t.AbstractVariable||"number"==typeof n))throw"Bad initializer to c.Equation";e=e instanceof t.Expression?e.clone():new t.Expression(e),n=n instanceof t.Expression?n.clone():new t.Expression(n),i.call(this,e,r,s),this.expression.addExpression(n,-1)}t.assert(this.strength instanceof t.Strength,"_strength not set")},toString:function(){return i.prototype.toString.call(this)+" = 0)"}})}(this.c||module.parent.exports||{}),function(t){"use strict";t.EditInfo=t.inherit({initialize:function(t,e,n,i,r){this.constraint=t,this.editPlus=e,this.editMinus=n,this.prevEditConstant=i,this.index=r},toString:function(){return""}})}(this.c||module.parent.exports||{}),function(t){"use strict";t.Tableau=t.inherit({initialize:function(){this.columns=new t.HashTable,this.rows=new t.HashTable,this._infeasibleRows=new t.HashSet,this._externalRows=new t.HashSet,this._externalParametricVars=new t.HashSet},noteRemovedVariable:function(e,n){t.trace&&console.log("c.Tableau::noteRemovedVariable: ",e,n);var i=this.columns.get(e);n&&i&&i["delete"](n)},noteAddedVariable:function(t,e){e&&this.insertColVar(t,e)},getInternalInfo:function(){var t="Tableau Information:\n";return t+="Rows: "+this.rows.size,t+=" (= "+(this.rows.size-1)+" constraints)",t+="\nColumns: "+this.columns.size,t+="\nInfeasible Rows: "+this._infeasibleRows.size,t+="\nExternal basic variables: "+this._externalRows.size,t+="\nExternal parametric variables: ",t+=this._externalParametricVars.size,t+="\n"},toString:function(){var t="Tableau:\n";return this.rows.each(function(e,n){t+=e,t+=" <==> ",t+=n,t+="\n"}),t+="\nColumns:\n",t+=this.columns,t+="\nInfeasible rows: ",t+=this._infeasibleRows,t+="External basic variables: ",t+=this._externalRows,t+="External parametric variables: ",t+=this._externalParametricVars},insertColVar:function(e,n){var i=this.columns.get(e);i||(i=new t.HashSet,this.columns.set(e,i)),i.add(n)},addRow:function(e,n){t.trace&&t.fnenterprint("addRow: "+e+", "+n),this.rows.set(e,n),n.terms.each(function(t){this.insertColVar(t,e),t.isExternal&&this._externalParametricVars.add(t)},this),e.isExternal&&this._externalRows.add(e),t.trace&&t.traceprint(""+this)},removeColumn:function(e){t.trace&&t.fnenterprint("removeColumn:"+e);var n=this.columns.get(e);n?(this.columns["delete"](e),n.each(function(t){var n=this.rows.get(t);n.terms["delete"](e)},this)):t.trace&&console.log("Could not find var",e,"in columns"),e.isExternal&&(this._externalRows["delete"](e),this._externalParametricVars["delete"](e))},removeRow:function(e){t.trace&&t.fnenterprint("removeRow:"+e);var n=this.rows.get(e);return t.assert(null!=n),n.terms.each(function(n){var i=this.columns.get(n);null!=i&&(t.trace&&console.log("removing from varset:",e),i["delete"](e))},this),this._infeasibleRows["delete"](e),e.isExternal&&this._externalRows["delete"](e),this.rows["delete"](e),t.trace&&t.fnexitprint("returning "+n),n},substituteOut:function(e,n){t.trace&&t.fnenterprint("substituteOut:"+e+", "+n),t.trace&&t.traceprint(""+this);var i=this.columns.get(e);i.each(function(t){var i=this.rows.get(t);i.substituteOut(e,n,t,this),t.isRestricted&&0>i.constant&&this._infeasibleRows.add(t)},this),e.isExternal&&(this._externalRows.add(e),this._externalParametricVars["delete"](e)),this.columns["delete"](e)},columnsHasKey:function(t){return!!this.columns.get(t)}})}(this.c||module.parent.exports||{}),function(t){var e=t.Tableau,n=e.prototype,i=1e-8,r=t.Strength.weak;t.SimplexSolver=t.inherit({"extends":t.Tableau,initialize:function(){t.Tableau.call(this),this._stayMinusErrorVars=[],this._stayPlusErrorVars=[],this._errorVars=new t.HashTable,this._markerVars=new t.HashTable,this._objective=new t.ObjectiveVariable({name:"Z"}),this._editVarMap=new t.HashTable,this._editVarList=[],this._slackCounter=0,this._artificialCounter=0,this._dummyCounter=0,this.autoSolve=!0,this._fNeedsSolving=!1,this._optimizeCount=0,this.rows.set(this._objective,new t.Expression),this._stkCedcns=[0],t.trace&&t.traceprint("objective expr == "+this.rows.get(this._objective))},addLowerBound:function(e,n){var i=new t.Inequality(e,t.GEQ,new t.Expression(n));return this.addConstraint(i)},addUpperBound:function(e,n){var i=new t.Inequality(e,t.LEQ,new t.Expression(n));return this.addConstraint(i)},addBounds:function(t,e,n){return this.addLowerBound(t,e),this.addUpperBound(t,n),this},add:function(){for(var t=0;arguments.length>t;t++)this.addConstraint(arguments[t]);return this},addConstraint:function(e){t.trace&&t.fnenterprint("addConstraint: "+e);var n=Array(2),i=Array(1),r=this.newExpression(e,n,i);if(i=i[0],this.tryAddingDirectly(r)||this.addWithArtificialVariable(r),this._fNeedsSolving=!0,e.isEditConstraint){var s=this._editVarMap.size,a=n[0],l=n[1];!a instanceof t.SlackVariable&&console.warn("cvEplus not a slack variable =",a),!l instanceof t.SlackVariable&&console.warn("cvEminus not a slack variable =",l),t.debug&&console.log("new c.EditInfo("+e+", "+a+", "+l+", "+i+", "+s+")");var o=new t.EditInfo(e,a,l,i,s);this._editVarMap.set(e.variable,o),this._editVarList[s]={v:e.variable,info:o}}return this.autoSolve&&(this.optimize(this._objective),this._setExternalVariables()),this},addConstraintNoException:function(e){t.trace&&t.fnenterprint("addConstraintNoException: "+e);try{return this.addConstraint(e),!0}catch(n){return!1}},addEditVar:function(e,n){return t.trace&&t.fnenterprint("addEditVar: "+e+" @ "+n),this.addConstraint(new t.EditConstraint(e,n||t.Strength.strong))},beginEdit:function(){return t.assert(this._editVarMap.size>0,"_editVarMap.size > 0"),this._infeasibleRows.clear(),this._resetStayConstants(),this._stkCedcns.push(this._editVarMap.size),this},endEdit:function(){return t.assert(this._editVarMap.size>0,"_editVarMap.size > 0"),this.resolve(),this._stkCedcns.pop(),this.removeEditVarsTo(this._stkCedcns[this._stkCedcns.length-1]),this},removeAllEditVars:function(){return this.removeEditVarsTo(0)},removeEditVarsTo:function(e){try{for(var n=this._editVarList.length,i=e;n>i;i++)this._editVarList[i]&&this.removeConstraint(this._editVarMap.get(this._editVarList[i].v).constraint);return this._editVarList.length=e,t.assert(this._editVarMap.size==e,"_editVarMap.size == n"),this}catch(r){throw new t.InternalError("Constraint not found in removeEditVarsTo")}},addPointStays:function(e){return t.trace&&console.log("addPointStays",e),e.forEach(function(t,e){this.addStay(t.x,r,Math.pow(2,e)),this.addStay(t.y,r,Math.pow(2,e))},this),this},addStay:function(e,n,i){var s=new t.StayConstraint(e,n||r,i||1);return this.addConstraint(s)},removeConstraint:function(t){return this.removeConstraintInternal(t),this},removeConstraintInternal:function(e){t.trace&&t.fnenterprint("removeConstraintInternal: "+e),t.trace&&t.traceprint(""+this),this._fNeedsSolving=!0,this._resetStayConstants();var n=this.rows.get(this._objective),i=this._errorVars.get(e);t.trace&&t.traceprint("eVars == "+i),null!=i&&i.each(function(r){var s=this.rows.get(r);null==s?n.addVariable(r,-e.weight*e.strength.symbolicWeight.value,this._objective,this):n.addExpression(s,-e.weight*e.strength.symbolicWeight.value,this._objective,this),t.trace&&t.traceprint("now eVars == "+i)},this);var r=this._markerVars.get(e);if(this._markerVars["delete"](e),null==r)throw new t.InternalError("Constraint not found in removeConstraintInternal");if(t.trace&&t.traceprint("Looking to remove var "+r),null==this.rows.get(r)){var s=this.columns.get(r);t.trace&&t.traceprint("Must pivot -- columns are "+s);var a=null,l=0;s.each(function(e){if(e.isRestricted){var n=this.rows.get(e),i=n.coefficientFor(r);if(t.trace&&t.traceprint("Marker "+r+"'s coefficient in "+n+" is "+i),0>i){var s=-n.constant/i;(null==a||l>s||t.approx(s,l)&&e.hashCodei)&&(l=i,a=t)}},this)),null==a&&(0==s.size?this.removeColumn(r):s.escapingEach(function(t){return t!=this._objective?(a=t,{brk:!0}):void 0},this)),null!=a&&this.pivot(r,a)}if(null!=this.rows.get(r)&&this.removeRow(r),null!=i&&i.each(function(t){t!=r&&this.removeColumn(t)},this),e.isStayConstraint){if(null!=i)for(var o=0;this._stayPlusErrorVars.length>o;o++)i["delete"](this._stayPlusErrorVars[o]),i["delete"](this._stayMinusErrorVars[o])}else if(e.isEditConstraint){t.assert(null!=i,"eVars != null");var u=this._editVarMap.get(e.variable);this.removeColumn(u.editMinus),this._editVarMap["delete"](e.variable)}return null!=i&&this._errorVars["delete"](i),this.autoSolve&&(this.optimize(this._objective),this._setExternalVariables()),this},reset:function(){throw t.trace&&t.fnenterprint("reset"),new t.InternalError("reset not implemented")},resolveArray:function(e){t.trace&&t.fnenterprint("resolveArray"+e);var n=e.length;this._editVarMap.each(function(t,i){var r=i.index;n>r&&this.suggestValue(t,e[r])},this),this.resolve()},resolvePair:function(t,e){this.suggestValue(this._editVarList[0].v,t),this.suggestValue(this._editVarList[1].v,e),this.resolve()},resolve:function(){t.trace&&t.fnenterprint("resolve()"),this.dualOptimize(),this._setExternalVariables(),this._infeasibleRows.clear(),this._resetStayConstants()},suggestValue:function(e,n){t.trace&&console.log("suggestValue("+e+", "+n+")");var i=this._editVarMap.get(e);if(!i)throw new t.Error("suggestValue for variable "+e+", but var is not an edit variable");var r=n-i.prevEditConstant;return i.prevEditConstant=n,this.deltaEditConstant(r,i.editPlus,i.editMinus),this},solve:function(){return this._fNeedsSolving&&(this.optimize(this._objective),this._setExternalVariables()),this},setEditedValue:function(e,n){if(!this.columnsHasKey(e)&&null==this.rows.get(e))return e.value=n,this;if(!t.approx(n,e.value)){this.addEditVar(e),this.beginEdit();try{this.suggestValue(e,n)}catch(i){throw new t.InternalError("Error in setEditedValue")}this.endEdit()}return this},addVar:function(e){if(!this.columnsHasKey(e)&&null==this.rows.get(e)){try{this.addStay(e)}catch(n){throw new t.InternalError("Error in addVar -- required failure is impossible")}t.trace&&t.traceprint("added initial stay on "+e)}return this},getInternalInfo:function(){var t=n.getInternalInfo.call(this);return t+="\nSolver info:\n",t+="Stay Error Variables: ",t+=this._stayPlusErrorVars.length+this._stayMinusErrorVars.length,t+=" ("+this._stayPlusErrorVars.length+" +, ",t+=this._stayMinusErrorVars.length+" -)\n",t+="Edit Variables: "+this._editVarMap.size,t+="\n"},getDebugInfo:function(){return""+this+this.getInternalInfo()+"\n"},toString:function(){var t=n.getInternalInfo.call(this);return t+="\n_stayPlusErrorVars: ",t+="["+this._stayPlusErrorVars+"]",t+="\n_stayMinusErrorVars: ",t+="["+this._stayMinusErrorVars+"]",t+="\n",t+="_editVarMap:\n"+this._editVarMap,t+="\n"},getConstraintMap:function(){return this._markerVars},addWithArtificialVariable:function(e){t.trace&&t.fnenterprint("addWithArtificialVariable: "+e);var n=new t.SlackVariable({value:++this._artificialCounter,prefix:"a"}),i=new t.ObjectiveVariable({name:"az"}),r=e.clone();t.trace&&t.traceprint("before addRows:\n"+this),this.addRow(i,r),this.addRow(n,e),t.trace&&t.traceprint("after addRows:\n"+this),this.optimize(i);var s=this.rows.get(i);if(t.trace&&t.traceprint("azTableauRow.constant == "+s.constant),!t.approx(s.constant,0))throw this.removeRow(i),this.removeColumn(n),new t.RequiredFailure;var a=this.rows.get(n);if(null!=a){if(a.isConstant)return this.removeRow(n),void this.removeRow(i);var l=a.anyPivotableVariable();this.pivot(l,n)}t.assert(null==this.rows.get(n),"rowExpression(av) == null"),this.removeColumn(n),this.removeRow(i)},tryAddingDirectly:function(e){t.trace&&t.fnenterprint("tryAddingDirectly: "+e);var n=this.chooseSubject(e);return null==n?(t.trace&&t.fnexitprint("returning false"),!1):(e.newSubject(n),this.columnsHasKey(n)&&this.substituteOut(n,e),this.addRow(n,e),t.trace&&t.fnexitprint("returning true"),!0)},chooseSubject:function(e){t.trace&&t.fnenterprint("chooseSubject: "+e);var n=null,i=!1,r=!1,s=e.terms,a=s.escapingEach(function(t,e){if(i){if(!t.isRestricted&&!this.columnsHasKey(t))return{retval:t}}else if(t.isRestricted){if(!r&&!t.isDummy&&0>e){var s=this.columns.get(t);(null==s||1==s.size&&this.columnsHasKey(this._objective))&&(n=t,r=!0)}}else n=t,i=!0},this);if(a&&void 0!==a.retval)return a.retval;if(null!=n)return n;var l=0,a=s.escapingEach(function(t,e){return t.isDummy?void(this.columnsHasKey(t)||(n=t,l=e)):{retval:null}},this);if(a&&void 0!==a.retval)return a.retval;if(!t.approx(e.constant,0))throw new t.RequiredFailure;return l>0&&e.multiplyMe(-1),n},deltaEditConstant:function(e,n,i){t.trace&&t.fnenterprint("deltaEditConstant :"+e+", "+n+", "+i);var r=this.rows.get(n);if(null!=r)return r.constant+=e,void(0>r.constant&&this._infeasibleRows.add(n));var s=this.rows.get(i);if(null!=s)return s.constant+=-e,void(0>s.constant&&this._infeasibleRows.add(i));var a=this.columns.get(i);a||console.log("columnVars is null -- tableau is:\n"+this),a.each(function(t){var n=this.rows.get(t),r=n.coefficientFor(i);n.constant+=r*e,t.isRestricted&&0>n.constant&&this._infeasibleRows.add(t)},this)},dualOptimize:function(){t.trace&&t.fnenterprint("dualOptimize:");for(var e=this.rows.get(this._objective);this._infeasibleRows.size;){var n=this._infeasibleRows.values()[0];this._infeasibleRows["delete"](n);var i=null,r=this.rows.get(n);if(r&&0>r.constant){var s,a=Number.MAX_VALUE,l=r.terms;if(l.each(function(n,r){if(r>0&&n.isPivotable){var l=e.coefficientFor(n);s=l/r,(a>s||t.approx(s,a)&&n.hashCodes.constant&&s.multiplyMe(-1),t.trace&&t.fnexitprint("returning "+s),s},optimize:function(e){t.trace&&t.fnenterprint("optimize: "+e),t.trace&&t.traceprint(""+this),this._optimizeCount++;var n=this.rows.get(e);t.assert(null!=n,"zRow != null");for(var r,s,a=null,l=null;;){if(r=0,s=n.terms,s.escapingEach(function(t,e){return t.isPivotable&&r>e?(r=e,a=t,{brk:1}):void 0},this),r>=-i)return;t.trace&&console.log("entryVar:",a,"objectiveCoeff:",r);var o=Number.MAX_VALUE,u=this.columns.get(a),c=0;if(u.each(function(e){if(t.trace&&t.traceprint("Checking "+e),e.isPivotable){var n=this.rows.get(e),i=n.coefficientFor(a);t.trace&&t.traceprint("pivotable, coeff = "+i),0>i&&(c=-n.constant/i,(o>c||t.approx(c,o)&&e.hashCodee;e++){var n=this.rows.get(this._stayPlusErrorVars[e]);null==n&&(n=this.rows.get(this._stayMinusErrorVars[e])),null!=n&&(n.constant=0)}},_setExternalVariables:function(){t.trace&&t.fnenterprint("_setExternalVariables:"),t.trace&&t.traceprint(""+this),this._externalParametricVars.each(function(e){null!=this.rows.get(e)?t.trace&&console.log("Error: variable"+e+" in _externalParametricVars is basic"):e.value=0},this),this._externalRows.each(function(t){var e=this.rows.get(t);t.value!=e.constant&&(t.value=e.constant)},this),this._fNeedsSolving=!1,this.onsolved()},onsolved:function(){},insertErrorVar:function(e,n){t.trace&&t.fnenterprint("insertErrorVar:"+e+", "+n);var i=this._errorVars.get(n);i||(i=new t.HashSet,this._errorVars.set(e,i)),i.add(n)}})}(this.c||module.parent.exports||{}),function(t){"use strict";t.Timer=t.inherit({initialize:function(){this.isRunning=!1,this._elapsedMs=0},start:function(){return this.isRunning=!0,this._startReading=new Date,this},stop:function(){return this.isRunning=!1,this._elapsedMs+=new Date-this._startReading,this},reset:function(){return this.isRunning=!1,this._elapsedMs=0,this},elapsedTime:function(){return this.isRunning?(this._elapsedMs+(new Date-this._startReading))/1e3:this._elapsedMs/1e3}})}(this.c||module.parent.exports||{}),__cassowary_parser=function(){function t(t){return'"'+t.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g,escape)+'"'}var e={parse:function(e,n){function i(t){H>T||(T>H&&(H=T,F=[]),F.push(t))}function r(){var t,e,n,i,r;if(i=T,r=T,t=g(),null!==t){if(n=s(),null!==n)for(e=[];null!==n;)e.push(n),n=s();else e=null;null!==e?(n=g(),null!==n?t=[t,e,n]:(t=null,T=r)):(t=null,T=r)}else t=null,T=r;return null!==t&&(t=function(t,e){return e}(i,t[1])),null===t&&(T=i),t}function s(){var t,e,n,i;return n=T,i=T,t=k(),null!==t?(e=h(),null!==e?t=[t,e]:(t=null,T=i)):(t=null,T=i),null!==t&&(t=function(t,e){return e}(n,t[0])),null===t&&(T=n),t}function a(){var t;return e.length>T?(t=e.charAt(T),T++):(t=null,0===L&&i("any character")),t}function l(){var t;return/^[a-zA-Z]/.test(e.charAt(T))?(t=e.charAt(T),T++):(t=null,0===L&&i("[a-zA-Z]")),null===t&&(36===e.charCodeAt(T)?(t="$",T++):(t=null,0===L&&i('"$"')),null===t&&(95===e.charCodeAt(T)?(t="_",T++):(t=null,0===L&&i('"_"')))),t}function o(){var t;return L++,/^[\t\x0B\f \xA0\uFEFF]/.test(e.charAt(T))?(t=e.charAt(T),T++):(t=null,0===L&&i("[\\t\\x0B\\f \\xA0\\uFEFF]")),L--,0===L&&null===t&&i("whitespace"),t}function u(){var t;return/^[\n\r\u2028\u2029]/.test(e.charAt(T))?(t=e.charAt(T),T++):(t=null,0===L&&i("[\\n\\r\\u2028\\u2029]")),t}function c(){var t;return L++,10===e.charCodeAt(T)?(t="\n",T++):(t=null,0===L&&i('"\\n"')),null===t&&("\r\n"===e.substr(T,2)?(t="\r\n",T+=2):(t=null,0===L&&i('"\\r\\n"')),null===t&&(13===e.charCodeAt(T)?(t="\r",T++):(t=null,0===L&&i('"\\r"')),null===t&&(8232===e.charCodeAt(T)?(t="\u2028",T++):(t=null,0===L&&i('"\\u2028"')),null===t&&(8233===e.charCodeAt(T)?(t="\u2029",T++):(t=null,0===L&&i('"\\u2029"')))))),L--,0===L&&null===t&&i("end of line"),t}function h(){var t,n,r;return r=T,t=g(),null!==t?(59===e.charCodeAt(T)?(n=";",T++):(n=null,0===L&&i('";"')),null!==n?t=[t,n]:(t=null,T=r)):(t=null,T=r),null===t&&(r=T,t=m(),null!==t?(n=c(),null!==n?t=[t,n]:(t=null,T=r)):(t=null,T=r),null===t&&(r=T,t=g(),null!==t?(n=f(),null!==n?t=[t,n]:(t=null,T=r)):(t=null,T=r))),t}function f(){var t,n;return n=T,L++,e.length>T?(t=e.charAt(T),T++):(t=null,0===L&&i("any character")),L--,null===t?t="":(t=null,T=n),t}function d(){var t;return L++,t=p(),null===t&&(t=b()),L--,0===L&&null===t&&i("comment"),t}function p(){var t,n,r,s,l,o,u;if(l=T,"/*"===e.substr(T,2)?(t="/*",T+=2):(t=null,0===L&&i('"/*"')),null!==t){for(n=[],o=T,u=T,L++,"*/"===e.substr(T,2)?(r="*/",T+=2):(r=null,0===L&&i('"*/"')),L--,null===r?r="":(r=null,T=u),null!==r?(s=a(),null!==s?r=[r,s]:(r=null,T=o)):(r=null,T=o);null!==r;)n.push(r),o=T,u=T,L++,"*/"===e.substr(T,2)?(r="*/",T+=2):(r=null,0===L&&i('"*/"')),L--,null===r?r="":(r=null,T=u),null!==r?(s=a(),null!==s?r=[r,s]:(r=null,T=o)):(r=null,T=o);null!==n?("*/"===e.substr(T,2)?(r="*/",T+=2):(r=null,0===L&&i('"*/"')),null!==r?t=[t,n,r]:(t=null,T=l)):(t=null,T=l)}else t=null,T=l;return t}function v(){var t,n,r,s,l,o,c;if(l=T,"/*"===e.substr(T,2)?(t="/*",T+=2):(t=null,0===L&&i('"/*"')),null!==t){for(n=[],o=T,c=T,L++,"*/"===e.substr(T,2)?(r="*/",T+=2):(r=null,0===L&&i('"*/"')),null===r&&(r=u()),L--,null===r?r="":(r=null,T=c),null!==r?(s=a(),null!==s?r=[r,s]:(r=null,T=o)):(r=null,T=o);null!==r;)n.push(r),o=T,c=T,L++,"*/"===e.substr(T,2)?(r="*/",T+=2):(r=null,0===L&&i('"*/"')),null===r&&(r=u()),L--,null===r?r="":(r=null,T=c),null!==r?(s=a(),null!==s?r=[r,s]:(r=null,T=o)):(r=null,T=o);null!==n?("*/"===e.substr(T,2)?(r="*/",T+=2):(r=null,0===L&&i('"*/"')),null!==r?t=[t,n,r]:(t=null,T=l)):(t=null,T=l)}else t=null,T=l;return t}function b(){var t,n,r,s,l,o,c;if(l=T,"//"===e.substr(T,2)?(t="//",T+=2):(t=null,0===L&&i('"//"')),null!==t){for(n=[],o=T,c=T,L++,r=u(),L--,null===r?r="":(r=null,T=c),null!==r?(s=a(),null!==s?r=[r,s]:(r=null,T=o)):(r=null,T=o);null!==r;)n.push(r),o=T,c=T,L++,r=u(),L--,null===r?r="":(r=null,T=c),null!==r?(s=a(),null!==s?r=[r,s]:(r=null,T=o)):(r=null,T=o);null!==n?t=[t,n]:(t=null,T=l)}else t=null,T=l;return t}function m(){var t,e;for(t=[],e=o(),null===e&&(e=v(),null===e&&(e=b()));null!==e;)t.push(e),e=o(),null===e&&(e=v(),null===e&&(e=b()));return t}function g(){var t,e;for(t=[],e=o(),null===e&&(e=c(),null===e&&(e=d()));null!==e;)t.push(e),e=o(),null===e&&(e=c(),null===e&&(e=d()));return t}function _(){var t,e;return e=T,t=x(),null===t&&(t=w()),null!==t&&(t=function(t,e){return{type:"NumericLiteral",value:e}}(e,t)),null===t&&(T=e),t}function w(){var t,n,r;if(r=T,/^[0-9]/.test(e.charAt(T))?(n=e.charAt(T),T++):(n=null,0===L&&i("[0-9]")),null!==n)for(t=[];null!==n;)t.push(n),/^[0-9]/.test(e.charAt(T))?(n=e.charAt(T),T++):(n=null,0===L&&i("[0-9]"));else t=null;return null!==t&&(t=function(t,e){return parseInt(e.join(""))}(r,t)),null===t&&(T=r),t}function x(){var t,n,r,s,a;return s=T,a=T,t=w(),null!==t?(46===e.charCodeAt(T)?(n=".",T++):(n=null,0===L&&i('"."')),null!==n?(r=w(),null!==r?t=[t,n,r]:(t=null,T=a)):(t=null,T=a)):(t=null,T=a),null!==t&&(t=function(t,e){return parseFloat(e.join(""))}(s,t)),null===t&&(T=s),t}function E(){var t,n,r,s;if(s=T,/^[\-+]/.test(e.charAt(T))?(t=e.charAt(T),T++):(t=null,0===L&&i("[\\-+]")),t=null!==t?t:"",null!==t){if(/^[0-9]/.test(e.charAt(T))?(r=e.charAt(T),T++):(r=null,0===L&&i("[0-9]")),null!==r)for(n=[];null!==r;)n.push(r),/^[0-9]/.test(e.charAt(T))?(r=e.charAt(T),T++):(r=null,0===L&&i("[0-9]"));else n=null;null!==n?t=[t,n]:(t=null,T=s)}else t=null,T=s;return t}function y(){var t,e;return L++,e=T,t=V(),null!==t&&(t=function(t,e){return e}(e,t)),null===t&&(T=e),L--,0===L&&null===t&&i("identifier"),t}function V(){var t,e,n,r,s;if(L++,r=T,s=T,t=l(),null!==t){for(e=[],n=l();null!==n;)e.push(n),n=l();null!==e?t=[t,e]:(t=null,T=s)}else t=null,T=s;return null!==t&&(t=function(t,e,n){return e+n.join("")}(r,t[0],t[1])),null===t&&(T=r),L--,0===L&&null===t&&i("identifier"),t}function C(){var t,n,r,s,a,l,o;return l=T,t=y(),null!==t&&(t=function(t,e){return{type:"Variable",name:e}}(l,t)),null===t&&(T=l),null===t&&(t=_(),null===t&&(l=T,o=T,40===e.charCodeAt(T)?(t="(",T++):(t=null,0===L&&i('"("')),null!==t?(n=g(),null!==n?(r=k(),null!==r?(s=g(),null!==s?(41===e.charCodeAt(T)?(a=")",T++):(a=null,0===L&&i('")"')),null!==a?t=[t,n,r,s,a]:(t=null,T=o)):(t=null,T=o)):(t=null,T=o)):(t=null,T=o)):(t=null,T=o),null!==t&&(t=function(t,e){return e}(l,t[2])),null===t&&(T=l))),t}function S(){var t,e,n,i,r;return t=C(),null===t&&(i=T,r=T,t=A(),null!==t?(e=g(),null!==e?(n=S(),null!==n?t=[t,e,n]:(t=null,T=r)):(t=null,T=r)):(t=null,T=r),null!==t&&(t=function(t,e,n){return{type:"UnaryExpression",operator:e,expression:n}}(i,t[0],t[2])),null===t&&(T=i)),t}function A(){var t;return 43===e.charCodeAt(T)?(t="+",T++):(t=null,0===L&&i('"+"')),null===t&&(45===e.charCodeAt(T)?(t="-",T++):(t=null,0===L&&i('"-"')),null===t&&(33===e.charCodeAt(T)?(t="!",T++):(t=null,0===L&&i('"!"')))),t}function z(){var t,e,n,i,r,s,a,l,o;if(a=T,l=T,t=S(),null!==t){for(e=[],o=T,n=g(),null!==n?(i=M(),null!==i?(r=g(),null!==r?(s=S(),null!==s?n=[n,i,r,s]:(n=null,T=o)):(n=null,T=o)):(n=null,T=o)):(n=null,T=o);null!==n;)e.push(n),o=T,n=g(),null!==n?(i=M(),null!==i?(r=g(),null!==r?(s=S(),null!==s?n=[n,i,r,s]:(n=null,T=o)):(n=null,T=o)):(n=null,T=o)):(n=null,T=o);null!==e?t=[t,e]:(t=null,T=l)}else t=null,T=l;return null!==t&&(t=function(t,e,n){for(var i=e,r=0;n.length>r;r++)i={type:"MultiplicativeExpression",operator:n[r][1],left:i,right:n[r][3]};return i}(a,t[0],t[1])),null===t&&(T=a),t}function M(){var t;return 42===e.charCodeAt(T)?(t="*",T++):(t=null,0===L&&i('"*"')),null===t&&(47===e.charCodeAt(T)?(t="/",T++):(t=null,0===L&&i('"/"'))),t}function O(){var t,e,n,i,r,s,a,l,o;if(a=T,l=T,t=z(),null!==t){for(e=[],o=T,n=g(),null!==n?(i=j(),null!==i?(r=g(),null!==r?(s=z(),null!==s?n=[n,i,r,s]:(n=null,T=o)):(n=null,T=o)):(n=null,T=o)):(n=null,T=o);null!==n;)e.push(n),o=T,n=g(),null!==n?(i=j(),null!==i?(r=g(),null!==r?(s=z(),null!==s?n=[n,i,r,s]:(n=null,T=o)):(n=null,T=o)):(n=null,T=o)):(n=null,T=o);null!==e?t=[t,e]:(t=null,T=l)}else t=null,T=l;return null!==t&&(t=function(t,e,n){for(var i=e,r=0;n.length>r;r++)i={type:"AdditiveExpression",operator:n[r][1],left:i,right:n[r][3]};return i}(a,t[0],t[1])),null===t&&(T=a),t}function j(){var t;return 43===e.charCodeAt(T)?(t="+",T++):(t=null,0===L&&i('"+"')),null===t&&(45===e.charCodeAt(T)?(t="-",T++):(t=null,0===L&&i('"-"'))),t}function R(){var t,e,n,i,r,s,a,l,o;if(a=T,l=T,t=O(),null!==t){for(e=[],o=T,n=g(),null!==n?(i=I(),null!==i?(r=g(),null!==r?(s=O(),null!==s?n=[n,i,r,s]:(n=null,T=o)):(n=null,T=o)):(n=null,T=o)):(n=null,T=o);null!==n;)e.push(n),o=T,n=g(),null!==n?(i=I(),null!==i?(r=g(),null!==r?(s=O(),null!==s?n=[n,i,r,s]:(n=null,T=o)):(n=null,T=o)):(n=null,T=o)):(n=null,T=o);null!==e?t=[t,e]:(t=null,T=l)}else t=null,T=l;return null!==t&&(t=function(t,e,n){for(var i=e,r=0;n.length>r;r++)i={type:"Inequality",operator:n[r][1],left:i,right:n[r][3]};return i}(a,t[0],t[1])),null===t&&(T=a),t}function I(){var t;return"<="===e.substr(T,2)?(t="<=",T+=2):(t=null,0===L&&i('"<="')),null===t&&(">="===e.substr(T,2)?(t=">=",T+=2):(t=null,0===L&&i('">="')),null===t&&(60===e.charCodeAt(T)?(t="<",T++):(t=null,0===L&&i('"<"')),null===t&&(62===e.charCodeAt(T)?(t=">",T++):(t=null,0===L&&i('">"'))))),t}function k(){var t,n,r,s,a,l,o,u,c;if(o=T,u=T,t=R(),null!==t){for(n=[],c=T,r=g(),null!==r?("=="===e.substr(T,2)?(s="==",T+=2):(s=null,0===L&&i('"=="')),null!==s?(a=g(),null!==a?(l=R(),null!==l?r=[r,s,a,l]:(r=null,T=c)):(r=null,T=c)):(r=null,T=c)):(r=null,T=c);null!==r;)n.push(r),c=T,r=g(),null!==r?("=="===e.substr(T,2)?(s="==",T+=2):(s=null,0===L&&i('"=="')),null!==s?(a=g(),null!==a?(l=R(),null!==l?r=[r,s,a,l]:(r=null,T=c)):(r=null,T=c)):(r=null,T=c)):(r=null,T=c);null!==n?t=[t,n]:(t=null,T=u)}else t=null,T=u;return null!==t&&(t=function(t,e,n){for(var i=e,r=0;n.length>r;r++)i={type:"Equality",operator:n[r][1],left:i,right:n[r][3]};return i}(o,t[0],t[1])),null===t&&(T=o),t}function N(t){t.sort();for(var e=null,n=[],i=0;t.length>i;i++)t[i]!==e&&(n.push(t[i]),e=t[i]);return n}function q(){for(var t=1,n=1,i=!1,r=0;Math.max(T,H)>r;r++){var s=e.charAt(r);"\n"===s?(i||t++,n=1,i=!1):"\r"===s||"\u2028"===s||"\u2029"===s?(t++,n=1,i=!0):(n++,i=!1)}return{line:t,column:n}}var P={start:r,Statement:s,SourceCharacter:a,IdentifierStart:l,WhiteSpace:o,LineTerminator:u,LineTerminatorSequence:c,EOS:h,EOF:f,Comment:d,MultiLineComment:p,MultiLineCommentNoLineTerminator:v,SingleLineComment:b,_:m,__:g,Literal:_,Integer:w,Real:x,SignedInteger:E,Identifier:y,IdentifierName:V,PrimaryExpression:C,UnaryExpression:S,UnaryOperator:A,MultiplicativeExpression:z,MultiplicativeOperator:M,AdditiveExpression:O,AdditiveOperator:j,InequalityExpression:R,InequalityOperator:I,LinearExpression:k};if(void 0!==n){if(void 0===P[n])throw Error("Invalid rule name: "+t(n)+".")}else n="start";var T=0,L=0,H=0,F=[],D=P[n]();if(null===D||T!==e.length){var Q=Math.max(T,H),W=e.length>Q?e.charAt(Q):null,G=q();throw new this.SyntaxError(N(F),W,Q,G.line,G.column)}return D},toSource:function(){return this._source}};return e.SyntaxError=function(e,n,i,r,s){function a(e,n){var i,r;switch(e.length){case 0:i="end of input";break;case 1:i=e[0];break;default:i=e.slice(0,e.length-1).join(", ")+" or "+e[e.length-1]}return r=n?t(n):"end of input","Expected "+i+" but "+r+" found."}this.name="SyntaxError",this.expected=e,this.found=n,this.message=a(e,n),this.offset=i,this.line=r,this.column=s},e.SyntaxError.prototype=Error.prototype,e}()}).call("undefined"!=typeof module?module.compiled=!0&&module:this); },{}],2:[function(require,module,exports){ -"use strict";function _classCallCheck(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _processEqualSpacer(t,e){t.equalSpacerIndex=t.equalSpacerIndex||1;var r="_~"+t.lineIndex+":"+t.equalSpacerIndex+"~";switch(t.equalSpacerIndex>1&&t.constraints.push({view1:"_~"+t.lineIndex+":1~",attr1:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,relation:t.relation.relation||Relation.EQU,view2:r,attr2:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,priority:t.relation.priority}),t.equalSpacerIndex++,t.relation.multiplier&&1!==t.relation.multiplier?(t.constraints.push({view1:r,attr1:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,relation:t.relation.relation||Relation.EQU,view2:null,attr2:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,priority:t.relation.priority,multiplier:t.relation.multiplier}),t.relation.multiplier=void 0):t.relation.constant&&(t.constraints.push({view1:r,attr1:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,relation:Relation.EQU,view2:null,attr2:Attribute.CONST,priority:t.relation.priority,constant:t.relation.constant}),t.relation.constant=void 0),t.orientation){case Orientation.HORIZONTAL:t.attr1=t.view1!==e?Attribute.RIGHT:Attribute.LEFT,t.attr2=Attribute.LEFT;break;case Orientation.VERTICAL:t.attr1=t.view1!==e?Attribute.BOTTOM:Attribute.TOP,t.attr2=Attribute.TOP;break;case Orientation.ZINDEX:t.attr1=Attribute.ZINDEX,t.attr2=Attribute.ZINDEX,t.relation.constant=t.view1!==e?"default":0}t.constraints.push({view1:t.view1,attr1:t.attr1,relation:t.relation.relation,view2:r,attr2:t.attr2,priority:t.relation.priority}),t.view1=r}function _processProportionalSpacer(t,e){t.proportionalSpacerIndex=t.proportionalSpacerIndex||1;var r="_-"+t.lineIndex+":"+t.proportionalSpacerIndex+"-";switch(t.proportionalSpacerIndex++,t.constraints.push({view1:r,attr1:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,relation:t.relation.relation||Relation.EQU,view2:null,attr2:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,priority:t.relation.priority,multiplier:t.relation.multiplier}),t.relation.multiplier=void 0,t.orientation){case Orientation.HORIZONTAL:t.attr1=t.view1!==e?Attribute.RIGHT:Attribute.LEFT,t.attr2=Attribute.LEFT;break;case Orientation.VERTICAL:t.attr1=t.view1!==e?Attribute.BOTTOM:Attribute.TOP,t.attr2=Attribute.TOP;break;case Orientation.ZINDEX:t.attr1=Attribute.ZINDEX,t.attr2=Attribute.ZINDEX,t.relation.constant=t.view1!==e?"default":0}t.constraints.push({view1:t.view1,attr1:t.attr1,relation:t.relation.relation,view2:r,attr2:t.attr2,priority:t.relation.priority}),t.view1=r}function _processStackView(t,e,r){for(var i=void 0,n=1;4>=n;n*=2)if(r.orientations&n&&r.stack.orientation!==n&&!(r.stack.processedOrientations&n)){r.stack.processedOrientations=r.stack.processedOrientations|n,i=i||{name:e,type:"stack"};for(var a=0,s=r.stack.subViews.length;s>a;a++)n===Orientation.ZINDEX?t.constraints.push({view1:i,attr1:Attribute.ZINDEX,relation:Relation.EQU,view2:r.stack.subViews[a],attr2:Attribute.ZINDEX}):(t.constraints.push({view1:i,attr1:n===Orientation.VERTICAL?Attribute.HEIGHT:Attribute.WIDTH,relation:Relation.EQU,view2:r.stack.subViews[a],attr2:n===Orientation.VERTICAL?Attribute.HEIGHT:Attribute.WIDTH}),t.constraints.push({view1:i,attr1:n===Orientation.VERTICAL?Attribute.TOP:Attribute.LEFT,relation:Relation.EQU,view2:r.stack.subViews[a],attr2:n===Orientation.VERTICAL?Attribute.TOP:Attribute.LEFT}))}}function _processCascade(t,e,r){var i=[],n=void 0;r&&e.push({view:r});for(var a=0;ar;r++)if(t[r]!==e[r])return!1;return!0}var _createClass=function(){function t(t,e){for(var r=0;rn;n++)a=t.charAt(n),"\n"===a?(e.seenCR||e.line++,e.column=1,e.seenCR=!1):"\r"===a||"\u2028"===a||"\u2029"===a?(e.line++,e.column=1,e.seenCR=!0):(e.column++,e.seenCR=!1)}return kt!==e&&(kt>e&&(kt=0,Rt={line:1,column:1,seenCR:!1}),r(Rt,kt,e),kt=e),Rt}function n(t){Ft>St||(St>Ft&&(Ft=St,Nt=[]),Nt.push(t))}function a(r,n,a){function s(t){var e=1;for(t.sort(function(t,e){return t.descriptione.description?1:0});e1?s.slice(0,-1).join(", ")+" or "+s[t.length-1]:s[0],n=e?'"'+r(e)+'"':"end of input","Expected "+i+" but "+n+" found."}var u=i(a),c=a1?arguments[1]:{},E={},I={visualFormatString:s},T=s,V=E,O=null,H=":",S={type:"literal",value:":",description:'":"'},x=function(t,e,r,i,n){return{orientation:t?t[0]:"horizontal",cascade:(e||[]).concat([r],[].concat.apply([],i),n||[])}},k="H",R={type:"literal",value:"H",description:'"H"'},F="V",N={type:"literal",value:"V",description:'"V"'},q=function(t){return"H"==t?"horizontal":"vertical"},L="|",D={type:"literal",value:"|",description:'"|"'},Z=function(){return{view:null}},z="[",G={type:"literal",value:"[",description:'"["'},X="]",P={type:"literal",value:"]",description:'"]"'},W=function(t,e){return y(t,e?{constraints:e}:{})},Q="-",U={type:"literal",value:"-",description:'"-"'},$=function(t){return t},B=function(){return[{relation:"equ",constant:"default",$parserOffset:r()}]},j="",Y=function(){return[{relation:"equ",constant:0,$parserOffset:r()}]},M=function(t){return[{relation:"equ",constant:t,$parserOffset:r()}]},J="(",K={type:"literal",value:"(",description:'"("'},tt=",",et={type:"literal",value:",",description:'","'},rt=")",it={type:"literal",value:")",description:'")"'},nt=function(t,e){return[t].concat(e.map(function(t){return t[1]}))},at="@",st={type:"literal",value:"@",description:'"@"'},ot=function(t,e,r){return y({relation:"equ"},t||{},e,r?r[1]:{})},ut="==",ct={type:"literal",value:"==",description:'"=="'},lt=function(){return{relation:"equ",$parserOffset:r()}},ht="<=",pt={type:"literal",value:"<=",description:'"<="'},ft=function(){return{relation:"leq",$parserOffset:r()}},dt=">=",vt={type:"literal",value:">=",description:'">="'},At=function(){return{relation:"geq",$parserOffset:r()}},gt=/^[0-9]/,wt={type:"class",value:"[0-9]",description:"[0-9]"},bt=function(t){return{priority:parseInt(t.join(""),10)}},_t=function(t){return{constant:t}},yt=/^[a-zA-Z_]/,mt={type:"class",value:"[a-zA-Z_]",description:"[a-zA-Z_]"},Ct=/^[a-zA-Z0-9_]/,Et={type:"class",value:"[a-zA-Z0-9_]",description:"[a-zA-Z0-9_]"},It=function(t,e){return{view:t+e}},Tt=".",Vt={type:"literal",value:".",description:'"."'},Ot=function(t,e){return parseFloat(t.concat(".").concat(e).join(""),10)},Ht=function(t){return parseInt(t.join(""),10)},St=0,xt=0,kt=0,Rt={line:1,column:1,seenCR:!1},Ft=0,Nt=[],qt=0;if("startRule"in C){if(!(C.startRule in I))throw new Error("Can't start parsing from rule \""+C.startRule+'".');T=I[C.startRule]}if(m=T(),m!==E&&St===t.length)return m;throw m!==E&&Stn;n++)a=t.charAt(n),"\n"===a?(e.seenCR||e.line++,e.column=1,e.seenCR=!1):"\r"===a||"\u2028"===a||"\u2029"===a?(e.line++,e.column=1,e.seenCR=!0):(e.column++,e.seenCR=!1)}return ze!==e&&(ze>e&&(ze=0,Ge={line:1,column:1,seenCR:!1}),r(Ge,ze,e),ze=e),Ge}function n(t){Xe>De||(De>Xe&&(Xe=De,Pe=[]),Pe.push(t))}function a(r,n,a){function s(t){var e=1;for(t.sort(function(t,e){return t.descriptione.description?1:0});e1?s.slice(0,-1).join(", ")+" or "+s[t.length-1]:s[0],n=e?'"'+r(e)+'"':"end of input","Expected "+i+" but "+n+" found."}var u=i(a),c=aDe?(s=t.charAt(De),De++):(s=R,0===We&&n(J));s!==R;)a.push(s),t.length>De?(s=t.charAt(De),De++):(s=R,0===We&&n(J));a!==R?(r=[r,i,a],e=r):(De=e,e=q)}else De=e,e=q;else De=e,e=q;return e}function c(){var e,r;return e=De,124===t.charCodeAt(De)?(r=K,De++):(r=R,0===We&&n(tt)),r!==R&&(Ze=e,r=et()),e=r}function l(){var e,r,i,a,s,o;return e=De,91===t.charCodeAt(De)?(r=rt,De++):(r=R,0===We&&n(it)),r!==R?(i=O(),i!==R?(a=v(),a===R&&(a=L),a!==R?(s=h(),s===R&&(s=L),s!==R?(93===t.charCodeAt(De)?(o=nt,De++):(o=R,0===We&&n(at)),o!==R?(Ze=e,r=st(i,a,s),e=r):(De=e,e=q)):(De=e,e=q)):(De=e,e=q)):(De=e,e=q)):(De=e,e=q),e}function h(){var e,r,i,a,s,o;if(e=De,58===t.charCodeAt(De)?(r=D,De++):(r=R,0===We&&n(Z)),r!==R){if(i=[],a=De,s=p(),s!==R?(o=l(),o!==R?(s=[s,o],a=s):(De=a,a=q)):(De=a,a=q),a!==R)for(;a!==R;)i.push(a),a=De,s=p(),s!==R?(o=l(),o!==R?(s=[s,o],a=s):(De=a,a=q)):(De=a,a=q);else i=q;i!==R?(a=p(),a!==R?(Ze=e,r=ot(i,a),e=r):(De=e,e=q)):(De=e,e=q)}else De=e,e=q;return e}function p(){var e,r,i,a;return e=De,t.substr(De,2)===ut?(r=ut,De+=2):(r=R,0===We&&n(ct)),r!==R&&(Ze=e,r=lt()),e=r,e===R&&(e=De,45===t.charCodeAt(De)?(r=ht,De++):(r=R,0===We&&n(pt)),r!==R?(i=f(),i!==R?(45===t.charCodeAt(De)?(a=ht,De++):(a=R,0===We&&n(pt)),a!==R?(Ze=e,r=ft(i),e=r):(De=e,e=q)):(De=e,e=q)):(De=e,e=q),e===R&&(e=De,45===t.charCodeAt(De)?(r=ht,De++):(r=R,0===We&&n(pt)),r!==R&&(Ze=e,r=dt()),e=r,e===R&&(e=De,126===t.charCodeAt(De)?(r=vt,De++):(r=R,0===We&&n(At)),r!==R?(i=g(),i!==R?(126===t.charCodeAt(De)?(a=vt,De++):(a=R,0===We&&n(At)),a!==R?(Ze=e,r=ft(i),e=r):(De=e,e=q)):(De=e,e=q)):(De=e,e=q),e===R&&(e=De,126===t.charCodeAt(De)?(r=vt,De++):(r=R,0===We&&n(At)),r!==R&&(Ze=e,r=gt()),e=r,e===R&&(e=De,r=wt,r!==R&&(Ze=e,r=bt()),e=r))))),e}function f(){var t;return t=d(),t===R&&(t=v()),t}function d(){var t,e;return t=De,e=C(),e!==R&&(Ze=t,e=_t(e)),t=e,t===R&&(t=De,e=H(),e!==R&&(Ze=t,e=yt(e)),t=e),t}function v(){var e,r,i,a,s,o,u;if(e=De,40===t.charCodeAt(De)?(r=mt,De++):(r=R,0===We&&n(Ct)),r!==R)if(i=A(),i!==R){for(a=[],s=De,44===t.charCodeAt(De)?(o=Et,De++):(o=R,0===We&&n(It)),o!==R?(u=A(),u!==R?(o=[o,u],s=o):(De=s,s=q)):(De=s,s=q);s!==R;)a.push(s),s=De,44===t.charCodeAt(De)?(o=Et,De++):(o=R,0===We&&n(It)),o!==R?(u=A(),u!==R?(o=[o,u],s=o):(De=s,s=q)):(De=s,s=q);a!==R?(41===t.charCodeAt(De)?(s=Tt,De++):(s=R,0===We&&n(Vt)),s!==R?(Ze=e,r=Ot(i,a),e=r):(De=e,e=q)):(De=e,e=q)}else De=e,e=q;else De=e,e=q;return e}function A(){var e,r,i,a,s,o;return e=De,r=b(),r===R&&(r=L),r!==R?(i=_(),i!==R?(a=De,64===t.charCodeAt(De)?(s=Ht,De++):(s=R,0===We&&n(St)),s!==R?(o=y(),o!==R?(s=[s,o],a=s):(De=a,a=q)):(De=a,a=q),a===R&&(a=L),a!==R?(Ze=e,r=xt(r,i,a),e=r):(De=e,e=q)):(De=e,e=q)):(De=e,e=q),e}function g(){var e,r,i,a,s,o,u;if(e=De,40===t.charCodeAt(De)?(r=mt,De++):(r=R,0===We&&n(Ct)),r!==R)if(i=w(),i!==R){for(a=[],s=De,44===t.charCodeAt(De)?(o=Et,De++):(o=R,0===We&&n(It)),o!==R?(u=w(),u!==R?(o=[o,u],s=o):(De=s,s=q)):(De=s,s=q);s!==R;)a.push(s),s=De,44===t.charCodeAt(De)?(o=Et,De++):(o=R,0===We&&n(It)),o!==R?(u=w(),u!==R?(o=[o,u],s=o):(De=s,s=q)):(De=s,s=q);a!==R?(41===t.charCodeAt(De)?(s=Tt,De++):(s=R,0===We&&n(Vt)),s!==R?(Ze=e,r=Ot(i,a),e=r):(De=e,e=q)):(De=e,e=q)}else De=e,e=q;else De=e,e=q;return e}function w(){var e,r,i,a,s,o;return e=De,r=b(),r===R&&(r=L),r!==R?(i=_(),i!==R?(a=De,64===t.charCodeAt(De)?(s=Ht,De++):(s=R,0===We&&n(St)),s!==R?(o=y(),o!==R?(s=[s,o],a=s):(De=a,a=q)):(De=a,a=q),a===R&&(a=L),a!==R?(Ze=e,r=kt(r,i,a),e=r):(De=e,e=q)):(De=e,e=q)):(De=e,e=q),e}function b(){var e,r;return e=De,t.substr(De,2)===Rt?(r=Rt,De+=2):(r=R,0===We&&n(Ft)),r!==R&&(Ze=e,r=Nt()),e=r,e===R&&(e=De,t.substr(De,2)===qt?(r=qt,De+=2):(r=R,0===We&&n(Lt)),r!==R&&(Ze=e,r=Dt()),e=r,e===R&&(e=De,t.substr(De,2)===Zt?(r=Zt,De+=2):(r=R,0===We&&n(zt)),r!==R&&(Ze=e,r=Gt()),e=r)),e}function _(){var t;return t=C(),t===R&&(t=m(),t===R&&(t=E())),t}function y(){var e,r,i;if(e=De,r=[],Xt.test(t.charAt(De))?(i=t.charAt(De),De++):(i=R,0===We&&n(Pt)),i!==R)for(;i!==R;)r.push(i),Xt.test(t.charAt(De))?(i=t.charAt(De),De++):(i=R,0===We&&n(Pt));else r=q;return r!==R&&(Ze=e,r=Wt(r)),e=r}function m(){var t,e;return t=De,e=H(),e!==R&&(Ze=t,e=Qt(e)),t=e}function C(){var e,r,i;return e=De,r=H(),r!==R?(37===t.charCodeAt(De)?(i=Ut,De++):(i=R,0===We&&n($t)),i!==R?(Ze=e,r=Bt(r),e=r):(De=e,e=q)):(De=e,e=q),e}function E(){var t,e,r,i,n;return t=De,e=O(),e!==R?(r=I(),r===R&&(r=L),r!==R?(i=T(),i===R&&(i=L),i!==R?(n=V(),n===R&&(n=L),n!==R?(Ze=t,e=jt(e,r,i,n),t=e):(De=t,t=q)):(De=t,t=q)):(De=t,t=q)):(De=t,t=q),t}function I(){var e,r;return e=De,t.substr(De,5)===Yt?(r=Yt,De+=5):(r=R,0===We&&n(Mt)),r!==R&&(Ze=e,r=Jt()),e=r,e===R&&(e=De,t.substr(De,6)===Kt?(r=Kt,De+=6):(r=R,0===We&&n(te)),r!==R&&(Ze=e,r=ee()),e=r,e===R&&(e=De,t.substr(De,4)===re?(r=re,De+=4):(r=R,0===We&&n(ie)),r!==R&&(Ze=e,r=ne()),e=r,e===R&&(e=De,t.substr(De,7)===ae?(r=ae,De+=7):(r=R,0===We&&n(se)),r!==R&&(Ze=e,r=oe()),e=r,e===R&&(e=De,t.substr(De,6)===ue?(r=ue,De+=6):(r=R,0===We&&n(ce)),r!==R&&(Ze=e,r=le()),e=r,e===R&&(e=De,t.substr(De,7)===he?(r=he,De+=7):(r=R,0===We&&n(pe)),r!==R&&(Ze=e,r=fe()),e=r,e===R&&(e=De,t.substr(De,8)===de?(r=de,De+=8):(r=R,0===We&&n(ve)),r!==R&&(Ze=e,r=Ae()),e=r,e===R&&(e=De,t.substr(De,8)===ge?(r=ge,De+=8):(r=R,0===We&&n(we)),r!==R&&(Ze=e,r=be()),e=r))))))),e}function T(){var e,r,i;return e=De,47===t.charCodeAt(De)?(r=_e,De++):(r=R,0===We&&n(ye)),r!==R?(i=H(),i!==R?(Ze=e,r=me(i),e=r):(De=e,e=q)):(De=e,e=q),e===R&&(e=De,42===t.charCodeAt(De)?(r=Ce,De++):(r=R,0===We&&n(Ee)),r!==R?(i=H(),i!==R?(Ze=e,r=Ie(i),e=r):(De=e,e=q)):(De=e,e=q)),e}function V(){var e,r,i;return e=De,45===t.charCodeAt(De)?(r=ht,De++):(r=R,0===We&&n(pt)),r!==R?(i=H(),i!==R?(Ze=e,r=Te(i),e=r):(De=e,e=q)):(De=e,e=q),e===R&&(e=De,43===t.charCodeAt(De)?(r=Ve,De++):(r=R,0===We&&n(Oe)),r!==R?(i=H(),i!==R?(Ze=e,r=Ie(i),e=r):(De=e,e=q)):(De=e,e=q)),e}function O(){var e,r,i,a,s;if(e=De,r=De,i=[],He.test(t.charAt(De))?(a=t.charAt(De),De++):(a=R,0===We&&n(Se)),a!==R)for(;a!==R;)i.push(a),He.test(t.charAt(De))?(a=t.charAt(De),De++):(a=R,0===We&&n(Se));else i=q;if(i!==R&&(i=t.substring(r,De)),r=i,r!==R){for(i=De,a=[],xe.test(t.charAt(De))?(s=t.charAt(De),De++):(s=R,0===We&&n(ke));s!==R;)a.push(s),xe.test(t.charAt(De))?(s=t.charAt(De),De++):(s=R,0===We&&n(ke));a!==R&&(a=t.substring(i,De)),i=a,i!==R?(Ze=e,r=Re(r,i),e=r):(De=e,e=q)}else De=e,e=q;return e}function H(){var e,r,i,a,s;if(e=De,r=[],Xt.test(t.charAt(De))?(i=t.charAt(De),De++):(i=R,0===We&&n(Pt)),i!==R)for(;i!==R;)r.push(i),Xt.test(t.charAt(De))?(i=t.charAt(De),De++):(i=R,0===We&&n(Pt));else r=q;if(r!==R)if(46===t.charCodeAt(De)?(i=Fe,De++):(i=R,0===We&&n(Ne)),i!==R){if(a=[],Xt.test(t.charAt(De))?(s=t.charAt(De),De++):(s=R,0===We&&n(Pt)),s!==R)for(;s!==R;)a.push(s),Xt.test(t.charAt(De))?(s=t.charAt(De),De++):(s=R,0===We&&n(Pt));else a=q;a!==R?(Ze=e,r=qe(r,a),e=r):(De=e,e=q)}else De=e,e=q;else De=e,e=q;if(e===R){if(e=De,r=[],Xt.test(t.charAt(De))?(i=t.charAt(De),De++):(i=R,0===We&&n(Pt)),i!==R)for(;i!==R;)r.push(i),Xt.test(t.charAt(De))?(i=t.charAt(De),De++):(i=R,0===We&&n(Pt));else r=q;r!==R&&(Ze=e,r=Le(r)),e=r}return e}function S(t){for(var e=1;e1?arguments[1]:{},R={},F={visualFormatString:s},N=s,q=R,L=null,D=":",Z={type:"literal",value:":",description:'":"'},z=function(t,e,r,i,n,a){return{orientation:t?t[0]:"horizontal",cascade:(e||[]).concat([r],[].concat.apply([],i),n||[])}},G="H",X={type:"literal",value:"H",description:'"H"'},P="V",W={type:"literal",value:"V",description:'"V"'},Q="Z",U={type:"literal",value:"Z",description:'"Z"'},$=function(t){return"H"==t?"horizontal":"V"==t?"vertical":"zIndex"},B=" ",j={type:"literal",value:" ",description:'" "'},Y="//",M={type:"literal",value:"//",description:'"//"'},J={type:"any",description:"any character"},K="|",tt={type:"literal",value:"|",description:'"|"'},et=function(){return{view:null}},rt="[",it={type:"literal",value:"[",description:'"["'},nt="]",at={type:"literal",value:"]",description:'"]"'},st=function(t,e,r){return S(S(t,e?{constraints:e}:{}),r?{cascade:r}:{})},ot=function(t,e){return[].concat([].concat.apply([],t),[e])},ut="->",ct={type:"literal",value:"->",description:'"->"'},lt=function(){return[{relation:"none",$parserOffset:r()}]},ht="-",pt={type:"literal",value:"-",description:'"-"'},ft=function(t){return t},dt=function(){return[{relation:"equ",constant:"default",$parserOffset:r()}]},vt="~",At={type:"literal",value:"~",description:'"~"'},gt=function(){return[{relation:"equ",equalSpacing:!0,$parserOffset:r()}]},wt="",bt=function(){return[{relation:"equ",constant:0,$parserOffset:r()}]},_t=function(t){return[{relation:"equ",multiplier:t.multiplier,$parserOffset:r()}]},yt=function(t){return[{relation:"equ",constant:t,$parserOffset:r()}]},mt="(",Ct={type:"literal",value:"(",description:'"("'},Et=",",It={type:"literal",value:",",description:'","'},Tt=")",Vt={type:"literal",value:")",description:'")"'},Ot=function(t,e){return[t].concat(e.map(function(t){return t[1]}))},Ht="@",St={type:"literal",value:"@",description:'"@"'},xt=function(t,e,r){return S({relation:"equ"},t||{},e,r?r[1]:{})},kt=function(t,e,r){return S({relation:"equ",equalSpacing:!0},t||{},e,r?r[1]:{})},Rt="==",Ft={type:"literal",value:"==",description:'"=="'},Nt=function(){return{relation:"equ",$parserOffset:r()}},qt="<=",Lt={type:"literal",value:"<=",description:'"<="'},Dt=function(){return{relation:"leq",$parserOffset:r()}},Zt=">=",zt={type:"literal",value:">=",description:'">="'},Gt=function(){return{relation:"geq",$parserOffset:r()}},Xt=/^[0-9]/,Pt={type:"class",value:"[0-9]",description:"[0-9]"},Wt=function(t){return{priority:parseInt(t.join(""),10)}},Qt=function(t){return{constant:t}},Ut="%",$t={type:"literal",value:"%",description:'"%"'},Bt=function(t){return{view:null,multiplier:t/100}},jt=function(t,e,r,i){return{view:t.view,attribute:e?e:void 0,multiplier:r?r:1,constant:i?i:void 0}},Yt=".left",Mt={type:"literal",value:".left",description:'".left"'},Jt=function(){return"left"},Kt=".right",te={type:"literal",value:".right",description:'".right"'},ee=function(){return"right"},re=".top",ie={type:"literal",value:".top",description:'".top"'},ne=function(){return"top"},ae=".bottom",se={type:"literal",value:".bottom",description:'".bottom"'},oe=function(){return"bottom"},ue=".width",ce={type:"literal",value:".width",description:'".width"'},le=function(){return"width"},he=".height",pe={type:"literal",value:".height",description:'".height"'},fe=function(){return"height"},de=".centerX",ve={type:"literal",value:".centerX",description:'".centerX"'},Ae=function(){return"centerX"},ge=".centerY",we={type:"literal",value:".centerY",description:'".centerY"'},be=function(){return"centerY"},_e="/",ye={type:"literal",value:"/",description:'"/"'},me=function(t){return 1/t},Ce="*",Ee={type:"literal",value:"*",description:'"*"'},Ie=function(t){return t},Te=function(t){return-t},Ve="+",Oe={type:"literal",value:"+",description:'"+"'},He=/^[a-zA-Z_]/,Se={type:"class",value:"[a-zA-Z_]",description:"[a-zA-Z_]"},xe=/^[a-zA-Z0-9_]/,ke={type:"class",value:"[a-zA-Z0-9_]",description:"[a-zA-Z0-9_]"},Re=function(t,e){return{view:t+e}},Fe=".",Ne={type:"literal",value:".",description:'"."'},qe=function(t,e){return parseFloat(t.concat(".").concat(e).join(""),10)},Le=function(t){return parseInt(t.join(""),10)},De=0,Ze=0,ze=0,Ge={line:1,column:1,seenCR:!1},Xe=0,Pe=[],We=0;if("startRule"in k){if(!(k.startRule in F))throw new Error("Can't start parsing from rule \""+k.startRule+'".');N=F[k.startRule]}if(x=N(),x!==R&&De===t.length)return x;throw x!==R&&De1?f[1]:""}else 0===u.indexOf("//"+l+":")&&(n[l]=u.substring(3+l.length))}if(n.viewport){var d=n.viewport,v=d["aspect-ratio"];v&&(v=v.split("/"),d["aspect-ratio"]=parseInt(v[0])/parseInt(v[1])),void 0!==d.height&&(d.height="intrinsic"===d.height?!0:parseInt(d.height)),void 0!==d.width&&(d.width="intrinsic"===d.width?!0:parseInt(d.width)),void 0!==d["max-height"]&&(d["max-height"]=parseInt(d["max-height"])),void 0!==d["max-width"]&&(d["max-width"]=parseInt(d["max-width"])),void 0!==d["min-height"]&&(d["min-height"]=parseInt(d["min-height"])),void 0!==d["min-width"]&&(d["min-width"]=parseInt(d["min-width"]))}if(n.widths)for(i in n.widths){var A="intrinsic"===n.widths[i]?!0:parseInt(n.widths[i]);n.widths[i]=A,(void 0===A||isNaN(A))&&delete n.widths[i]}if(n.heights)for(i in n.heights){var g="intrinsic"===n.heights[i]?!0:parseInt(n.heights[i]);n.heights[i]=g,(void 0===g||isNaN(g))&&delete n.heights[i]}if(n.spacing){var w=JSON.parse(n.spacing);n.spacing=w,(void 0===w||isNaN(w))&&delete n.spacing}return n}}]),t}(),SubView=function(){function t(e){_classCallCheck(this,t),this._name=e.name,this._type=e.type,this._solver=e.solver,this._attr={},e.name||(this._attr[Attribute.LEFT]=new c.Variable,this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.LEFT],c.Strength.required)),this._attr[Attribute.TOP]=new c.Variable,this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.TOP],c.Strength.required)),this._attr[Attribute.ZINDEX]=new c.Variable,this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.ZINDEX],c.Strength.required)))}return _createClass(t,[{key:"toJSON",value:function(){return{name:this.name,left:this.left,top:this.top,width:this.width,height:this.height}}},{key:"toString",value:function(){JSON.stringify(this.toJSON(),void 0,2)}},{key:"name",get:function(){return this._name}},{key:"left",get:function(){return this._getAttrValue(Attribute.LEFT)}},{key:"right",get:function(){return this._getAttrValue(Attribute.RIGHT)}},{key:"width",get:function(){return this._getAttrValue(Attribute.WIDTH)}},{key:"height",get:function(){return this._getAttrValue(Attribute.HEIGHT)}},{key:"intrinsicWidth",get:function(){return this._intrinsicWidth},set:function(t){if(void 0!==t&&t!==this._intrinsicWidth){var e=this._getAttr(Attribute.WIDTH);void 0===this._intrinsicWidth&&this._solver.addEditVar(e,new c.Strength("required",this._name?998:999,1e3,1e3)),this._intrinsicWidth=t,this._solver.suggestValue(e,t),this._solver.resolve()}}},{key:"intrinsicHeight",get:function(){return this._intrinsicHeight},set:function(t){if(void 0!==t&&t!==this._intrinsicHeight){var e=this._getAttr(Attribute.HEIGHT);void 0===this._intrinsicHeight&&this._solver.addEditVar(e,new c.Strength("required",this._name?998:999,1e3,1e3)),this._intrinsicHeight=t,this._solver.suggestValue(e,t),this._solver.resolve()}}},{key:"top",get:function(){return this._getAttrValue(Attribute.TOP)}},{key:"bottom",get:function(){return this._getAttrValue(Attribute.BOTTOM)}},{key:"centerX",get:function(){return this._getAttrValue(Attribute.CENTERX)}},{key:"centerY",get:function(){return this._getAttrValue(Attribute.CENTERY)}},{key:"zIndex",get:function(){return this._getAttrValue(Attribute.ZINDEX)}},{key:"type",get:function(){return this._type}},{key:"getValue",value:function(t){return this._attr[t]?this._attr[t].value():void 0}},{key:"_getAttr",value:function(t){if(this._attr[t])return this._attr[t];switch(this._attr[t]=new c.Variable,t){case Attribute.RIGHT:this._getAttr(Attribute.LEFT),this._getAttr(Attribute.WIDTH),this._solver.addConstraint(new c.Equation(this._attr[t],c.plus(this._attr[Attribute.LEFT],this._attr[Attribute.WIDTH])));break;case Attribute.BOTTOM:this._getAttr(Attribute.TOP),this._getAttr(Attribute.HEIGHT),this._solver.addConstraint(new c.Equation(this._attr[t],c.plus(this._attr[Attribute.TOP],this._attr[Attribute.HEIGHT])));break;case Attribute.CENTERX:this._getAttr(Attribute.LEFT),this._getAttr(Attribute.WIDTH),this._solver.addConstraint(new c.Equation(this._attr[t],c.plus(this._attr[Attribute.LEFT],c.divide(this._attr[Attribute.WIDTH],2))));break;case Attribute.CENTERY:this._getAttr(Attribute.TOP),this._getAttr(Attribute.HEIGHT),this._solver.addConstraint(new c.Equation(this._attr[t],c.plus(this._attr[Attribute.TOP],c.divide(this._attr[Attribute.HEIGHT],2))))}return this._attr[t]}},{key:"_getAttrValue",value:function(t){return this._getAttr(t).value}}]),t}(),defaultPriorityStrength=new c.Strength("defaultPriority",0,1e3,1e3),View=function(){function t(e){_classCallCheck(this,t),this._solver=new c.SimplexSolver,this._subViews={},this._parentSubView=new SubView({solver:this._solver}),this.setSpacing(e&&void 0!==e.spacing?e.spacing:8),e&&((void 0!==e.width||void 0!==e.height)&&this.setSize(e.width,e.height),e.constraints&&this.addConstraints(e.constraints))}return _createClass(t,[{key:"setSize",value:function(t,e){return this._parentSubView.intrinsicWidth=t,this._parentSubView.intrinsicHeight=e,this}},{key:"width",get:function(){return this._parentSubView.intrinsicWidth}},{key:"height",get:function(){return this._parentSubView.intrinsicHeight}},{key:"fittingWidth",get:function(){return this._parentSubView.width}},{key:"fittingHeight",get:function(){return this._parentSubView.height}},{key:"setSpacing",value:function(t){switch(Array.isArray(t)?t.length:-1){case-1:t=[t,t,t,t,t,t,1];break;case 1:t=[t[0],t[0],t[0],t[0],t[0],t[0],1];break;case 2:t=[t[1],t[0],t[1],t[0],t[0],t[1],1];break;case 3:t=[t[1],t[0],t[1],t[0],t[0],t[1],t[2]];break;case 6:t=[t[0],t[1],t[2],t[3],t[4],t[5],1];break;case 7:break;default:throw"Invalid spacing syntax"}if(!_compareSpacing(this._spacing,t)&&(this._spacing=t,this._spacingVars)){for(var e=0;e1&&t.constraints.push({view1:"_~"+t.lineIndex+":1~",attr1:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,relation:t.relation.relation||Relation.EQU,view2:r,attr2:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,priority:t.relation.priority}),t.equalSpacerIndex++,t.relation.multiplier&&1!==t.relation.multiplier?(t.constraints.push({view1:r,attr1:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,relation:t.relation.relation||Relation.EQU,view2:null,attr2:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,priority:t.relation.priority,multiplier:t.relation.multiplier}),t.relation.multiplier=void 0):t.relation.constant&&(t.constraints.push({view1:r,attr1:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,relation:Relation.EQU,view2:null,attr2:Attribute.CONST,priority:t.relation.priority,constant:t.relation.constant}),t.relation.constant=void 0),t.orientation){case Orientation.HORIZONTAL:t.attr1=t.view1!==e?Attribute.RIGHT:Attribute.LEFT,t.attr2=Attribute.LEFT;break;case Orientation.VERTICAL:t.attr1=t.view1!==e?Attribute.BOTTOM:Attribute.TOP,t.attr2=Attribute.TOP;break;case Orientation.ZINDEX:t.attr1=Attribute.ZINDEX,t.attr2=Attribute.ZINDEX,t.relation.constant=t.view1!==e?"default":0}t.constraints.push({view1:t.view1,attr1:t.attr1,relation:t.relation.relation,view2:r,attr2:t.attr2,priority:t.relation.priority}),t.view1=r}function _processProportionalSpacer(t,e){t.proportionalSpacerIndex=t.proportionalSpacerIndex||1;var r="_-"+t.lineIndex+":"+t.proportionalSpacerIndex+"-";switch(t.proportionalSpacerIndex++,t.constraints.push({view1:r,attr1:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,relation:t.relation.relation||Relation.EQU,view2:null,attr2:t.horizontal?Attribute.WIDTH:Attribute.HEIGHT,priority:t.relation.priority,multiplier:t.relation.multiplier}),t.relation.multiplier=void 0,t.orientation){case Orientation.HORIZONTAL:t.attr1=t.view1!==e?Attribute.RIGHT:Attribute.LEFT,t.attr2=Attribute.LEFT;break;case Orientation.VERTICAL:t.attr1=t.view1!==e?Attribute.BOTTOM:Attribute.TOP,t.attr2=Attribute.TOP;break;case Orientation.ZINDEX:t.attr1=Attribute.ZINDEX,t.attr2=Attribute.ZINDEX,t.relation.constant=t.view1!==e?"default":0}t.constraints.push({view1:t.view1,attr1:t.attr1,relation:t.relation.relation,view2:r,attr2:t.attr2,priority:t.relation.priority}),t.view1=r}function _processStackView(t,e,r){for(var i=void 0,n=1;4>=n;n*=2)if(r.orientations&n&&r.stack.orientation!==n&&!(r.stack.processedOrientations&n)){r.stack.processedOrientations=r.stack.processedOrientations|n,i=i||{name:e,type:"stack"};for(var a=0,s=r.stack.subViews.length;s>a;a++)n===Orientation.ZINDEX?t.constraints.push({view1:i,attr1:Attribute.ZINDEX,relation:Relation.EQU,view2:r.stack.subViews[a],attr2:Attribute.ZINDEX}):(t.constraints.push({view1:i,attr1:n===Orientation.VERTICAL?Attribute.HEIGHT:Attribute.WIDTH,relation:Relation.EQU,view2:r.stack.subViews[a],attr2:n===Orientation.VERTICAL?Attribute.HEIGHT:Attribute.WIDTH}),t.constraints.push({view1:i,attr1:n===Orientation.VERTICAL?Attribute.TOP:Attribute.LEFT,relation:Relation.EQU,view2:r.stack.subViews[a],attr2:n===Orientation.VERTICAL?Attribute.TOP:Attribute.LEFT}))}}function _processCascade(t,e,r){var i=[],n=void 0;r&&e.push({view:r});for(var a=0;ar;r++)if(t[r]!==e[r])return!1;return!0}var _createClass=function(){function t(t,e){for(var r=0;rn;n++)a=t.charAt(n),"\n"===a?(e.seenCR||e.line++,e.column=1,e.seenCR=!1):"\r"===a||"\u2028"===a||"\u2029"===a?(e.line++,e.column=1,e.seenCR=!0):(e.column++,e.seenCR=!1)}return kt!==e&&(kt>e&&(kt=0,Rt={line:1,column:1,seenCR:!1}),r(Rt,kt,e),kt=e),Rt}function n(t){Ft>St||(St>Ft&&(Ft=St,Nt=[]),Nt.push(t))}function a(r,n,a){function s(t){var e=1;for(t.sort(function(t,e){return t.descriptione.description?1:0});e1?s.slice(0,-1).join(", ")+" or "+s[t.length-1]:s[0],n=e?'"'+r(e)+'"':"end of input","Expected "+i+" but "+n+" found."}var u=i(a),c=a1?arguments[1]:{},E={},I={visualFormatString:s},T=s,V=E,O=null,H=":",S={type:"literal",value:":",description:'":"'},x=function(t,e,r,i,n){return{orientation:t?t[0]:"horizontal",cascade:(e||[]).concat([r],[].concat.apply([],i),n||[])}},k="H",R={type:"literal",value:"H",description:'"H"'},F="V",N={type:"literal",value:"V",description:'"V"'},L=function(t){return"H"==t?"horizontal":"vertical"},q="|",Z={type:"literal",value:"|",description:'"|"'},D=function(){return{view:null}},z="[",G={type:"literal",value:"[",description:'"["'},X="]",P={type:"literal",value:"]",description:'"]"'},W=function(t,e){return y(t,e?{constraints:e}:{})},Q="-",U={type:"literal",value:"-",description:'"-"'},$=function(t){return t},B=function(){return[{relation:"equ",constant:"default",$parserOffset:r()}]},j="",Y=function(){return[{relation:"equ",constant:0,$parserOffset:r()}]},M=function(t){return[{relation:"equ",constant:t,$parserOffset:r()}]},J="(",K={type:"literal",value:"(",description:'"("'},tt=",",et={type:"literal",value:",",description:'","'},rt=")",it={type:"literal",value:")",description:'")"'},nt=function(t,e){return[t].concat(e.map(function(t){return t[1]}))},at="@",st={type:"literal",value:"@",description:'"@"'},ot=function(t,e,r){return y({relation:"equ"},t||{},e,r?r[1]:{})},ut="==",ct={type:"literal",value:"==",description:'"=="'},lt=function(){return{relation:"equ",$parserOffset:r()}},ht="<=",pt={type:"literal",value:"<=",description:'"<="'},ft=function(){return{relation:"leq",$parserOffset:r()}},dt=">=",vt={type:"literal",value:">=",description:'">="'},At=function(){return{relation:"geq",$parserOffset:r()}},gt=/^[0-9]/,bt={type:"class",value:"[0-9]",description:"[0-9]"},wt=function(t){return{priority:parseInt(t.join(""),10)}},_t=function(t){return{constant:t}},yt=/^[a-zA-Z_]/,mt={type:"class",value:"[a-zA-Z_]",description:"[a-zA-Z_]"},Ct=/^[a-zA-Z0-9_]/,Et={type:"class",value:"[a-zA-Z0-9_]",description:"[a-zA-Z0-9_]"},It=function(t,e){return{view:t+e}},Tt=".",Vt={type:"literal",value:".",description:'"."'},Ot=function(t,e){return parseFloat(t.concat(".").concat(e).join(""),10)},Ht=function(t){return parseInt(t.join(""),10)},St=0,xt=0,kt=0,Rt={line:1,column:1,seenCR:!1},Ft=0,Nt=[],Lt=0;if("startRule"in C){if(!(C.startRule in I))throw new Error("Can't start parsing from rule \""+C.startRule+'".');T=I[C.startRule]}if(m=T(),m!==E&&St===t.length)return m;throw m!==E&&Stn;n++)a=t.charAt(n),"\n"===a?(e.seenCR||e.line++,e.column=1,e.seenCR=!1):"\r"===a||"\u2028"===a||"\u2029"===a?(e.line++,e.column=1,e.seenCR=!0):(e.column++,e.seenCR=!1)}return Qe!==e&&(Qe>e&&(Qe=0,Ue={line:1,column:1,seenCR:!1}),r(Ue,Qe,e),Qe=e),Ue}function n(t){$e>Pe||(Pe>$e&&($e=Pe,Be=[]),Be.push(t))}function a(r,n,a){function s(t){var e=1;for(t.sort(function(t,e){return t.descriptione.description?1:0});e1?s.slice(0,-1).join(", ")+" or "+s[t.length-1]:s[0],n=e?'"'+r(e)+'"':"end of input","Expected "+i+" but "+n+" found."}var u=i(a),c=aPe?(s=t.charAt(Pe),Pe++):(s=R,0===je&&n(it));s!==R;)a.push(s),t.length>Pe?(s=t.charAt(Pe),Pe++):(s=R,0===je&&n(it));a!==R?(r=[r,i,a],e=r):(Pe=e,e=L)}else Pe=e,e=L;else Pe=e,e=L;return e}function c(){var e,r;return e=Pe,124===t.charCodeAt(Pe)?(r=nt,Pe++):(r=R,0===je&&n(at)),r!==R&&(We=e,r=st()),e=r}function l(){var e,r,i,a,s,o;return e=Pe,91===t.charCodeAt(Pe)?(r=ot,Pe++):(r=R,0===je&&n(ut)),r!==R?(i=O(),i!==R?(a=v(),a===R&&(a=q),a!==R?(s=h(),s===R&&(s=q),s!==R?(93===t.charCodeAt(Pe)?(o=ct,Pe++):(o=R,0===je&&n(lt)),o!==R?(We=e,r=ht(i,a,s),e=r):(Pe=e,e=L)):(Pe=e,e=L)):(Pe=e,e=L)):(Pe=e,e=L)):(Pe=e,e=L),e}function h(){var e,r,i,a,s,o;if(e=Pe,58===t.charCodeAt(Pe)?(r=Z,Pe++):(r=R,0===je&&n(D)),r!==R){if(i=[],a=Pe,s=p(),s!==R?(o=l(),o!==R?(s=[s,o],a=s):(Pe=a,a=L)):(Pe=a,a=L),a!==R)for(;a!==R;)i.push(a),a=Pe,s=p(),s!==R?(o=l(),o!==R?(s=[s,o],a=s):(Pe=a,a=L)):(Pe=a,a=L);else i=L;i!==R?(a=p(),a!==R?(We=e,r=pt(i,a),e=r):(Pe=e,e=L)):(Pe=e,e=L)}else Pe=e,e=L;return e}function p(){var e,r,i,a;return e=Pe,t.substr(Pe,2)===ft?(r=ft,Pe+=2):(r=R,0===je&&n(dt)),r!==R&&(We=e,r=vt()),e=r,e===R&&(e=Pe,45===t.charCodeAt(Pe)?(r=At,Pe++):(r=R,0===je&&n(gt)),r!==R?(i=f(),i!==R?(45===t.charCodeAt(Pe)?(a=At,Pe++):(a=R,0===je&&n(gt)),a!==R?(We=e,r=bt(i),e=r):(Pe=e,e=L)):(Pe=e,e=L)):(Pe=e,e=L),e===R&&(e=Pe,45===t.charCodeAt(Pe)?(r=At,Pe++):(r=R,0===je&&n(gt)),r!==R&&(We=e,r=wt()),e=r,e===R&&(e=Pe,126===t.charCodeAt(Pe)?(r=_t,Pe++):(r=R,0===je&&n(yt)),r!==R?(i=g(),i!==R?(126===t.charCodeAt(Pe)?(a=_t,Pe++):(a=R,0===je&&n(yt)),a!==R?(We=e,r=bt(i),e=r):(Pe=e,e=L)):(Pe=e,e=L)):(Pe=e,e=L),e===R&&(e=Pe,126===t.charCodeAt(Pe)?(r=_t,Pe++):(r=R,0===je&&n(yt)),r!==R&&(We=e,r=mt()),e=r,e===R&&(e=Pe,r=Ct,r!==R&&(We=e,r=Et()),e=r))))),e}function f(){var t;return t=d(),t===R&&(t=v()),t}function d(){var t,e;return t=Pe,e=C(),e!==R&&(We=t,e=It(e)),t=e,t===R&&(t=Pe,e=H(),e!==R&&(We=t,e=Tt(e)),t=e),t}function v(){var e,r,i,a,s,o,u;if(e=Pe,40===t.charCodeAt(Pe)?(r=Vt,Pe++):(r=R,0===je&&n(Ot)),r!==R)if(i=A(),i!==R){for(a=[],s=Pe,44===t.charCodeAt(Pe)?(o=Ht,Pe++):(o=R,0===je&&n(St)),o!==R?(u=A(),u!==R?(o=[o,u],s=o):(Pe=s,s=L)):(Pe=s,s=L);s!==R;)a.push(s),s=Pe,44===t.charCodeAt(Pe)?(o=Ht,Pe++):(o=R,0===je&&n(St)),o!==R?(u=A(),u!==R?(o=[o,u],s=o):(Pe=s,s=L)):(Pe=s,s=L);a!==R?(41===t.charCodeAt(Pe)?(s=xt,Pe++):(s=R,0===je&&n(kt)),s!==R?(We=e,r=Rt(i,a),e=r):(Pe=e,e=L)):(Pe=e,e=L)}else Pe=e,e=L;else Pe=e,e=L;return e}function A(){var e,r,i,a,s,o;return e=Pe,r=w(),r===R&&(r=q),r!==R?(i=_(),i!==R?(a=Pe,64===t.charCodeAt(Pe)?(s=Ft,Pe++):(s=R,0===je&&n(Nt)),s!==R?(o=y(),o!==R?(s=[s,o],a=s):(Pe=a,a=L)):(Pe=a,a=L),a===R&&(a=q),a!==R?(We=e,r=Lt(r,i,a),e=r):(Pe=e,e=L)):(Pe=e,e=L)):(Pe=e,e=L),e}function g(){var e,r,i,a,s,o,u;if(e=Pe,40===t.charCodeAt(Pe)?(r=Vt,Pe++):(r=R,0===je&&n(Ot)),r!==R)if(i=b(),i!==R){for(a=[],s=Pe,44===t.charCodeAt(Pe)?(o=Ht,Pe++):(o=R,0===je&&n(St)),o!==R?(u=b(),u!==R?(o=[o,u],s=o):(Pe=s,s=L)):(Pe=s,s=L);s!==R;)a.push(s),s=Pe,44===t.charCodeAt(Pe)?(o=Ht,Pe++):(o=R,0===je&&n(St)),o!==R?(u=b(),u!==R?(o=[o,u],s=o):(Pe=s,s=L)):(Pe=s,s=L);a!==R?(41===t.charCodeAt(Pe)?(s=xt,Pe++):(s=R,0===je&&n(kt)),s!==R?(We=e,r=Rt(i,a),e=r):(Pe=e,e=L)):(Pe=e,e=L)}else Pe=e,e=L;else Pe=e,e=L;return e}function b(){var e,r,i,a,s,o;return e=Pe,r=w(),r===R&&(r=q),r!==R?(i=_(),i!==R?(a=Pe,64===t.charCodeAt(Pe)?(s=Ft,Pe++):(s=R,0===je&&n(Nt)),s!==R?(o=y(),o!==R?(s=[s,o],a=s):(Pe=a,a=L)):(Pe=a,a=L),a===R&&(a=q),a!==R?(We=e,r=qt(r,i,a),e=r):(Pe=e,e=L)):(Pe=e,e=L)):(Pe=e,e=L),e}function w(){var e,r;return e=Pe,t.substr(Pe,2)===Zt?(r=Zt,Pe+=2):(r=R,0===je&&n(Dt)),r!==R&&(We=e,r=zt()),e=r,e===R&&(e=Pe,t.substr(Pe,2)===Gt?(r=Gt,Pe+=2):(r=R,0===je&&n(Xt)),r!==R&&(We=e,r=Pt()),e=r,e===R&&(e=Pe,t.substr(Pe,2)===Wt?(r=Wt,Pe+=2):(r=R,0===je&&n(Qt)),r!==R&&(We=e,r=Ut()),e=r)),e}function _(){var t;return t=C(),t===R&&(t=m(),t===R&&(t=E())),t}function y(){var e,r,i;if(e=Pe,r=[],$t.test(t.charAt(Pe))?(i=t.charAt(Pe),Pe++):(i=R,0===je&&n(Bt)),i!==R)for(;i!==R;)r.push(i),$t.test(t.charAt(Pe))?(i=t.charAt(Pe),Pe++):(i=R,0===je&&n(Bt));else r=L;return r!==R&&(We=e,r=jt(r)),e=r}function m(){var t,e;return t=Pe,e=H(),e!==R&&(We=t,e=Yt(e)),t=e}function C(){var e,r,i;return e=Pe,r=H(),r!==R?(37===t.charCodeAt(Pe)?(i=Mt,Pe++):(i=R,0===je&&n(Jt)),i!==R?(We=e,r=Kt(r),e=r):(Pe=e,e=L)):(Pe=e,e=L),e}function E(){var t,e,r,i,n;return t=Pe,e=O(),e!==R?(r=I(),r===R&&(r=q),r!==R?(i=T(),i===R&&(i=q),i!==R?(n=V(),n===R&&(n=q),n!==R?(We=t,e=te(e,r,i,n),t=e):(Pe=t,t=L)):(Pe=t,t=L)):(Pe=t,t=L)):(Pe=t,t=L),t}function I(){var e,r;return e=Pe,t.substr(Pe,5)===ee?(r=ee,Pe+=5):(r=R,0===je&&n(re)),r!==R&&(We=e,r=ie()),e=r,e===R&&(e=Pe,t.substr(Pe,6)===ne?(r=ne,Pe+=6):(r=R,0===je&&n(ae)),r!==R&&(We=e,r=se()),e=r,e===R&&(e=Pe,t.substr(Pe,4)===oe?(r=oe,Pe+=4):(r=R,0===je&&n(ue)),r!==R&&(We=e,r=ce()),e=r,e===R&&(e=Pe,t.substr(Pe,7)===le?(r=le,Pe+=7):(r=R,0===je&&n(he)),r!==R&&(We=e,r=pe()),e=r,e===R&&(e=Pe,t.substr(Pe,6)===fe?(r=fe,Pe+=6):(r=R,0===je&&n(de)),r!==R&&(We=e,r=ve()),e=r,e===R&&(e=Pe,t.substr(Pe,7)===Ae?(r=Ae,Pe+=7):(r=R,0===je&&n(ge)),r!==R&&(We=e,r=be()),e=r,e===R&&(e=Pe,t.substr(Pe,8)===we?(r=we,Pe+=8):(r=R,0===je&&n(_e)),r!==R&&(We=e,r=ye()),e=r,e===R&&(e=Pe,t.substr(Pe,8)===me?(r=me,Pe+=8):(r=R,0===je&&n(Ce)),r!==R&&(We=e,r=Ee()),e=r))))))),e}function T(){var e,r,i;return e=Pe,47===t.charCodeAt(Pe)?(r=Ie,Pe++):(r=R,0===je&&n(Te)),r!==R?(i=H(),i!==R?(We=e,r=Ve(i),e=r):(Pe=e,e=L)):(Pe=e,e=L),e===R&&(e=Pe,42===t.charCodeAt(Pe)?(r=Oe,Pe++):(r=R,0===je&&n(He)),r!==R?(i=H(),i!==R?(We=e,r=Se(i),e=r):(Pe=e,e=L)):(Pe=e,e=L)),e}function V(){var e,r,i;return e=Pe,45===t.charCodeAt(Pe)?(r=At,Pe++):(r=R,0===je&&n(gt)),r!==R?(i=H(),i!==R?(We=e,r=xe(i),e=r):(Pe=e,e=L)):(Pe=e,e=L),e===R&&(e=Pe,43===t.charCodeAt(Pe)?(r=ke,Pe++):(r=R,0===je&&n(Re)),r!==R?(i=H(),i!==R?(We=e,r=Se(i),e=r):(Pe=e,e=L)):(Pe=e,e=L)),e}function O(){var e,r,i,a,s;if(e=Pe,r=Pe,i=[],Fe.test(t.charAt(Pe))?(a=t.charAt(Pe),Pe++):(a=R,0===je&&n(Ne)),a!==R)for(;a!==R;)i.push(a),Fe.test(t.charAt(Pe))?(a=t.charAt(Pe),Pe++):(a=R,0===je&&n(Ne));else i=L;if(i!==R&&(i=t.substring(r,Pe)),r=i,r!==R){for(i=Pe,a=[],Le.test(t.charAt(Pe))?(s=t.charAt(Pe),Pe++):(s=R,0===je&&n(qe));s!==R;)a.push(s),Le.test(t.charAt(Pe))?(s=t.charAt(Pe),Pe++):(s=R,0===je&&n(qe));a!==R&&(a=t.substring(i,Pe)),i=a,i!==R?(We=e,r=Ze(r,i),e=r):(Pe=e,e=L)}else Pe=e,e=L;return e}function H(){var e,r,i,a,s;if(e=Pe,r=[],$t.test(t.charAt(Pe))?(i=t.charAt(Pe),Pe++):(i=R,0===je&&n(Bt)),i!==R)for(;i!==R;)r.push(i),$t.test(t.charAt(Pe))?(i=t.charAt(Pe),Pe++):(i=R,0===je&&n(Bt));else r=L;if(r!==R)if(46===t.charCodeAt(Pe)?(i=De,Pe++):(i=R,0===je&&n(ze)),i!==R){if(a=[],$t.test(t.charAt(Pe))?(s=t.charAt(Pe),Pe++):(s=R,0===je&&n(Bt)),s!==R)for(;s!==R;)a.push(s),$t.test(t.charAt(Pe))?(s=t.charAt(Pe),Pe++):(s=R,0===je&&n(Bt));else a=L;a!==R?(We=e,r=Ge(r,a),e=r):(Pe=e,e=L)}else Pe=e,e=L;else Pe=e,e=L;if(e===R){if(e=Pe,r=[],$t.test(t.charAt(Pe))?(i=t.charAt(Pe),Pe++):(i=R,0===je&&n(Bt)),i!==R)for(;i!==R;)r.push(i),$t.test(t.charAt(Pe))?(i=t.charAt(Pe),Pe++):(i=R,0===je&&n(Bt));else r=L;r!==R&&(We=e,r=Xe(r)),e=r}return e}function S(t){for(var e=1;e1?arguments[1]:{},R={},F={visualFormatString:s},N=s,L=R,q=null,Z=":",D={type:"literal",value:":",description:'":"'},z=function(t,e,r,i,n,a){return{orientation:t?t[0]:"horizontal",cascade:(e||[]).concat([r],[].concat.apply([],i),n||[])}},G="HV",X={type:"literal",value:"HV",description:'"HV"'},P=function(){return"horzvert"},W="H",Q={type:"literal",value:"H",description:'"H"'},U=function(){return"horizontal"},$="V",B={type:"literal",value:"V",description:'"V"'},j=function(){return"vertical"},Y="Z",M={type:"literal",value:"Z",description:'"Z"'},J=function(){return"zIndex"},K=" ",tt={type:"literal",value:" ",description:'" "'},et="//",rt={type:"literal",value:"//",description:'"//"'},it={type:"any",description:"any character"},nt="|",at={type:"literal",value:"|",description:'"|"'},st=function(){return{view:null}},ot="[",ut={type:"literal",value:"[",description:'"["'},ct="]",lt={type:"literal",value:"]",description:'"]"'},ht=function(t,e,r){return S(S(t,e?{constraints:e}:{}),r?{cascade:r}:{})},pt=function(t,e){return[].concat([].concat.apply([],t),[e])},ft="->",dt={type:"literal",value:"->",description:'"->"'},vt=function(){return[{relation:"none",$parserOffset:r()}]},At="-",gt={type:"literal",value:"-",description:'"-"'},bt=function(t){return t},wt=function(){return[{relation:"equ",constant:"default",$parserOffset:r()}]},_t="~",yt={type:"literal",value:"~",description:'"~"'},mt=function(){return[{relation:"equ",equalSpacing:!0,$parserOffset:r()}]},Ct="",Et=function(){return[{relation:"equ",constant:0,$parserOffset:r()}]},It=function(t){return[{relation:"equ",multiplier:t.multiplier,$parserOffset:r()}]},Tt=function(t){return[{relation:"equ",constant:t,$parserOffset:r()}]},Vt="(",Ot={type:"literal",value:"(",description:'"("'},Ht=",",St={type:"literal",value:",",description:'","'},xt=")",kt={type:"literal",value:")",description:'")"'},Rt=function(t,e){return[t].concat(e.map(function(t){return t[1]}))},Ft="@",Nt={type:"literal",value:"@",description:'"@"'},Lt=function(t,e,r){return S({relation:"equ"},t||{},e,r?r[1]:{})},qt=function(t,e,r){return S({relation:"equ",equalSpacing:!0},t||{},e,r?r[1]:{})},Zt="==",Dt={type:"literal",value:"==",description:'"=="'},zt=function(){return{relation:"equ",$parserOffset:r()}},Gt="<=",Xt={type:"literal",value:"<=",description:'"<="'},Pt=function(){return{relation:"leq",$parserOffset:r()}},Wt=">=",Qt={type:"literal",value:">=",description:'">="'},Ut=function(){return{relation:"geq",$parserOffset:r()}},$t=/^[0-9]/,Bt={type:"class",value:"[0-9]",description:"[0-9]"},jt=function(t){return{priority:parseInt(t.join(""),10)}},Yt=function(t){return{constant:t}},Mt="%",Jt={type:"literal",value:"%",description:'"%"'},Kt=function(t){return{view:null,multiplier:t/100}},te=function(t,e,r,i){return{view:t.view,attribute:e?e:void 0,multiplier:r?r:1,constant:i?i:void 0}},ee=".left",re={type:"literal",value:".left",description:'".left"'},ie=function(){return"left"},ne=".right",ae={type:"literal",value:".right",description:'".right"'},se=function(){return"right"},oe=".top",ue={type:"literal",value:".top",description:'".top"'},ce=function(){return"top"},le=".bottom",he={type:"literal",value:".bottom",description:'".bottom"'},pe=function(){return"bottom"},fe=".width",de={type:"literal",value:".width",description:'".width"'},ve=function(){return"width"},Ae=".height",ge={type:"literal",value:".height",description:'".height"'},be=function(){return"height"},we=".centerX",_e={type:"literal",value:".centerX",description:'".centerX"'},ye=function(){return"centerX"},me=".centerY",Ce={type:"literal",value:".centerY",description:'".centerY"'},Ee=function(){return"centerY"},Ie="/",Te={type:"literal",value:"/",description:'"/"'},Ve=function(t){return 1/t},Oe="*",He={type:"literal",value:"*",description:'"*"'},Se=function(t){return t},xe=function(t){return-t},ke="+",Re={type:"literal",value:"+",description:'"+"'},Fe=/^[a-zA-Z_]/,Ne={type:"class",value:"[a-zA-Z_]",description:"[a-zA-Z_]"},Le=/^[a-zA-Z0-9_]/,qe={type:"class",value:"[a-zA-Z0-9_]",description:"[a-zA-Z0-9_]"},Ze=function(t,e){return{view:t+e}},De=".",ze={type:"literal",value:".",description:'"."'},Ge=function(t,e){return parseFloat(t.concat(".").concat(e).join(""),10)},Xe=function(t){return parseInt(t.join(""),10)},Pe=0,We=0,Qe=0,Ue={line:1,column:1,seenCR:!1},$e=0,Be=[],je=0;if("startRule"in k){if(!(k.startRule in F))throw new Error("Can't start parsing from rule \""+k.startRule+'".');N=F[k.startRule]}if(x=N(),x!==R&&Pe===t.length)return x;throw x!==R&&Peh;h++){var p=metaInfoCategories[l],f=(0===h?"":i)+p;if(0===c.indexOf("//"+f+" "))for(var d=c.substring(3+f.length).split(" "),v=0;v1?A[1]:""}else 0===c.indexOf("//"+f+":")&&(a[p]=c.substring(3+f.length))}if(a.viewport){var g=a.viewport,b=g["aspect-ratio"];b&&(b=b.split("/"),g["aspect-ratio"]=parseInt(b[0])/parseInt(b[1])),void 0!==g.height&&(g.height="intrinsic"===g.height?!0:parseInt(g.height)),void 0!==g.width&&(g.width="intrinsic"===g.width?!0:parseInt(g.width)),void 0!==g["max-height"]&&(g["max-height"]=parseInt(g["max-height"])),void 0!==g["max-width"]&&(g["max-width"]=parseInt(g["max-width"])),void 0!==g["min-height"]&&(g["min-height"]=parseInt(g["min-height"])),void 0!==g["min-width"]&&(g["min-width"]=parseInt(g["min-width"]))}if(a.widths)for(n in a.widths){var w="intrinsic"===a.widths[n]?!0:parseInt(a.widths[n]);a.widths[n]=w,(void 0===w||isNaN(w))&&delete a.widths[n]}if(a.heights)for(n in a.heights){var _="intrinsic"===a.heights[n]?!0:parseInt(a.heights[n]);a.heights[n]=_,(void 0===_||isNaN(_))&&delete a.heights[n]}if(a.spacing){var y=JSON.parse(a.spacing);a.spacing=y,(void 0===y||isNaN(y))&&delete a.spacing}return a}}]),t}(),SubView=function(){function t(e){_classCallCheck(this,t),this._name=e.name,this._type=e.type,this._solver=e.solver,this._attr={},e.name||(this._attr[Attribute.LEFT]=new c.Variable,this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.LEFT],c.Strength.required)),this._attr[Attribute.TOP]=new c.Variable,this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.TOP],c.Strength.required)),this._attr[Attribute.ZINDEX]=new c.Variable,this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.ZINDEX],c.Strength.required)))}return _createClass(t,[{key:"toJSON",value:function(){return{name:this.name,left:this.left,top:this.top,width:this.width,height:this.height}}},{key:"toString",value:function(){JSON.stringify(this.toJSON(),void 0,2)}},{key:"name",get:function(){return this._name}},{key:"left",get:function(){return this._getAttrValue(Attribute.LEFT)}},{key:"right",get:function(){return this._getAttrValue(Attribute.RIGHT)}},{key:"width",get:function(){return this._getAttrValue(Attribute.WIDTH)}},{key:"height",get:function(){return this._getAttrValue(Attribute.HEIGHT)}},{key:"intrinsicWidth",get:function(){return this._intrinsicWidth},set:function(t){if(void 0!==t&&t!==this._intrinsicWidth){var e=this._getAttr(Attribute.WIDTH);void 0===this._intrinsicWidth&&this._solver.addEditVar(e,new c.Strength("required",this._name?998:999,1e3,1e3)),this._intrinsicWidth=t,this._solver.suggestValue(e,t),this._solver.resolve()}}},{key:"intrinsicHeight",get:function(){return this._intrinsicHeight},set:function(t){if(void 0!==t&&t!==this._intrinsicHeight){var e=this._getAttr(Attribute.HEIGHT);void 0===this._intrinsicHeight&&this._solver.addEditVar(e,new c.Strength("required",this._name?998:999,1e3,1e3)),this._intrinsicHeight=t,this._solver.suggestValue(e,t),this._solver.resolve()}}},{key:"top",get:function(){return this._getAttrValue(Attribute.TOP)}},{key:"bottom",get:function(){return this._getAttrValue(Attribute.BOTTOM)}},{key:"centerX",get:function(){return this._getAttrValue(Attribute.CENTERX)}},{key:"centerY",get:function(){return this._getAttrValue(Attribute.CENTERY)}},{key:"zIndex",get:function(){return this._getAttrValue(Attribute.ZINDEX)}},{key:"type",get:function(){return this._type}},{key:"getValue",value:function(t){return this._attr[t]?this._attr[t].value():void 0}},{key:"_getAttr",value:function(t){if(this._attr[t])return this._attr[t];switch(this._attr[t]=new c.Variable,t){case Attribute.RIGHT:this._getAttr(Attribute.LEFT),this._getAttr(Attribute.WIDTH),this._solver.addConstraint(new c.Equation(this._attr[t],c.plus(this._attr[Attribute.LEFT],this._attr[Attribute.WIDTH])));break;case Attribute.BOTTOM:this._getAttr(Attribute.TOP),this._getAttr(Attribute.HEIGHT),this._solver.addConstraint(new c.Equation(this._attr[t],c.plus(this._attr[Attribute.TOP],this._attr[Attribute.HEIGHT])));break;case Attribute.CENTERX:this._getAttr(Attribute.LEFT),this._getAttr(Attribute.WIDTH),this._solver.addConstraint(new c.Equation(this._attr[t],c.plus(this._attr[Attribute.LEFT],c.divide(this._attr[Attribute.WIDTH],2))));break;case Attribute.CENTERY:this._getAttr(Attribute.TOP),this._getAttr(Attribute.HEIGHT),this._solver.addConstraint(new c.Equation(this._attr[t],c.plus(this._attr[Attribute.TOP],c.divide(this._attr[Attribute.HEIGHT],2))))}return this._attr[t]}},{key:"_getAttrValue",value:function(t){return this._getAttr(t).value}}]),t}(),defaultPriorityStrength=new c.Strength("defaultPriority",0,1e3,1e3),View=function(){function t(e){_classCallCheck(this,t),this._solver=new c.SimplexSolver,this._subViews={},this._parentSubView=new SubView({solver:this._solver}),this.setSpacing(e&&void 0!==e.spacing?e.spacing:8),e&&((void 0!==e.width||void 0!==e.height)&&this.setSize(e.width,e.height),e.constraints&&this.addConstraints(e.constraints))}return _createClass(t,[{key:"setSize",value:function(t,e){return this._parentSubView.intrinsicWidth=t,this._parentSubView.intrinsicHeight=e,this}},{key:"width",get:function(){return this._parentSubView.intrinsicWidth}},{key:"height",get:function(){return this._parentSubView.intrinsicHeight}},{key:"fittingWidth",get:function(){return this._parentSubView.width}},{key:"fittingHeight",get:function(){return this._parentSubView.height}},{key:"setSpacing",value:function(t){switch(Array.isArray(t)?t.length:-1){case-1:t=[t,t,t,t,t,t,1];break;case 1:t=[t[0],t[0],t[0],t[0],t[0],t[0],1];break;case 2:t=[t[1],t[0],t[1],t[0],t[0],t[1],1];break;case 3:t=[t[1],t[0],t[1],t[0],t[0],t[1],t[2]];break;case 6:t=[t[0],t[1],t[2],t[3],t[4],t[5],1];break;case 7:break;default:throw"Invalid spacing syntax"}if(!_compareSpacing(this._spacing,t)&&(this._spacing=t,this._spacingVars)){for(var e=0;e 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { visualFormatString: peg$parsevisualFormatString },\n peg$startRuleFunction = peg$parsevisualFormatString,\n\n peg$c0 = peg$FAILED,\n peg$c1 = null,\n peg$c2 = \":\",\n peg$c3 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c4 = [],\n peg$c5 = function(o, superto, view, views, tosuper) { return {\n orientation: o ? o[0] : 'horizontal',\n cascade: (superto || []).concat(\n [view],\n [].concat.apply([], views),\n (tosuper || [])\n )\n }\n },\n peg$c6 = \"H\",\n peg$c7 = { type: \"literal\", value: \"H\", description: \"\\\"H\\\"\" },\n peg$c8 = \"V\",\n peg$c9 = { type: \"literal\", value: \"V\", description: \"\\\"V\\\"\" },\n peg$c10 = function(orient) { return orient == 'H' ? 'horizontal' : 'vertical' },\n peg$c11 = \"|\",\n peg$c12 = { type: \"literal\", value: \"|\", description: \"\\\"|\\\"\" },\n peg$c13 = function() { return { view: null } },\n peg$c14 = \"[\",\n peg$c15 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n peg$c16 = \"]\",\n peg$c17 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n peg$c18 = function(view, predicates) { return extend(view, predicates ? { constraints: predicates } : {}) },\n peg$c19 = \"-\",\n peg$c20 = { type: \"literal\", value: \"-\", description: \"\\\"-\\\"\" },\n peg$c21 = function(predicateList) { return predicateList },\n peg$c22 = function() { return [{ relation: 'equ', constant: 'default', $parserOffset: offset() }] },\n peg$c23 = \"\",\n peg$c24 = function() { return [{ relation: 'equ', constant: 0, $parserOffset: offset() }] },\n peg$c25 = function(n) { return [{ relation: 'equ', constant: n, $parserOffset: offset() }] },\n peg$c26 = \"(\",\n peg$c27 = { type: \"literal\", value: \"(\", description: \"\\\"(\\\"\" },\n peg$c28 = \",\",\n peg$c29 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c30 = \")\",\n peg$c31 = { type: \"literal\", value: \")\", description: \"\\\")\\\"\" },\n peg$c32 = function(p, ps) { return [p].concat(ps.map(function(p){ return p[1] })) },\n peg$c33 = \"@\",\n peg$c34 = { type: \"literal\", value: \"@\", description: \"\\\"@\\\"\" },\n peg$c35 = function(r, o, p) { return extend({ relation: 'equ' }, (r || {}), o, (p ? p[1]: {})) },\n peg$c36 = \"==\",\n peg$c37 = { type: \"literal\", value: \"==\", description: \"\\\"==\\\"\" },\n peg$c38 = function() { return { relation: 'equ', $parserOffset: offset() } },\n peg$c39 = \"<=\",\n peg$c40 = { type: \"literal\", value: \"<=\", description: \"\\\"<=\\\"\" },\n peg$c41 = function() { return { relation: 'leq', $parserOffset: offset() } },\n peg$c42 = \">=\",\n peg$c43 = { type: \"literal\", value: \">=\", description: \"\\\">=\\\"\" },\n peg$c44 = function() { return { relation: 'geq', $parserOffset: offset() } },\n peg$c45 = /^[0-9]/,\n peg$c46 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c47 = function(digits) { return { priority: parseInt(digits.join(\"\"), 10) } },\n peg$c48 = function(n) { return { constant: n } },\n peg$c49 = /^[a-zA-Z_]/,\n peg$c50 = { type: \"class\", value: \"[a-zA-Z_]\", description: \"[a-zA-Z_]\" },\n peg$c51 = /^[a-zA-Z0-9_]/,\n peg$c52 = { type: \"class\", value: \"[a-zA-Z0-9_]\", description: \"[a-zA-Z0-9_]\" },\n peg$c53 = function(f, v) { return { view: f + v } },\n peg$c54 = \".\",\n peg$c55 = { type: \"literal\", value: \".\", description: \"\\\".\\\"\" },\n peg$c56 = function(digits, decimals) { return parseFloat(digits.concat(\".\").concat(decimals).join(\"\"), 10); },\n peg$c57 = function(digits) { return parseInt(digits.join(\"\"), 10); },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsevisualFormatString() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseorientation();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c2;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c0;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c0;\n }\n if (s1 === peg$FAILED) {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parsesuperview();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseconnection();\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c0;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c0;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseview();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsesuperview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$c1;\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c5(s1, s2, s3, s4, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseorientation() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 72) {\n s1 = peg$c6;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s1 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 86) {\n s1 = peg$c8;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c10(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsesuperview() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s1 = peg$c11;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c12); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c13();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseview() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c14;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseviewName();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsepredicateListWithParens();\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c18(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseconnection() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c19;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepredicateList();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s3 = peg$c19;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c21(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c19;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c22();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$c23;\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parsepredicateList() {\n var s0;\n\n s0 = peg$parsesimplePredicate();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepredicateListWithParens();\n }\n\n return s0;\n }\n\n function peg$parsesimplePredicate() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c25(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsepredicateListWithParens() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c26;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c27); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepredicate();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c28;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c28;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s4 = peg$c30;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c32(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsepredicate() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parserelation();\n if (s1 === peg$FAILED) {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseobjectOfPredicate();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s4 = peg$c33;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepriority();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c35(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parserelation() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c36) {\n s1 = peg$c36;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c38();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c39) {\n s1 = peg$c39;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c41();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c42) {\n s1 = peg$c42;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c44();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseobjectOfPredicate() {\n var s0;\n\n s0 = peg$parseconstant();\n if (s0 === peg$FAILED) {\n s0 = peg$parseviewName();\n }\n\n return s0;\n }\n\n function peg$parsepriority() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c47(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseconstant() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c48(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseviewName() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n if (peg$c49.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c49.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n }\n } else {\n s2 = peg$c0;\n }\n if (s2 !== peg$FAILED) {\n s2 = input.substring(s1, peg$currPos);\n }\n s1 = s2;\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = [];\n if (peg$c51.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c51.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n }\n if (s3 !== peg$FAILED) {\n s3 = input.substring(s2, peg$currPos);\n }\n s2 = s3;\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c53(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c54;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n }\n } else {\n s3 = peg$c0;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c56(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c57(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n\n function extend(dst) {\n for (var i = 1; i < arguments.length; i++) {\n for (var k in arguments[i]) {\n dst[k] = arguments[i][k];\n }\n }\n return dst;\n }\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n }\n }\n\n return {\n SyntaxError: SyntaxError,\n parse: parse\n };\n})();\n\nvar parserExt = (function() {\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { visualFormatString: peg$parsevisualFormatString },\n peg$startRuleFunction = peg$parsevisualFormatString,\n\n peg$c0 = peg$FAILED,\n peg$c1 = null,\n peg$c2 = \":\",\n peg$c3 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c4 = [],\n peg$c5 = function(o, superto, view, views, tosuper, comments) { return {\n orientation: o ? o[0] : 'horizontal',\n cascade: (superto || []).concat(\n [view],\n [].concat.apply([], views),\n (tosuper || [])\n )\n }\n },\n peg$c6 = \"H\",\n peg$c7 = { type: \"literal\", value: \"H\", description: \"\\\"H\\\"\" },\n peg$c8 = \"V\",\n peg$c9 = { type: \"literal\", value: \"V\", description: \"\\\"V\\\"\" },\n peg$c10 = \"Z\",\n peg$c11 = { type: \"literal\", value: \"Z\", description: \"\\\"Z\\\"\" },\n peg$c12 = function(orient) { return (orient == 'H') ? 'horizontal' : ((orient == 'V') ? 'vertical' : 'zIndex') },\n peg$c13 = \" \",\n peg$c14 = { type: \"literal\", value: \" \", description: \"\\\" \\\"\" },\n peg$c15 = \"//\",\n peg$c16 = { type: \"literal\", value: \"//\", description: \"\\\"//\\\"\" },\n peg$c17 = { type: \"any\", description: \"any character\" },\n peg$c18 = \"|\",\n peg$c19 = { type: \"literal\", value: \"|\", description: \"\\\"|\\\"\" },\n peg$c20 = function() { return { view: null } },\n peg$c21 = \"[\",\n peg$c22 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n peg$c23 = \"]\",\n peg$c24 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n peg$c25 = function(view, predicates, cascadedViews) { return extend(extend(view, predicates ? { constraints: predicates } : {}), cascadedViews ? {\n cascade: cascadedViews\n } : {}) },\n peg$c26 = function(views, connection) { return [].concat([].concat.apply([], views),[connection]); },\n peg$c27 = \"->\",\n peg$c28 = { type: \"literal\", value: \"->\", description: \"\\\"->\\\"\" },\n peg$c29 = function() { return [{ relation: 'none', $parserOffset: offset() }] },\n peg$c30 = \"-\",\n peg$c31 = { type: \"literal\", value: \"-\", description: \"\\\"-\\\"\" },\n peg$c32 = function(predicateList) { return predicateList },\n peg$c33 = function() { return [{ relation: 'equ', constant: 'default', $parserOffset: offset() }] },\n peg$c34 = \"~\",\n peg$c35 = { type: \"literal\", value: \"~\", description: \"\\\"~\\\"\" },\n peg$c36 = function() { return [{ relation: 'equ', equalSpacing: true, $parserOffset: offset() }] },\n peg$c37 = \"\",\n peg$c38 = function() { return [{ relation: 'equ', constant: 0, $parserOffset: offset() }] },\n peg$c39 = function(p) { return [{ relation: 'equ', multiplier: p.multiplier, $parserOffset: offset() }] },\n peg$c40 = function(n) { return [{ relation: 'equ', constant: n, $parserOffset: offset() }] },\n peg$c41 = \"(\",\n peg$c42 = { type: \"literal\", value: \"(\", description: \"\\\"(\\\"\" },\n peg$c43 = \",\",\n peg$c44 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c45 = \")\",\n peg$c46 = { type: \"literal\", value: \")\", description: \"\\\")\\\"\" },\n peg$c47 = function(p, ps) { return [p].concat(ps.map(function(p){ return p[1] })) },\n peg$c48 = \"@\",\n peg$c49 = { type: \"literal\", value: \"@\", description: \"\\\"@\\\"\" },\n peg$c50 = function(r, o, p) { return extend({ relation: 'equ' }, (r || {}), o, (p ? p[1]: {})) },\n peg$c51 = function(r, o, p) { return extend({ relation: 'equ', equalSpacing: true }, (r || {}), o, (p ? p[1]: {})) },\n peg$c52 = \"==\",\n peg$c53 = { type: \"literal\", value: \"==\", description: \"\\\"==\\\"\" },\n peg$c54 = function() { return { relation: 'equ', $parserOffset: offset() } },\n peg$c55 = \"<=\",\n peg$c56 = { type: \"literal\", value: \"<=\", description: \"\\\"<=\\\"\" },\n peg$c57 = function() { return { relation: 'leq', $parserOffset: offset() } },\n peg$c58 = \">=\",\n peg$c59 = { type: \"literal\", value: \">=\", description: \"\\\">=\\\"\" },\n peg$c60 = function() { return { relation: 'geq', $parserOffset: offset() } },\n peg$c61 = /^[0-9]/,\n peg$c62 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c63 = function(digits) { return { priority: parseInt(digits.join(\"\"), 10) } },\n peg$c64 = function(n) { return { constant: n } },\n peg$c65 = \"%\",\n peg$c66 = { type: \"literal\", value: \"%\", description: \"\\\"%\\\"\" },\n peg$c67 = function(n) { return { view: null, multiplier: n / 100 } },\n peg$c68 = function(vn, a, m, c) { return { view: vn.view, attribute: a ? a : undefined, multiplier: m ? m : 1, constant: c ? c : undefined } },\n peg$c69 = \".left\",\n peg$c70 = { type: \"literal\", value: \".left\", description: \"\\\".left\\\"\" },\n peg$c71 = function() { return 'left'},\n peg$c72 = \".right\",\n peg$c73 = { type: \"literal\", value: \".right\", description: \"\\\".right\\\"\" },\n peg$c74 = function() { return 'right'},\n peg$c75 = \".top\",\n peg$c76 = { type: \"literal\", value: \".top\", description: \"\\\".top\\\"\" },\n peg$c77 = function() { return 'top'},\n peg$c78 = \".bottom\",\n peg$c79 = { type: \"literal\", value: \".bottom\", description: \"\\\".bottom\\\"\" },\n peg$c80 = function() { return 'bottom'},\n peg$c81 = \".width\",\n peg$c82 = { type: \"literal\", value: \".width\", description: \"\\\".width\\\"\" },\n peg$c83 = function() { return 'width'},\n peg$c84 = \".height\",\n peg$c85 = { type: \"literal\", value: \".height\", description: \"\\\".height\\\"\" },\n peg$c86 = function() { return 'height'},\n peg$c87 = \".centerX\",\n peg$c88 = { type: \"literal\", value: \".centerX\", description: \"\\\".centerX\\\"\" },\n peg$c89 = function() { return 'centerX'},\n peg$c90 = \".centerY\",\n peg$c91 = { type: \"literal\", value: \".centerY\", description: \"\\\".centerY\\\"\" },\n peg$c92 = function() { return 'centerY'},\n peg$c93 = \"/\",\n peg$c94 = { type: \"literal\", value: \"/\", description: \"\\\"/\\\"\" },\n peg$c95 = function(n) { return 1 / n; },\n peg$c96 = \"*\",\n peg$c97 = { type: \"literal\", value: \"*\", description: \"\\\"*\\\"\" },\n peg$c98 = function(n) { return n; },\n peg$c99 = function(n) { return -n; },\n peg$c100 = \"+\",\n peg$c101 = { type: \"literal\", value: \"+\", description: \"\\\"+\\\"\" },\n peg$c102 = /^[a-zA-Z_]/,\n peg$c103 = { type: \"class\", value: \"[a-zA-Z_]\", description: \"[a-zA-Z_]\" },\n peg$c104 = /^[a-zA-Z0-9_]/,\n peg$c105 = { type: \"class\", value: \"[a-zA-Z0-9_]\", description: \"[a-zA-Z0-9_]\" },\n peg$c106 = function(f, v) { return { view: f + v } },\n peg$c107 = \".\",\n peg$c108 = { type: \"literal\", value: \".\", description: \"\\\".\\\"\" },\n peg$c109 = function(digits, decimals) { return parseFloat(digits.concat(\".\").concat(decimals).join(\"\"), 10); },\n peg$c110 = function(digits) { return parseInt(digits.join(\"\"), 10); },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsevisualFormatString() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseorientation();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c2;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c0;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c0;\n }\n if (s1 === peg$FAILED) {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parsesuperview();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseconnection();\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c0;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c0;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseview();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsesuperview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$c1;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecomments();\n if (s6 === peg$FAILED) {\n s6 = peg$c1;\n }\n if (s6 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c5(s1, s2, s3, s4, s5, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseorientation() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 72) {\n s1 = peg$c6;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s1 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 86) {\n s1 = peg$c8;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s1 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 90) {\n s1 = peg$c10;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c12(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsecomments() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n if (input.charCodeAt(peg$currPos) === 32) {\n s2 = peg$c13;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c14); }\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (input.charCodeAt(peg$currPos) === 32) {\n s2 = peg$c13;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c14); }\n }\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c15) {\n s2 = peg$c15;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c16); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsesuperview() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s1 = peg$c18;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c20();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseview() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c21;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseviewName();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsepredicateListWithParens();\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsecascadedViews();\n if (s4 === peg$FAILED) {\n s4 = peg$c1;\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s5 = peg$c23;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c24); }\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c25(s2, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsecascadedViews() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s1 = peg$c2;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parseconnection();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseview();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parseconnection();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseview();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n }\n } else {\n s2 = peg$c0;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseconnection();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c26(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseconnection() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c27) {\n s1 = peg$c27;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c29();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c30;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepredicateList();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s3 = peg$c30;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c32(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c30;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c33();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 126) {\n s1 = peg$c34;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseequalSpacingPredicateList();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 126) {\n s3 = peg$c34;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c32(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 126) {\n s1 = peg$c34;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c36();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$c37;\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c38();\n }\n s0 = s1;\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsepredicateList() {\n var s0;\n\n s0 = peg$parsesimplePredicate();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepredicateListWithParens();\n }\n\n return s0;\n }\n\n function peg$parsesimplePredicate() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsepercentage();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c39(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c40(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsepredicateListWithParens() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c41;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepredicate();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c43;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c43;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s4 = peg$c45;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c47(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsepredicate() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parserelation();\n if (s1 === peg$FAILED) {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseobjectOfPredicate();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s4 = peg$c48;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepriority();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c50(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseequalSpacingPredicateList() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c41;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseequalSpacingPredicate();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c43;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parseequalSpacingPredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c43;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c44); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parseequalSpacingPredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s4 = peg$c45;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c47(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseequalSpacingPredicate() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parserelation();\n if (s1 === peg$FAILED) {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseobjectOfPredicate();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s4 = peg$c48;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepriority();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c51(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parserelation() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c52) {\n s1 = peg$c52;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c53); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c54();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c55) {\n s1 = peg$c55;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c56); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c57();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c58) {\n s1 = peg$c58;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c59); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c60();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseobjectOfPredicate() {\n var s0;\n\n s0 = peg$parsepercentage();\n if (s0 === peg$FAILED) {\n s0 = peg$parseconstant();\n if (s0 === peg$FAILED) {\n s0 = peg$parseviewPredicate();\n }\n }\n\n return s0;\n }\n\n function peg$parsepriority() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c61.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c62); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c61.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c62); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c63(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseconstant() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c64(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsepercentage() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 37) {\n s2 = peg$c65;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c66); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c67(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseviewPredicate() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseviewName();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseattribute();\n if (s2 === peg$FAILED) {\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsemultiplier();\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseconstantExpr();\n if (s4 === peg$FAILED) {\n s4 = peg$c1;\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c68(s1, s2, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseattribute() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c69) {\n s1 = peg$c69;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c70); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c71();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c72) {\n s1 = peg$c72;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c74();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c75) {\n s1 = peg$c75;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c77();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c78) {\n s1 = peg$c78;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c79); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c80();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c81) {\n s1 = peg$c81;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c82); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c83();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c84) {\n s1 = peg$c84;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c85); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c86();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8) === peg$c87) {\n s1 = peg$c87;\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c88); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c89();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8) === peg$c90) {\n s1 = peg$c90;\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c91); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c92();\n }\n s0 = s1;\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsemultiplier() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 47) {\n s1 = peg$c93;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c94); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c95(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 42) {\n s1 = peg$c96;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c97); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c98(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n }\n\n return s0;\n }\n\n function peg$parseconstantExpr() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c30;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c99(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 43) {\n s1 = peg$c100;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c101); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c98(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n }\n\n return s0;\n }\n\n function peg$parseviewName() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n if (peg$c102.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c103); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c102.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c103); }\n }\n }\n } else {\n s2 = peg$c0;\n }\n if (s2 !== peg$FAILED) {\n s2 = input.substring(s1, peg$currPos);\n }\n s1 = s2;\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = [];\n if (peg$c104.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c105); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c104.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c105); }\n }\n }\n if (s3 !== peg$FAILED) {\n s3 = input.substring(s2, peg$currPos);\n }\n s2 = s3;\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c106(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c61.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c62); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c61.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c62); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c107;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c108); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c61.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c62); }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c61.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c62); }\n }\n }\n } else {\n s3 = peg$c0;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c109(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n if (peg$c61.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c62); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c61.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c62); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c110(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n\n function extend(dst) {\n for (var i = 1; i < arguments.length; i++) {\n for (var k in arguments[i]) {\n dst[k] = arguments[i][k];\n }\n }\n return dst;\n }\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n }\n }\n\n return {\n SyntaxError: SyntaxError,\n parse: parse\n };\n})();\n\nconst Orientation = {\n HORIZONTAL: 1,\n VERTICAL: 2,\n ZINDEX: 4\n};\n\n/**\n * Helper function that inserts equal spacers (~).\n * @private\n */\nfunction _processEqualSpacer(context, stackView) {\n\n // Determine unique name for the spacer\n context.equalSpacerIndex = context.equalSpacerIndex || 1;\n const name = '_~' + context.lineIndex + ':' + context.equalSpacerIndex + '~';\n if (context.equalSpacerIndex > 1) {\n\n // Ensure that all spacers have the same width/height\n context.constraints.push({\n view1: '_~' + context.lineIndex + ':1~',\n attr1: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n relation: context.relation.relation || Relation.EQU,\n view2: name,\n attr2: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n priority: context.relation.priority\n });\n }\n context.equalSpacerIndex++;\n\n // Enforce proportional width/height\n if (context.relation.multiplier && (context.relation.multiplier !== 1)) {\n context.constraints.push({\n view1: name,\n attr1: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n relation: context.relation.relation || Relation.EQU,\n view2: null,\n attr2: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n priority: context.relation.priority,\n multiplier: context.relation.multiplier\n });\n context.relation.multiplier = undefined;\n }\n else if (context.relation.constant) {\n context.constraints.push({\n view1: name,\n attr1: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n relation: Relation.EQU,\n view2: null,\n attr2: Attribute.CONST,\n priority: context.relation.priority,\n constant: context.relation.constant\n });\n context.relation.constant = undefined;\n }\n\n // Add constraint\n switch (context.orientation) {\n case Orientation.HORIZONTAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.RIGHT : Attribute.LEFT;\n context.attr2 = Attribute.LEFT;\n break;\n case Orientation.VERTICAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.BOTTOM : Attribute.TOP;\n context.attr2 = Attribute.TOP;\n break;\n case Orientation.ZINDEX:\n context.attr1 = Attribute.ZINDEX;\n context.attr2 = Attribute.ZINDEX;\n context.relation.constant = (context.view1 !== stackView) ? 'default' : 0;\n break;\n }\n context.constraints.push({\n view1: context.view1,\n attr1: context.attr1,\n relation: context.relation.relation,\n view2: name,\n attr2: context.attr2,\n priority: context.relation.priority\n });\n context.view1 = name;\n}\n\n/**\n * Helper function that inserts proportional spacers (-12%-).\n * @private\n */\nfunction _processProportionalSpacer(context, stackView) {\n context.proportionalSpacerIndex = context.proportionalSpacerIndex || 1;\n const name = '_-' + context.lineIndex + ':' + context.proportionalSpacerIndex + '-';\n context.proportionalSpacerIndex++;\n context.constraints.push({\n view1: name,\n attr1: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n relation: context.relation.relation || Relation.EQU,\n view2: null, // or relative to the stackView... food for thought\n attr2: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n priority: context.relation.priority,\n multiplier: context.relation.multiplier\n });\n context.relation.multiplier = undefined;\n\n // Add constraint\n switch (context.orientation) {\n case Orientation.HORIZONTAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.RIGHT : Attribute.LEFT;\n context.attr2 = Attribute.LEFT;\n break;\n case Orientation.VERTICAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.BOTTOM : Attribute.TOP;\n context.attr2 = Attribute.TOP;\n break;\n case Orientation.ZINDEX:\n context.attr1 = Attribute.ZINDEX;\n context.attr2 = Attribute.ZINDEX;\n context.relation.constant = (context.view1 !== stackView) ? 'default' : 0;\n break;\n }\n context.constraints.push({\n view1: context.view1,\n attr1: context.attr1,\n relation: context.relation.relation,\n view2: name,\n attr2: context.attr2,\n priority: context.relation.priority\n });\n context.view1 = name;\n}\n\n/**\n * In case of a stack-view, set constraints for opposite orientations\n * @private\n */\nfunction _processStackView(context, name, subView) {\n let viewName;\n for (var orientation = 1; orientation <= 4; orientation *= 2) {\n if ((subView.orientations & orientation) &&\n (subView.stack.orientation !== orientation) &&\n !(subView.stack.processedOrientations & orientation)) {\n subView.stack.processedOrientations = subView.stack.processedOrientations | orientation;\n viewName = viewName || {\n name: name,\n type: 'stack'\n };\n for (var i = 0, j = subView.stack.subViews.length; i < j; i++) {\n if (orientation === Orientation.ZINDEX) {\n context.constraints.push({\n view1: viewName,\n attr1: Attribute.ZINDEX,\n relation: Relation.EQU,\n view2: subView.stack.subViews[i],\n attr2: Attribute.ZINDEX\n });\n }\n else {\n context.constraints.push({\n view1: viewName,\n attr1: (orientation === Orientation.VERTICAL) ? Attribute.HEIGHT : Attribute.WIDTH,\n relation: Relation.EQU,\n view2: subView.stack.subViews[i],\n attr2: (orientation === Orientation.VERTICAL) ? Attribute.HEIGHT : Attribute.WIDTH\n });\n context.constraints.push({\n view1: viewName,\n attr1: (orientation === Orientation.VERTICAL) ? Attribute.TOP : Attribute.LEFT,\n relation: Relation.EQU,\n view2: subView.stack.subViews[i],\n attr2: (orientation === Orientation.VERTICAL) ? Attribute.TOP : Attribute.LEFT\n });\n }\n }\n }\n }\n}\n\n/**\n * Recursive helper function that processes the cascaded data.\n * @private\n */\nfunction _processCascade(context, cascade, stackView) {\n const subViews = [];\n let subView;\n if (stackView) {\n cascade.push({view: stackView});\n }\n for (var i = 0; i < cascade.length; i++) {\n context.item = cascade[i];\n if (!Array.isArray(context.item) && context.item.hasOwnProperty('view')) {\n context.view1 = context.view2;\n context.view2 = context.item.view;\n if ((context.view1 !== undefined) && (context.view2 !== undefined) && context.relation) {\n if (context.item.view !== stackView) {\n subViews.push(context.item.view);\n subView = context.subViews[context.item.view];\n if (!subView) {\n subView = {orientations: 0};\n context.subViews[context.item.view] = subView;\n }\n subView.orientations = subView.orientations | context.orientation;\n if (subView.stack) {\n _processStackView(context, context.item.view, subView);\n }\n }\n if (context.relation.equalSpacing) {\n _processEqualSpacer(context, stackView);\n }\n if (context.relation.multiplier) {\n _processProportionalSpacer(context, stackView);\n }\n if (context.relation.relation !== 'none') {\n switch (context.orientation) {\n case Orientation.HORIZONTAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.RIGHT : Attribute.LEFT;\n context.attr2 = (context.view2 !== stackView) ? Attribute.LEFT : Attribute.RIGHT;\n break;\n case Orientation.VERTICAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.BOTTOM : Attribute.TOP;\n context.attr2 = (context.view2 !== stackView) ? Attribute.TOP : Attribute.BOTTOM;\n break;\n case Orientation.ZINDEX:\n context.attr1 = Attribute.ZINDEX;\n context.attr2 = Attribute.ZINDEX;\n context.relation.constant = (context.view1 !== stackView) ? 'default' : 0;\n break;\n }\n context.constraints.push({\n view1: context.view1,\n attr1: context.attr1,\n relation: context.relation.relation,\n view2: context.view2,\n attr2: context.attr2,\n multiplier: context.relation.multiplier,\n constant: ((context.relation.constant === 'default') || !context.relation.constant) ? context.relation.constant : -context.relation.constant,\n priority: context.relation.priority\n //,variable: context.relation.variable\n });\n }\n }\n context.relation = undefined;\n\n // process view size constraints\n if (context.item.constraints) {\n for (var n = 0; n < context.item.constraints.length; n++) {\n context.attr1 = context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT;\n context.attr2 = (context.item.constraints[n].view || context.item.constraints[n].multiplier) ?\n (context.item.constraints[n].attribute || context.attr1) :\n (context.item.constraints[n].variable ? Attribute.VARIABLE : Attribute.CONST);\n context.constraints.push({\n view1: context.item.view,\n attr1: context.attr1,\n relation: context.item.constraints[n].relation,\n view2: context.item.constraints[n].view,\n attr2: context.attr2,\n multiplier: context.item.constraints[n].multiplier,\n constant: context.item.constraints[n].constant,\n priority: context.item.constraints[n].priority\n //,variable: context.item.constraints[n].variable\n });\n }\n }\n\n // Process cascaded data (child stack-views)\n if (context.item.cascade) {\n _processCascade(context, context.item.cascade, context.item.view);\n }\n }\n else {\n context.relation = context.item[0];\n }\n }\n\n if (stackView) {\n subView = context.subViews[stackView];\n if (subView.stack) {\n throw new Error('A stack with name \"' + stackView + '\"\" already exists');\n }\n subView.stack = {\n orientation: context.orientation,\n processedOrientations: context.orientation,\n subViews: subViews\n };\n _processStackView(context, stackView, subView);\n }\n}\n\nconst metaInfoCategories = [\n 'viewport',\n 'spacing',\n 'colors',\n 'shapes',\n 'widths',\n 'heights'\n];\n\n/**\n * VisualFormat\n *\n * @namespace VisualFormat\n */\nclass VisualFormat {\n\n /**\n * Parses a single line of vfl into an array of constraint definitions.\n *\n * When the visual-format could not be succesfully parsed an exception is thrown containing\n * additional info about the parse error and column position.\n *\n * @param {String} visualFormat Visual format string (cannot contain line-endings!).\n * @param {Object} [options] Configuration options.\n * @param {Boolean} [options.extended] When set to true uses the extended syntax (default: false).\n * @param {String} [options.outFormat] Output format (`constraints` or `raw`) (default: `constraints`).\n * @param {Number} [options.lineIndex] Line-index used when auto generating equal-spacing constraints.\n * @return {Array} Array of constraint definitions.\n */\n static parseLine(visualFormat, options) {\n if ((visualFormat.length === 0) ||\n (options && options.extended && (visualFormat.indexOf('//') === 0))) {\n return [];\n }\n const res = (options && options.extended) ? parserExt.parse(visualFormat) : parser.parse(visualFormat);\n if (options && options.outFormat === 'raw') {\n return [res];\n }\n var context = {\n constraints: [],\n lineIndex: (options ? options.lineIndex : undefined) || 1,\n subViews: (options ? options.subViews : undefined) || {}\n };\n switch (res.orientation) {\n case 'horizontal':\n context.orientation = Orientation.HORIZONTAL;\n context.horizontal = true;\n break;\n case 'vertical':\n context.orientation = Orientation.VERTICAL;\n break;\n case 'zIndex':\n context.orientation = Orientation.ZINDEX;\n break;\n }\n _processCascade(context, res.cascade, null);\n return context.constraints;\n }\n\n /**\n * Parses one or more visual format strings into an array of constraint definitions.\n *\n * When the visual-format could not be succesfully parsed an exception is thrown containing\n * additional info about the parse error and column position.\n *\n * @param {String|Array} visualFormat One or more visual format strings.\n * @param {Object} [options] Configuration options.\n * @param {Boolean} [options.extended] When set to true uses the extended syntax (default: false).\n * @param {Boolean} [options.strict] When set to false trims any leading/trailing spaces and ignores empty lines (default: true).\n * @param {String} [options.lineSeperator] String that defines the end of a line (default `\\n`).\n * @param {String} [options.outFormat] Output format (`constraints` or `raw`) (default: `constraints`).\n * @return {Array} Array of constraint definitions.\n */\n static parse(visualFormat, options) {\n const lineSeperator = (options && options.lineSeperator) ? options.lineSeperator : '\\n';\n if (!Array.isArray(visualFormat) && (visualFormat.indexOf(lineSeperator) < 0)) {\n try {\n return this.parseLine(visualFormat, options);\n }\n catch (err) {\n err.source = visualFormat;\n throw err;\n }\n }\n\n // Decompose visual-format into an array of strings, and within those strings\n // search for line-endings, and treat each line as a seperate visual-format.\n visualFormat = Array.isArray(visualFormat) ? visualFormat : [visualFormat];\n let lines;\n let constraints = [];\n let lineIndex = 0;\n let line;\n const parseOptions = {\n lineIndex: lineIndex,\n extended: (options && options.extended),\n strict: (options && (options.strict !== undefined)) ? options.strict : true,\n outFormat: options ? options.outFormat : undefined,\n subViews: {}\n };\n try {\n for (var i = 0; i < visualFormat.length; i++) {\n lines = visualFormat[i].split(lineSeperator);\n for (var j = 0; j < lines.length; j++) {\n line = lines[j];\n lineIndex++;\n parseOptions.lineIndex = lineIndex;\n if (!parseOptions.strict) {\n line = line.trim();\n }\n if (parseOptions.strict || line.length) {\n constraints = constraints.concat(this.parseLine(line, parseOptions));\n }\n }\n }\n }\n catch (err) {\n err.source = line;\n err.line = lineIndex;\n throw err;\n }\n return constraints;\n }\n\n /**\n * Parses meta information from the comments in the VFL.\n *\n * Additional meta information can be specified in the comments\n * for previewing and rendering purposes. For instance, the view-port\n * aspect-ratio, sub-view widths and colors, can be specified. The\n * following example renders three colored circles in the visual-format editor:\n *\n * ```vfl\n * //viewport aspect-ratio:3/1 max-height:300\n * //colors red:#FF0000 green:#00FF00 blue:#0000FF\n * //shapes red:circle green:circle blue:circle\n * H:|-[row:[red(green,blue)]-[green]-[blue]]-|\n * V:|[row]|\n * ```\n *\n * Supported categories and properties:\n *\n * |Category|Property|Example|\n * |--------|--------|-------|\n * |`viewport`|`aspect-ratio:{width}/{height}`|`//viewport aspect-ratio:16/9`|\n * ||`width:[{number}/intrinsic]`|`//viewport width:10`|\n * ||`height:[{number}/intrinsic]`|`//viewport height:intrinsic`|\n * ||`min-width:{number}`|\n * ||`max-width:{number}`|\n * ||`min-height:{number}`|\n * ||`max-height:{number}`|\n * |`spacing`|`[{number}/array]`|`//spacing:8` or `//spacing:[10, 20, 5]`|\n * |`widths`|`{view-name}:[{number}/intrinsic]`|`//widths subview1:100`|\n * |`heights`|`{view-name}:[{number}/intrinsic]`|`//heights subview1:intrinsic`|\n * |`colors`|`{view-name}:{color}`|`//colors redview:#FF0000 blueview:#00FF00`|\n * |`shapes`|`{view-name}:[circle/square]`|`//shapes avatar:circle`|\n *\n * @param {String|Array} visualFormat One or more visual format strings.\n * @param {Object} [options] Configuration options.\n * @param {String} [options.lineSeperator] String that defines the end of a line (default `\\n`).\n * @return {Object} meta-info\n */\n static parseMetaInfo(visualFormat, options) {\n const lineSeperator = (options && options.lineSeperator) ? options.lineSeperator : '\\n';\n visualFormat = Array.isArray(visualFormat) ? visualFormat : [visualFormat];\n const metaInfo = {};\n var key;\n for (var k = 0; k < visualFormat.length; k++) {\n const lines = visualFormat[k].split(lineSeperator);\n for (var i = 0; i < lines.length; i++) {\n const line = lines[i];\n for (var c = 0; c < metaInfoCategories.length; c++) {\n const category = metaInfoCategories[c];\n if (line.indexOf('//' + category + ' ') === 0) {\n const items = line.substring(3 + category.length).split(' ');\n for (var j = 0; j < items.length; j++) {\n const item = items[j].split(':');\n metaInfo[category] = metaInfo[category] || {};\n metaInfo[category][item[0]] = (item.length > 1) ? item[1] : '';\n }\n }\n else if (line.indexOf('//' + category + ':') === 0) {\n metaInfo[category] = line.substring(3 + category.length);\n }\n }\n }\n }\n if (metaInfo.viewport) {\n const viewport = metaInfo.viewport;\n var aspectRatio = viewport['aspect-ratio'];\n if (aspectRatio) {\n aspectRatio = aspectRatio.split('/');\n viewport['aspect-ratio'] = parseInt(aspectRatio[0]) / parseInt(aspectRatio[1]);\n }\n if (viewport.height !== undefined) {\n viewport.height = (viewport.height === 'intrinsic') ? true : parseInt(viewport.height);\n }\n if (viewport.width !== undefined) {\n viewport.width = (viewport.width === 'intrinsic') ? true : parseInt(viewport.width);\n }\n if (viewport['max-height'] !== undefined) {\n viewport['max-height'] = parseInt(viewport['max-height']);\n }\n if (viewport['max-width'] !== undefined) {\n viewport['max-width'] = parseInt(viewport['max-width']);\n }\n if (viewport['min-height'] !== undefined) {\n viewport['min-height'] = parseInt(viewport['min-height']);\n }\n if (viewport['min-width'] !== undefined) {\n viewport['min-width'] = parseInt(viewport['min-width']);\n }\n }\n if (metaInfo.widths) {\n for (key in metaInfo.widths) {\n const width = (metaInfo.widths[key] === 'intrinsic') ? true : parseInt(metaInfo.widths[key]);\n metaInfo.widths[key] = width;\n if ((width === undefined) || isNaN(width)) {\n delete metaInfo.widths[key];\n }\n }\n }\n if (metaInfo.heights) {\n for (key in metaInfo.heights) {\n const height = (metaInfo.heights[key] === 'intrinsic') ? true : parseInt(metaInfo.heights[key]);\n metaInfo.heights[key] = height;\n if ((height === undefined) || isNaN(height)) {\n delete metaInfo.heights[key];\n }\n }\n }\n if (metaInfo.spacing) {\n const value = JSON.parse(metaInfo.spacing);\n metaInfo.spacing = value;\n if ((value === undefined) || isNaN(value)) {\n delete metaInfo.spacing;\n }\n }\n return metaInfo;\n }\n}\n\nclass SubView {\n constructor(options) {\n this._name = options.name;\n this._type = options.type;\n this._solver = options.solver;\n this._attr = {};\n if (!options.name) {\n if (true) {\n this._attr[Attribute.LEFT] = new c.Variable();\n this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.LEFT], c.Strength.required));\n this._attr[Attribute.TOP] = new c.Variable();\n this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.TOP], c.Strength.required));\n this._attr[Attribute.ZINDEX] = new c.Variable();\n this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.ZINDEX], c.Strength.required));\n }\n else {\n this._attr[Attribute.LEFT] = new kiwi.Variable();\n this._solver.addConstraint(new kiwi.Constraint(this._attr[Attribute.LEFT], kiwi.Operator.Eq, 0));\n this._attr[Attribute.TOP] = new kiwi.Variable();\n this._solver.addConstraint(new kiwi.Constraint(this._attr[Attribute.TOP], kiwi.Operator.Eq, 0));\n this._attr[Attribute.ZINDEX] = new kiwi.Variable();\n this._solver.addConstraint(new kiwi.Constraint(this._attr[Attribute.ZINDEX], kiwi.Operator.Eq, 0));\n }\n }\n }\n toJSON() {\n return {\n name: this.name,\n left: this.left,\n top: this.top,\n width: this.width,\n height: this.height\n };\n }\n toString() {\n JSON.stringify(this.toJSON(), undefined, 2);\n }\n\n /**\n * Name of the sub-view.\n * @readonly\n * @type {String}\n */\n get name() {\n return this._name;\n }\n\n /**\n * Left value (`Attribute.LEFT`).\n * @readonly\n * @type {Number}\n */\n get left() {\n return this._getAttrValue(Attribute.LEFT);\n }\n\n /**\n * Right value (`Attribute.RIGHT`).\n * @readonly\n * @type {Number}\n */\n get right() {\n return this._getAttrValue(Attribute.RIGHT);\n }\n\n /**\n * Width value (`Attribute.WIDTH`).\n * @type {Number}\n */\n get width() {\n return this._getAttrValue(Attribute.WIDTH);\n }\n\n /**\n * Height value (`Attribute.HEIGHT`).\n * @readonly\n * @type {Number}\n */\n get height() {\n return this._getAttrValue(Attribute.HEIGHT);\n }\n\n /**\n * Intrinsic width of the sub-view.\n *\n * Use this property to explicitely set the width of the sub-view, e.g.:\n * ```javascript\n * var view = new AutoLayout.View(AutoLayout.VisualFormat.parse('|[child1][child2]|'), {\n * width: 500\n * });\n * view.subViews.child1.intrinsicWidth = 100;\n * console.log('child2 width: ' + view.subViews.child2.width); // 400\n * ```\n *\n * @type {Number}\n */\n get intrinsicWidth() {\n return this._intrinsicWidth;\n }\n set intrinsicWidth(value) {\n if ((value !== undefined) && (value !== this._intrinsicWidth)) {\n const attr = this._getAttr(Attribute.WIDTH);\n if (this._intrinsicWidth === undefined) {\n if (true) {\n this._solver.addEditVar(attr, new c.Strength('required', this._name ? 998 : 999, 1000, 1000));\n }\n else {\n this._solver.addEditVariable(attr, kiwi.Strength.create(this._name ? 998 : 999, 1000, 1000));\n }\n }\n this._intrinsicWidth = value;\n this._solver.suggestValue(attr, value);\n if (true) {\n this._solver.resolve();\n }\n else {\n this._solver.updateVariables();\n }\n }\n }\n\n /**\n * Intrinsic height of the sub-view.\n *\n * See `intrinsicWidth`.\n *\n * @type {Number}\n */\n get intrinsicHeight() {\n return this._intrinsicHeight;\n }\n set intrinsicHeight(value) {\n if ((value !== undefined) && (value !== this._intrinsicHeight)) {\n const attr = this._getAttr(Attribute.HEIGHT);\n if (this._intrinsicHeight === undefined) {\n if (true) {\n this._solver.addEditVar(attr, new c.Strength('required', this._name ? 998 : 999, 1000, 1000));\n }\n else {\n this._solver.addEditVariable(attr, kiwi.Strength.create(this._name ? 998 : 999, 1000, 1000));\n }\n }\n this._intrinsicHeight = value;\n this._solver.suggestValue(attr, value);\n if (true) {\n this._solver.resolve();\n }\n else {\n this._solver.updateVariables();\n }\n }\n }\n\n /**\n * Top value (`Attribute.TOP`).\n * @readonly\n * @type {Number}\n */\n get top() {\n return this._getAttrValue(Attribute.TOP);\n }\n\n /**\n * Bottom value (`Attribute.BOTTOM`).\n * @readonly\n * @type {Number}\n */\n get bottom() {\n return this._getAttrValue(Attribute.BOTTOM);\n }\n\n /**\n * Horizontal center (`Attribute.CENTERX`).\n * @readonly\n * @type {Number}\n */\n get centerX() {\n return this._getAttrValue(Attribute.CENTERX);\n }\n\n /**\n * Vertical center (`Attribute.CENTERY`).\n * @readonly\n * @type {Number}\n */\n get centerY() {\n return this._getAttrValue(Attribute.CENTERY);\n }\n\n /**\n * Z-index (`Attribute.ZINDEX`).\n * @readonly\n * @type {Number}\n */\n get zIndex() {\n return this._getAttrValue(Attribute.ZINDEX);\n }\n\n /**\n * Returns the type of the sub-view.\n * @readonly\n * @type {String}\n */\n get type() {\n return this._type;\n }\n\n /**\n * Gets the value of one of the attributes.\n *\n * @param {String|Attribute} attr Attribute name (e.g. 'right', 'centerY', Attribute.TOP).\n * @return {Number} value or `undefined`\n */\n getValue(attr) {\n return this._attr[attr] ? this._attr[attr].value() : undefined;\n }\n\n /**\n * @private\n */\n _getAttr(attr) {\n if (this._attr[attr]) {\n return this._attr[attr];\n }\n this._attr[attr] = true ? new c.Variable() : new kiwi.Variable();\n switch (attr) {\n case Attribute.RIGHT:\n this._getAttr(Attribute.LEFT);\n this._getAttr(Attribute.WIDTH);\n if (true) {\n this._solver.addConstraint(new c.Equation(this._attr[attr], c.plus(this._attr[Attribute.LEFT], this._attr[Attribute.WIDTH])));\n }\n else {\n this._solver.addConstraint(new kiwi.Constraint(this._attr[attr], kiwi.Operator.Eq, this._attr[Attribute.LEFT].plus(this._attr[Attribute.WIDTH])));\n }\n break;\n case Attribute.BOTTOM:\n this._getAttr(Attribute.TOP);\n this._getAttr(Attribute.HEIGHT);\n if (true) {\n this._solver.addConstraint(new c.Equation(this._attr[attr], c.plus(this._attr[Attribute.TOP], this._attr[Attribute.HEIGHT])));\n }\n else {\n this._solver.addConstraint(new kiwi.Constraint(this._attr[attr], kiwi.Operator.Eq, this._attr[Attribute.TOP].plus(this._attr[Attribute.HEIGHT])));\n }\n break;\n case Attribute.CENTERX:\n this._getAttr(Attribute.LEFT);\n this._getAttr(Attribute.WIDTH);\n if (true) {\n this._solver.addConstraint(new c.Equation(this._attr[attr], c.plus(this._attr[Attribute.LEFT], c.divide(this._attr[Attribute.WIDTH], 2))));\n }\n else {\n this._solver.addConstraint(new kiwi.Constraint(this._attr[attr], kiwi.Operator.Eq, this._attr[Attribute.LEFT].plus(this._attr[Attribute.WIDTH].divide(2))));\n }\n break;\n case Attribute.CENTERY:\n this._getAttr(Attribute.TOP);\n this._getAttr(Attribute.HEIGHT);\n if (true) {\n this._solver.addConstraint(new c.Equation(this._attr[attr], c.plus(this._attr[Attribute.TOP], c.divide(this._attr[Attribute.HEIGHT], 2))));\n }\n else {\n this._solver.addConstraint(new kiwi.Constraint(this._attr[attr], kiwi.Operator.Eq, this._attr[Attribute.TOP].plus(this._attr[Attribute.HEIGHT].divide(2))));\n }\n break;\n }\n if (!true) {\n this._solver.updateVariables();\n }\n return this._attr[attr];\n }\n\n /**\n * @private\n */\n _getAttrValue(attr) {\n if (true) {\n return this._getAttr(attr).value;\n }\n else {\n return this._getAttr(attr).value();\n }\n }\n}\n\nconst defaultPriorityStrength = true ? new c.Strength('defaultPriority', 0, 1000, 1000) : kiwi.Strength.create(0, 1000, 1000);\n\nfunction _getConst(name, value) {\n if (true) {\n const vr = new c.Variable({value: value});\n this._solver.addConstraint(new c.StayConstraint(vr, c.Strength.required, 0));\n return vr;\n }\n else {\n const vr = new kiwi.Variable();\n this._solver.addConstraint(new kiwi.Constraint(vr, kiwi.Operator.Eq, value));\n return vr;\n }\n}\n\nfunction _getSubView(viewName) {\n if (!viewName) {\n return this._parentSubView;\n }\n else if (viewName.name) {\n this._subViews[viewName.name] = this._subViews[viewName.name] || new SubView({\n name: viewName.name,\n solver: this._solver\n });\n this._subViews[viewName.name]._type = this._subViews[viewName.name]._type || viewName.type;\n return this._subViews[viewName.name];\n }\n else {\n this._subViews[viewName] = this._subViews[viewName] || new SubView({\n name: viewName,\n solver: this._solver\n });\n return this._subViews[viewName];\n }\n}\n\nfunction _getSpacing(constraint) {\n let index = 4;\n if (!constraint.view1 && (constraint.attr1 === 'left')) {\n index = 3;\n }\n else if (!constraint.view1 && (constraint.attr1 === 'top')) {\n index = 0;\n }\n else if (!constraint.view2 && (constraint.attr2 === 'right')) {\n index = 1;\n }\n else if (!constraint.view2 && (constraint.attr2 === 'bottom')) {\n index = 2;\n }\n else {\n switch (constraint.attr1) {\n case 'left':\n case 'right':\n case 'centerX':\n case 'leading':\n case 'trailing':\n index = 4;\n break;\n case 'zIndex':\n index = 6;\n break;\n default:\n index = 5;\n }\n }\n this._spacingVars = this._spacingVars || new Array(7);\n this._spacingExpr = this._spacingExpr || new Array(7);\n if (!this._spacingVars[index]) {\n if (true) {\n this._spacingVars[index] = new c.Variable();\n this._solver.addEditVar(this._spacingVars[index]);\n this._spacingExpr[index] = c.minus(0, this._spacingVars[index]);\n }\n else {\n this._spacingVars[index] = new kiwi.Variable();\n this._solver.addEditVariable(this._spacingVars[index], kiwi.Strength.create(999, 1000, 1000));\n this._spacingExpr[index] = this._spacingVars[index].multiply(-1);\n }\n this._solver.suggestValue(this._spacingVars[index], this._spacing[index]);\n }\n return this._spacingExpr[index];\n}\n\nfunction _addConstraint(constraint) {\n //this.constraints.push(constraint);\n let relation;\n const multiplier = (constraint.multiplier !== undefined) ? constraint.multiplier : 1;\n let constant = (constraint.constant !== undefined) ? constraint.constant : 0;\n if (constant === 'default') {\n constant = _getSpacing.call(this, constraint);\n }\n const attr1 = _getSubView.call(this, constraint.view1)._getAttr(constraint.attr1);\n let attr2;\n if (true) {\n if (constraint.attr2 === Attribute.CONST) {\n attr2 = _getConst.call(this, undefined, constraint.constant);\n }\n else {\n attr2 = _getSubView.call(this, constraint.view2)._getAttr(constraint.attr2);\n if ((multiplier !== 1) && constant) {\n attr2 = c.plus(c.times(attr2, multiplier), constant);\n }\n else if (constant) {\n attr2 = c.plus(attr2, constant);\n }\n else if (multiplier !== 1) {\n attr2 = c.times(attr2, multiplier);\n }\n }\n const strength = ((constraint.priority !== undefined) && (constraint.priority < 1000)) ? new c.Strength('priority', 0, constraint.priority, 1000) : defaultPriorityStrength;\n switch (constraint.relation) {\n case Relation.EQU:\n relation = new c.Equation(attr1, attr2, strength);\n break;\n case Relation.GEQ:\n relation = new c.Inequality(attr1, c.GEQ, attr2, strength);\n break;\n case Relation.LEQ:\n relation = new c.Inequality(attr1, c.LEQ, attr2, strength);\n break;\n default:\n throw 'Invalid relation specified: ' + constraint.relation;\n }\n }\n else {\n if (constraint.attr2 === Attribute.CONST) {\n attr2 = _getConst.call(this, undefined, constraint.constant);\n }\n else {\n attr2 = _getSubView.call(this, constraint.view2)._getAttr(constraint.attr2);\n if ((multiplier !== 1) && constant) {\n attr2 = attr2.multiply(multiplier).plus(constant);\n }\n else if (constant) {\n attr2 = attr2.plus(constant);\n }\n else if (multiplier !== 1) {\n attr2 = attr2.multiply(multiplier);\n }\n }\n const strength = ((constraint.priority !== undefined) && (constraint.priority < 1000)) ? kiwi.Strength.create(0, constraint.priority, 1000) : defaultPriorityStrength;\n switch (constraint.relation) {\n case Relation.EQU:\n relation = new kiwi.Constraint(attr1, kiwi.Operator.Eq, attr2, strength);\n break;\n case Relation.GEQ:\n relation = new kiwi.Constraint(attr1, kiwi.Operator.Ge, attr2, strength);\n break;\n case Relation.LEQ:\n relation = new kiwi.Constraint(attr1, kiwi.Operator.Le, attr2, strength);\n break;\n default:\n throw 'Invalid relation specified: ' + constraint.relation;\n }\n }\n this._solver.addConstraint(relation);\n}\n\nfunction _compareSpacing(old, newz) {\n if (old === newz) {\n return true;\n }\n if (!old || !newz) {\n return false;\n }\n for (var i = 0; i < 7; i++) {\n if (old[i] !== newz[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * AutoLayoutJS API reference.\n *\n * ### Index\n *\n * |Entity|Type|Description|\n * |---|---|---|\n * |[AutoLayout](#autolayout)|`namespace`|Top level AutoLayout object.|\n * |[VisualFormat](#autolayoutvisualformat--object)|`namespace`|Parses VFL into constraints.|\n * |[View](#autolayoutview)|`class`|Main entity for adding & evaluating constraints.|\n * |[SubView](#autolayoutsubview--object)|`class`|SubView's are automatically created when constraints are added to views. They give access to the evaluated results.|\n * |[Attribute](#autolayoutattribute--enum)|`enum`|Attribute types that are supported when adding constraints.|\n * |[Relation](#autolayoutrelation--enum)|`enum`|Relationship types that are supported when adding constraints.|\n * |[Priority](#autolayoutpriority--enum)|`enum`|Default priority values for when adding constraints.|\n *\n * ### AutoLayout\n *\n * @module AutoLayout\n */\nclass View {\n\n /**\n * @class View\n * @param {Object} [options] Configuration options.\n * @param {Number} [options.width] Initial width of the view.\n * @param {Number} [options.height] Initial height of the view.\n * @param {Number|Object} [options.spacing] Spacing for the view (default: 8) (see `setSpacing`).\n * @param {Array} [options.constraints] One or more constraint definitions (see `addConstraints`).\n */\n constructor(options) {\n this._solver = true ? new c.SimplexSolver() : new kiwi.Solver();\n this._subViews = {};\n //this._spacing = undefined;\n this._parentSubView = new SubView({\n solver: this._solver\n });\n this.setSpacing((options && (options.spacing !== undefined)) ? options.spacing : 8);\n //this.constraints = [];\n if (options) {\n if ((options.width !== undefined) || (options.height !== undefined)) {\n this.setSize(options.width, options.height);\n }\n if (options.constraints) {\n this.addConstraints(options.constraints);\n }\n }\n }\n\n /**\n * Sets the width and height of the view.\n *\n * @param {Number} width Width of the view.\n * @param {Number} height Height of the view.\n * @return {View} this\n */\n setSize(width, height /*, depth*/) {\n this._parentSubView.intrinsicWidth = width;\n this._parentSubView.intrinsicHeight = height;\n return this;\n }\n\n /**\n * Width that was set using `setSize`.\n * @readonly\n * @type {Number}\n */\n get width() {\n return this._parentSubView.intrinsicWidth;\n }\n\n /**\n * Height that was set using `setSize`.\n * @readonly\n * @type {Number}\n */\n get height() {\n return this._parentSubView.intrinsicHeight;\n }\n\n /**\n * Width that is calculated from the constraints and the `.intrinsicWidth` of\n * the sub-views.\n *\n * When the width has been explicitely set using `setSize`, the fittingWidth\n * will **always** be the same as the explicitely set width. To calculate the size\n * based on the content, use:\n * ```javascript\n * var view = new AutoLayout.View({\n * constraints: VisualFormat.parse('|-[view1]-[view2]-'),\n * spacing: 20\n * });\n * view.subViews.view1.intrinsicWidth = 100;\n * view.subViews.view2.intrinsicWidth = 100;\n * console.log('fittingWidth: ' + view.fittingWidth); // 260\n * ```\n *\n * @readonly\n * @type {Number}\n */\n get fittingWidth() {\n return this._parentSubView.width;\n }\n\n /**\n * Height that is calculated from the constraints and the `.intrinsicHeight` of\n * the sub-views.\n *\n * See `.fittingWidth`.\n *\n * @readonly\n * @type {Number}\n */\n get fittingHeight() {\n return this._parentSubView.height;\n }\n\n /**\n * Sets the spacing for the view.\n *\n * The spacing can be set for 7 different variables:\n * `top`, `right`, `bottom`, `left`, `width`, `height` and `zIndex`. The `left`-spacing is\n * used when a spacer is used between the parent-view and a sub-view (e.g. `|-[subView]`).\n * The same is true for the `right`, `top` and `bottom` spacers. The `width` and `height` are\n * used for spacers in between sub-views (e.g. `[view1]-[view2]`).\n *\n * Instead of using the full spacing syntax, it is also possible to use shorthand notations:\n *\n * |Syntax|Type|Description|\n * |---|---|---|\n * |`[top, right, bottom, left, width, height, zIndex]`|Array(7)|Full syntax including z-index **(clockwise order)**.|\n * |`[top, right, bottom, left, width, height]`|Array(6)|Full horizontal & vertical spacing syntax (no z-index) **(clockwise order)**.|\n * |`[horizontal, vertical, zIndex]`|Array(3)|Horizontal = left, right, width, vertical = top, bottom, height.|\n * |`[horizontal, vertical]`|Array(2)|Horizontal = left, right, width, vertical = top, bottom, height, z-index = 1.|\n * |`spacing`|Number|Horizontal & vertical spacing are all the same, z-index = 1.|\n *\n * Examples:\n * ```javascript\n * view.setSpacing(10); // horizontal & vertical spacing 10\n * view.setSpacing([10, 15, 2]); // horizontal spacing 10, vertical spacing 15, z-axis spacing 2\n * view.setSpacing([10, 20, 10, 20, 5, 5]); // top, right, bottom, left, horizontal, vertical\n * view.setSpacing([10, 20, 10, 20, 5, 5, 1]); // top, right, bottom, left, horizontal, vertical, z\n * ```\n *\n * @param {Number|Array} spacing\n * @return {View} this\n */\n setSpacing(spacing) {\n // convert spacing into array: [top, right, bottom, left, horz, vert, z-index]\n switch (Array.isArray(spacing) ? spacing.length : -1) {\n case -1: spacing = [spacing, spacing, spacing, spacing, spacing, spacing, 1]; break;\n case 1: spacing = [spacing[0], spacing[0], spacing[0], spacing[0], spacing[0], spacing[0], 1]; break;\n case 2: spacing = [spacing[1], spacing[0], spacing[1], spacing[0], spacing[0], spacing[1], 1]; break;\n case 3: spacing = [spacing[1], spacing[0], spacing[1], spacing[0], spacing[0], spacing[1], spacing[2]]; break;\n case 6: spacing = [spacing[0], spacing[1], spacing[2], spacing[3], spacing[4], spacing[5], 1]; break;\n case 7: break;\n default: throw 'Invalid spacing syntax';\n }\n if (!_compareSpacing(this._spacing, spacing)) {\n this._spacing = spacing;\n // update spacing variables\n if (this._spacingVars) {\n for (var i = 0; i < this._spacingVars.length; i++) {\n if (this._spacingVars[i]) {\n this._solver.suggestValue(this._spacingVars[i], this._spacing[i]);\n }\n }\n if (true) {\n this._solver.resolve();\n }\n else {\n this._solver.updateVariables();\n }\n }\n }\n return this;\n }\n\n /**\n * Adds a constraint definition.\n *\n * A constraint definition has the following format:\n *\n * ```javascript\n * constraint: {\n * view1: {String},\n * attr1: {AutoLayout.Attribute},\n * relation: {AutoLayout.Relation},\n * view2: {String},\n * attr2: {AutoLayout.Attribute},\n * multiplier: {Number},\n * constant: {Number},\n * priority: {Number}(0..1000)\n * }\n * ```\n * @param {Object} constraint Constraint definition.\n * @return {View} this\n */\n addConstraint(constraint) {\n _addConstraint.call(this, constraint);\n if (!true) {\n this._solver.updateVariables();\n }\n return this;\n }\n\n /**\n * Adds one or more constraint definitions.\n *\n * A constraint definition has the following format:\n *\n * ```javascript\n * constraint: {\n * view1: {String},\n * attr1: {AutoLayout.Attribute},\n * relation: {AutoLayout.Relation},\n * view2: {String},\n * attr2: {AutoLayout.Attribute},\n * multiplier: {Number},\n * constant: {Number},\n * priority: {Number}(0..1000)\n * }\n * ```\n * @param {Array} constraints One or more constraint definitions.\n * @return {View} this\n */\n addConstraints(constraints) {\n for (var j = 0; j < constraints.length; j++) {\n _addConstraint.call(this, constraints[j]);\n }\n if (!true) {\n this._solver.updateVariables();\n }\n return this;\n }\n\n /**\n * Dictionary of `SubView` objects that have been created when adding constraints.\n * @readonly\n * @type {Object.SubView}\n */\n get subViews() {\n return this._subViews;\n }\n\n /**\n * Checks whether the constraints incompletely specify the location\n * of the subViews.\n * @private\n */\n //get hasAmbiguousLayout() {\n // Todo\n //}\n}\n\nvar AutoLayout = {\n Attribute: Attribute,\n Relation: Relation,\n Priority: Priority,\n VisualFormat: VisualFormat,\n View: View,\n SubView: SubView\n //DOM: DOM\n};\n\nmodule.exports = AutoLayout;","/**\n * Parts Copyright (C) 2011-2012, Alex Russell (slightlyoff@chromium.org)\n * Parts Copyright (C) Copyright (C) 1998-2000 Greg J. Badros\n *\n * Use of this source code is governed by the LGPL, which can be found in the\n * COPYING.LGPL file.\n *\n * This is a compiled version of Cassowary/JS. For source versions or to\n * contribute, see the github project:\n *\n * https://github.com/slightlyoff/cassowary-js-refactor\n *\n */\n\n(function() {\n(function(a){\"use strict\";try{(function(){}).bind(a)}catch(b){Object.defineProperty(Function.prototype,\"bind\",{value:function(a){var b=this;return function(){return b.apply(a,arguments)}},enumerable:!1,configurable:!0,writable:!0})}var c=a.HTMLElement!==void 0,d=function(a){for(var b=null;a&&a!=Object.prototype;){if(a.tagName){b=a.tagName;break}a=a.prototype}return b||\"div\"},e=1e-8,f={},g=function(a,b){if(a&&b){if(\"function\"==typeof a[b])return a[b];var c=a.prototype;if(c&&\"function\"==typeof c[b])return c[b];if(c!==Object.prototype&&c!==Function.prototype)return\"function\"==typeof a.__super__?g(a.__super__,b):void 0}},h=a.c={debug:!1,trace:!1,verbose:!1,traceAdded:!1,GC:!1,GEQ:1,LEQ:2,inherit:function(b){var e=null,g=null;b[\"extends\"]&&(g=b[\"extends\"],delete b[\"extends\"]),b.initialize&&(e=b.initialize,delete b.initialize);var h=e||function(){};Object.defineProperty(h,\"__super__\",{value:g?g:Object,enumerable:!1,configurable:!0,writable:!1}),b._t&&(f[b._t]=h);var i=h.prototype=Object.create(g?g.prototype:Object.prototype);if(this.extend(i,b),c&&g&&g.prototype instanceof a.HTMLElement){var j=h,k=d(i),l=function(a){return a.__proto__=i,j.apply(a,arguments),i.created&&a.created(),i.decorate&&a.decorate(),a};this.extend(i,{upgrade:l}),h=function(){return l(a.document.createElement(k))},h.prototype=i,this.extend(h,{ctor:j})}return h},extend:function(a,b){return this.own(b,function(c){var d=Object.getOwnPropertyDescriptor(b,c);try{\"function\"==typeof d.get||\"function\"==typeof d.set?Object.defineProperty(a,c,d):\"function\"==typeof d.value||\"_\"===c.charAt(0)?(d.writable=!0,d.configurable=!0,d.enumerable=!1,Object.defineProperty(a,c,d)):a[c]=b[c]}catch(e){}}),a},own:function(b,c,d){return Object.getOwnPropertyNames(b).forEach(c,d||a),b},traceprint:function(a){h.verbose&&console.log(a)},fnenterprint:function(a){console.log(\"* \"+a)},fnexitprint:function(a){console.log(\"- \"+a)},assert:function(a,b){if(!a)throw new h.InternalError(\"Assertion failed: \"+b)},plus:function(a,b){return a instanceof h.Expression||(a=new h.Expression(a)),b instanceof h.Expression||(b=new h.Expression(b)),a.plus(b)},minus:function(a,b){return a instanceof h.Expression||(a=new h.Expression(a)),b instanceof h.Expression||(b=new h.Expression(b)),a.minus(b)},times:function(a,b){return(\"number\"==typeof a||a instanceof h.Variable)&&(a=new h.Expression(a)),(\"number\"==typeof b||b instanceof h.Variable)&&(b=new h.Expression(b)),a.times(b)},divide:function(a,b){return(\"number\"==typeof a||a instanceof h.Variable)&&(a=new h.Expression(a)),(\"number\"==typeof b||b instanceof h.Variable)&&(b=new h.Expression(b)),a.divide(b)},approx:function(a,b){if(a===b)return!0;var c,d;return c=a instanceof h.Variable?a.value:a,d=b instanceof h.Variable?b.value:b,0==c?e>Math.abs(d):0==d?e>Math.abs(c):Math.abs(c-d)64||this._deleted>this._compactThreshold&&(this._compact(),this._deleted=0)},\"delete\":function(a){a=b(a),this._store.hasOwnProperty(a)&&(this._deleted++,delete this._store[a],this.size>0&&this.size--)},each:function(a,b){if(this.size){this._perhapsCompact();var c=this._store,d=this._keyStrMap;Object.keys(this._store).forEach(function(e){a.call(b||null,d[e],c[e])},this)}},escapingEach:function(a,b){if(this.size){this._perhapsCompact();for(var c=this,e=this._store,f=this._keyStrMap,g=d,h=Object.keys(e),i=0;h.length>i;i++)if(function(d){c._store.hasOwnProperty(d)&&(g=a.call(b||null,f[d],e[d]))}(h[i]),g){if(void 0!==g.retval)return g;if(g.brk)break}}},clone:function(){var b=new a.HashTable;return this.size&&(b.size=this.size,c(this._store,b._store),c(this._keyStrMap,b._keyStrMap)),b},equals:function(b){if(b===this)return!0;if(!(b instanceof a.HashTable)||b._size!==this._size)return!1;for(var c=Object.keys(this._store),d=0;c.length>d;d++){var e=c[d];if(this._keyStrMap[e]!==b._keyStrMap[e]||this._store[e]!==b._store[e])return!1}return!0},toString:function(){var b=\"\";return this.each(function(a,c){b+=a+\" => \"+c+\"\\n\"}),b}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.HashSet=a.inherit({_t:\"c.HashSet\",initialize:function(){this.storage=[],this.size=0},add:function(a){var b=this.storage;b.indexOf(a),-1==b.indexOf(a)&&b.push(a),this.size=this.storage.length},values:function(){return this.storage},has:function(a){var b=this.storage;return-1!=b.indexOf(a)},\"delete\":function(a){var b=this.storage.indexOf(a);return-1==b?null:(this.storage.splice(b,1)[0],this.size=this.storage.length,void 0)},clear:function(){this.storage.length=0},each:function(a,b){this.size&&this.storage.forEach(a,b)},escapingEach:function(a,b){this.size&&this.storage.forEach(a,b)},toString:function(){var a=this.size+\" {\",b=!0;return this.each(function(c){b?b=!1:a+=\", \",a+=c}),a+=\"}\\n\"},toJSON:function(){var a=[];return this.each(function(b){a.push(b.toJSON())}),{_t:\"c.HashSet\",data:a}},fromJSON:function(b){var c=new a.HashSet;return b.data&&(c.size=b.data.length,c.storage=b.data),c}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.Error=a.inherit({initialize:function(a){a&&(this._description=a)},_name:\"c.Error\",_description:\"An error has occured in Cassowary\",set description(a){this._description=a},get description(){return\"(\"+this._name+\") \"+this._description},get message(){return this.description},toString:function(){return this.description}});var b=function(b,c){return a.inherit({\"extends\":a.Error,initialize:function(){a.Error.apply(this,arguments)},_name:b||\"\",_description:c||\"\"})};a.ConstraintNotFound=b(\"c.ConstraintNotFound\",\"Tried to remove a constraint never added to the tableu\"),a.InternalError=b(\"c.InternalError\"),a.NonExpression=b(\"c.NonExpression\",\"The resulting expression would be non\"),a.NotEnoughStays=b(\"c.NotEnoughStays\",\"There are not enough stays to give specific values to every variable\"),a.RequiredFailure=b(\"c.RequiredFailure\",\"A required constraint cannot be satisfied\"),a.TooDifficult=b(\"c.TooDifficult\",\"The constraints are too difficult to solve\")}(this.c||module.parent.exports||{}),function(a){\"use strict\";var b=1e3;a.SymbolicWeight=a.inherit({_t:\"c.SymbolicWeight\",initialize:function(){this.value=0;for(var a=1,c=arguments.length-1;c>=0;--c)this.value+=arguments[c]*a,a*=b},toJSON:function(){return{_t:this._t,value:this.value}}})}(this.c||module.parent.exports||{}),function(a){a.Strength=a.inherit({initialize:function(b,c,d,e){this.name=b,this.symbolicWeight=c instanceof a.SymbolicWeight?c:new a.SymbolicWeight(c,d,e)},get required(){return this===a.Strength.required},toString:function(){return this.name+(this.isRequired?\"\":\":\"+this.symbolicWeight)}}),a.Strength.required=new a.Strength(\"\",1e3,1e3,1e3),a.Strength.strong=new a.Strength(\"strong\",1,0,0),a.Strength.medium=new a.Strength(\"medium\",0,1,0),a.Strength.weak=new a.Strength(\"weak\",0,0,1)}(this.c||(\"undefined\"!=typeof module?module.parent.exports.c:{})),function(a){\"use strict\";a.AbstractVariable=a.inherit({isDummy:!1,isExternal:!1,isPivotable:!1,isRestricted:!1,_init:function(b,c){this.hashCode=a._inc(),this.name=(c||\"\")+this.hashCode,b&&(b.name!==void 0&&(this.name=b.name),b.value!==void 0&&(this.value=b.value),b.prefix!==void 0&&(this._prefix=b.prefix))},_prefix:\"\",name:\"\",value:0,toJSON:function(){var a={};return this._t&&(a._t=this._t),this.name&&(a.name=this.name),this.value!==void 0&&(a.value=this.value),this._prefix&&(a._prefix=this._prefix),this._t&&(a._t=this._t),a},fromJSON:function(b,c){var d=new c;return a.extend(d,b),d},toString:function(){return this._prefix+\"[\"+this.name+\":\"+this.value+\"]\"}}),a.Variable=a.inherit({_t:\"c.Variable\",\"extends\":a.AbstractVariable,initialize:function(b){this._init(b,\"v\");var c=a.Variable._map;c&&(c[this.name]=this)},isExternal:!0}),a.DummyVariable=a.inherit({_t:\"c.DummyVariable\",\"extends\":a.AbstractVariable,initialize:function(a){this._init(a,\"d\")},isDummy:!0,isRestricted:!0,value:\"dummy\"}),a.ObjectiveVariable=a.inherit({_t:\"c.ObjectiveVariable\",\"extends\":a.AbstractVariable,initialize:function(a){this._init(a,\"o\")},value:\"obj\"}),a.SlackVariable=a.inherit({_t:\"c.SlackVariable\",\"extends\":a.AbstractVariable,initialize:function(a){this._init(a,\"s\")},isPivotable:!0,isRestricted:!0,value:\"slack\"})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.Point=a.inherit({initialize:function(b,c,d){if(b instanceof a.Variable)this._x=b;else{var e={value:b};d&&(e.name=\"x\"+d),this._x=new a.Variable(e)}if(c instanceof a.Variable)this._y=c;else{var f={value:c};d&&(f.name=\"y\"+d),this._y=new a.Variable(f)}},get x(){return this._x},set x(b){b instanceof a.Variable?this._x=b:this._x.value=b},get y(){return this._y},set y(b){b instanceof a.Variable?this._y=b:this._y.value=b},toString:function(){return\"(\"+this.x+\", \"+this.y+\")\"}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.Expression=a.inherit({initialize:function(b,c,d){a.GC&&console.log(\"new c.Expression\"),this.constant=\"number\"!=typeof d||isNaN(d)?0:d,this.terms=new a.HashTable,b instanceof a.AbstractVariable?this.setVariable(b,\"number\"==typeof c?c:1):\"number\"==typeof b&&(isNaN(b)?console.trace():this.constant=b)},initializeFromHash:function(b,c){return a.verbose&&(console.log(\"*******************************\"),console.log(\"clone c.initializeFromHash\"),console.log(\"*******************************\")),a.GC&&console.log(\"clone c.Expression\"),this.constant=b,this.terms=c.clone(),this},multiplyMe:function(a){this.constant*=a;var b=this.terms;return b.each(function(c,d){b.set(c,d*a)}),this},clone:function(){a.verbose&&(console.log(\"*******************************\"),console.log(\"clone c.Expression\"),console.log(\"*******************************\"));var b=new a.Expression;return b.initializeFromHash(this.constant,this.terms),b},times:function(b){if(\"number\"==typeof b)return this.clone().multiplyMe(b);if(this.isConstant)return b.times(this.constant);if(b.isConstant)return this.times(b.constant);throw new a.NonExpression},plus:function(b){return b instanceof a.Expression?this.clone().addExpression(b,1):b instanceof a.Variable?this.clone().addVariable(b,1):void 0},minus:function(b){return b instanceof a.Expression?this.clone().addExpression(b,-1):b instanceof a.Variable?this.clone().addVariable(b,-1):void 0},divide:function(b){if(\"number\"==typeof b){if(a.approx(b,0))throw new a.NonExpression;return this.times(1/b)}if(b instanceof a.Expression){if(!b.isConstant)throw new a.NonExpression;return this.times(1/b.constant)}},addExpression:function(b,c,d,e){return b instanceof a.AbstractVariable&&(b=new a.Expression(b),a.trace&&console.log(\"addExpression: Had to cast a var to an expression\")),c=c||1,this.constant+=c*b.constant,b.terms.each(function(a,b){this.addVariable(a,b*c,d,e)},this),this},addVariable:function(b,c,d,e){null==c&&(c=1),a.trace&&console.log(\"c.Expression::addVariable():\",b,c);var f=this.terms.get(b);if(f){var g=f+c;0==g||a.approx(g,0)?(e&&e.noteRemovedVariable(b,d),this.terms.delete(b)):this.setVariable(b,g)}else a.approx(c,0)||(this.setVariable(b,c),e&&e.noteAddedVariable(b,d));return this},setVariable:function(a,b){return this.terms.set(a,b),this},anyPivotableVariable:function(){if(this.isConstant)throw new a.InternalError(\"anyPivotableVariable called on a constant\");var b=this.terms.escapingEach(function(a){return a.isPivotable?{retval:a}:void 0});return b&&void 0!==b.retval?b.retval:null},substituteOut:function(b,c,d,e){a.trace&&(a.fnenterprint(\"CLE:substituteOut: \"+b+\", \"+c+\", \"+d+\", ...\"),a.traceprint(\"this = \"+this));var f=this.setVariable.bind(this),g=this.terms,h=g.get(b);g.delete(b),this.constant+=h*c.constant,c.terms.each(function(b,c){var i=g.get(b);if(i){var j=i+h*c;a.approx(j,0)?(e.noteRemovedVariable(b,d),g.delete(b)):f(b,j)}else f(b,h*c),e&&e.noteAddedVariable(b,d)}),a.trace&&a.traceprint(\"Now this is \"+this)},changeSubject:function(a,b){this.setVariable(a,this.newSubject(b))},newSubject:function(b){a.trace&&a.fnenterprint(\"newSubject:\"+b);var c=1/this.terms.get(b);return this.terms.delete(b),this.multiplyMe(-c),c},coefficientFor:function(a){return this.terms.get(a)||0},get isConstant(){return 0==this.terms.size},toString:function(){var b=\"\",c=!1;if(!a.approx(this.constant,0)||this.isConstant){if(b+=this.constant,this.isConstant)return b;c=!0}return this.terms.each(function(a,d){c&&(b+=\" + \"),b+=d+\"*\"+a,c=!0}),b},equals:function(b){return b===this?!0:b instanceof a.Expression&&b.constant===this.constant&&b.terms.equals(this.terms)},Plus:function(a,b){return a.plus(b)},Minus:function(a,b){return a.minus(b)},Times:function(a,b){return a.times(b)},Divide:function(a,b){return a.divide(b)}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.AbstractConstraint=a.inherit({initialize:function(b,c){this.hashCode=a._inc(),this.strength=b||a.Strength.required,this.weight=c||1},isEditConstraint:!1,isInequality:!1,isStayConstraint:!1,get required(){return this.strength===a.Strength.required},toString:function(){return this.strength+\" {\"+this.weight+\"} (\"+this.expression+\")\"}});var b=a.AbstractConstraint.prototype.toString,c=function(b,c,d){a.AbstractConstraint.call(this,c||a.Strength.strong,d),this.variable=b,this.expression=new a.Expression(b,-1,b.value)};a.EditConstraint=a.inherit({\"extends\":a.AbstractConstraint,initialize:function(){c.apply(this,arguments)},isEditConstraint:!0,toString:function(){return\"edit:\"+b.call(this)}}),a.StayConstraint=a.inherit({\"extends\":a.AbstractConstraint,initialize:function(){c.apply(this,arguments)},isStayConstraint:!0,toString:function(){return\"stay:\"+b.call(this)}});var d=a.Constraint=a.inherit({\"extends\":a.AbstractConstraint,initialize:function(b,c,d){a.AbstractConstraint.call(this,c,d),this.expression=b}});a.Inequality=a.inherit({\"extends\":a.Constraint,_cloneOrNewCle:function(b){return b.clone?b.clone():new a.Expression(b)},initialize:function(b,c,e,f,g){var h=b instanceof a.Expression,i=e instanceof a.Expression,j=b instanceof a.AbstractVariable,k=e instanceof a.AbstractVariable,l=\"number\"==typeof b,m=\"number\"==typeof e;if((h||l)&&k){var n=b,o=c,p=e,q=f,r=g;if(d.call(this,this._cloneOrNewCle(n),q,r),o==a.LEQ)this.expression.multiplyMe(-1),this.expression.addVariable(p);else{if(o!=a.GEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");this.expression.addVariable(p,-1)}}else if(j&&(i||m)){var n=e,o=c,p=b,q=f,r=g;if(d.call(this,this._cloneOrNewCle(n),q,r),o==a.GEQ)this.expression.multiplyMe(-1),this.expression.addVariable(p);else{if(o!=a.LEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");this.expression.addVariable(p,-1)}}else{if(h&&m){var s=b,o=c,t=e,q=f,r=g;if(d.call(this,this._cloneOrNewCle(s),q,r),o==a.LEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(t));else{if(o!=a.GEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");this.expression.addExpression(this._cloneOrNewCle(t),-1)}return this}if(l&&i){var s=e,o=c,t=b,q=f,r=g;if(d.call(this,this._cloneOrNewCle(s),q,r),o==a.GEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(t));else{if(o!=a.LEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");this.expression.addExpression(this._cloneOrNewCle(t),-1)}return this}if(h&&i){var s=b,o=c,t=e,q=f,r=g;if(d.call(this,this._cloneOrNewCle(t),q,r),o==a.GEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(s));else{if(o!=a.LEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");this.expression.addExpression(this._cloneOrNewCle(s),-1)}}else{if(h)return d.call(this,b,c,e);if(c==a.GEQ)d.call(this,new a.Expression(e),f,g),this.expression.multiplyMe(-1),this.expression.addVariable(b);else{if(c!=a.LEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");d.call(this,new a.Expression(e),f,g),this.expression.addVariable(b,-1)}}}},isInequality:!0,toString:function(){return d.prototype.toString.call(this)+\" >= 0) id: \"+this.hashCode}}),a.Equation=a.inherit({\"extends\":a.Constraint,initialize:function(b,c,e,f){if(b instanceof a.Expression&&!c||c instanceof a.Strength)d.call(this,b,c,e);else if(b instanceof a.AbstractVariable&&c instanceof a.Expression){var g=b,h=c,i=e,j=f;d.call(this,h.clone(),i,j),this.expression.addVariable(g,-1)}else if(b instanceof a.AbstractVariable&&\"number\"==typeof c){var g=b,k=c,i=e,j=f;d.call(this,new a.Expression(k),i,j),this.expression.addVariable(g,-1)}else if(b instanceof a.Expression&&c instanceof a.AbstractVariable){var h=b,g=c,i=e,j=f;d.call(this,h.clone(),i,j),this.expression.addVariable(g,-1)}else{if(!(b instanceof a.Expression||b instanceof a.AbstractVariable||\"number\"==typeof b)||!(c instanceof a.Expression||c instanceof a.AbstractVariable||\"number\"==typeof c))throw\"Bad initializer to c.Equation\";b=b instanceof a.Expression?b.clone():new a.Expression(b),c=c instanceof a.Expression?c.clone():new a.Expression(c),d.call(this,b,e,f),this.expression.addExpression(c,-1)}a.assert(this.strength instanceof a.Strength,\"_strength not set\")},toString:function(){return d.prototype.toString.call(this)+\" = 0)\"}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.EditInfo=a.inherit({initialize:function(a,b,c,d,e){this.constraint=a,this.editPlus=b,this.editMinus=c,this.prevEditConstant=d,this.index=e},toString:function(){return\"\"}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.Tableau=a.inherit({initialize:function(){this.columns=new a.HashTable,this.rows=new a.HashTable,this._infeasibleRows=new a.HashSet,this._externalRows=new a.HashSet,this._externalParametricVars=new a.HashSet},noteRemovedVariable:function(b,c){a.trace&&console.log(\"c.Tableau::noteRemovedVariable: \",b,c);var d=this.columns.get(b);c&&d&&d.delete(c)},noteAddedVariable:function(a,b){b&&this.insertColVar(a,b)},getInternalInfo:function(){var a=\"Tableau Information:\\n\";return a+=\"Rows: \"+this.rows.size,a+=\" (= \"+(this.rows.size-1)+\" constraints)\",a+=\"\\nColumns: \"+this.columns.size,a+=\"\\nInfeasible Rows: \"+this._infeasibleRows.size,a+=\"\\nExternal basic variables: \"+this._externalRows.size,a+=\"\\nExternal parametric variables: \",a+=this._externalParametricVars.size,a+=\"\\n\"},toString:function(){var a=\"Tableau:\\n\";return this.rows.each(function(b,c){a+=b,a+=\" <==> \",a+=c,a+=\"\\n\"}),a+=\"\\nColumns:\\n\",a+=this.columns,a+=\"\\nInfeasible rows: \",a+=this._infeasibleRows,a+=\"External basic variables: \",a+=this._externalRows,a+=\"External parametric variables: \",a+=this._externalParametricVars},insertColVar:function(b,c){var d=this.columns.get(b);d||(d=new a.HashSet,this.columns.set(b,d)),d.add(c)},addRow:function(b,c){a.trace&&a.fnenterprint(\"addRow: \"+b+\", \"+c),this.rows.set(b,c),c.terms.each(function(a){this.insertColVar(a,b),a.isExternal&&this._externalParametricVars.add(a)},this),b.isExternal&&this._externalRows.add(b),a.trace&&a.traceprint(\"\"+this)},removeColumn:function(b){a.trace&&a.fnenterprint(\"removeColumn:\"+b);var c=this.columns.get(b);c?(this.columns.delete(b),c.each(function(a){var c=this.rows.get(a);c.terms.delete(b)},this)):a.trace&&console.log(\"Could not find var\",b,\"in columns\"),b.isExternal&&(this._externalRows.delete(b),this._externalParametricVars.delete(b))},removeRow:function(b){a.trace&&a.fnenterprint(\"removeRow:\"+b);var c=this.rows.get(b);return a.assert(null!=c),c.terms.each(function(c){var e=this.columns.get(c);null!=e&&(a.trace&&console.log(\"removing from varset:\",b),e.delete(b))},this),this._infeasibleRows.delete(b),b.isExternal&&this._externalRows.delete(b),this.rows.delete(b),a.trace&&a.fnexitprint(\"returning \"+c),c},substituteOut:function(b,c){a.trace&&a.fnenterprint(\"substituteOut:\"+b+\", \"+c),a.trace&&a.traceprint(\"\"+this);var d=this.columns.get(b);d.each(function(a){var d=this.rows.get(a);d.substituteOut(b,c,a,this),a.isRestricted&&0>d.constant&&this._infeasibleRows.add(a)},this),b.isExternal&&(this._externalRows.add(b),this._externalParametricVars.delete(b)),this.columns.delete(b)},columnsHasKey:function(a){return!!this.columns.get(a)}})}(this.c||module.parent.exports||{}),function(a){var b=a.Tableau,c=b.prototype,d=1e-8,e=a.Strength.weak;a.SimplexSolver=a.inherit({\"extends\":a.Tableau,initialize:function(){a.Tableau.call(this),this._stayMinusErrorVars=[],this._stayPlusErrorVars=[],this._errorVars=new a.HashTable,this._markerVars=new a.HashTable,this._objective=new a.ObjectiveVariable({name:\"Z\"}),this._editVarMap=new a.HashTable,this._editVarList=[],this._slackCounter=0,this._artificialCounter=0,this._dummyCounter=0,this.autoSolve=!0,this._fNeedsSolving=!1,this._optimizeCount=0,this.rows.set(this._objective,new a.Expression),this._stkCedcns=[0],a.trace&&a.traceprint(\"objective expr == \"+this.rows.get(this._objective))},addLowerBound:function(b,c){var d=new a.Inequality(b,a.GEQ,new a.Expression(c));return this.addConstraint(d)},addUpperBound:function(b,c){var d=new a.Inequality(b,a.LEQ,new a.Expression(c));return this.addConstraint(d)},addBounds:function(a,b,c){return this.addLowerBound(a,b),this.addUpperBound(a,c),this},add:function(){for(var a=0;arguments.length>a;a++)this.addConstraint(arguments[a]);return this},addConstraint:function(b){a.trace&&a.fnenterprint(\"addConstraint: \"+b);var c=Array(2),d=Array(1),e=this.newExpression(b,c,d);if(d=d[0],this.tryAddingDirectly(e)||this.addWithArtificialVariable(e),this._fNeedsSolving=!0,b.isEditConstraint){var f=this._editVarMap.size,g=c[0],h=c[1];!g instanceof a.SlackVariable&&console.warn(\"cvEplus not a slack variable =\",g),!h instanceof a.SlackVariable&&console.warn(\"cvEminus not a slack variable =\",h),a.debug&&console.log(\"new c.EditInfo(\"+b+\", \"+g+\", \"+h+\", \"+d+\", \"+f+\")\");var i=new a.EditInfo(b,g,h,d,f);this._editVarMap.set(b.variable,i),this._editVarList[f]={v:b.variable,info:i}}return this.autoSolve&&(this.optimize(this._objective),this._setExternalVariables()),this},addConstraintNoException:function(b){a.trace&&a.fnenterprint(\"addConstraintNoException: \"+b);try{return this.addConstraint(b),!0}catch(c){return!1}},addEditVar:function(b,c){return a.trace&&a.fnenterprint(\"addEditVar: \"+b+\" @ \"+c),this.addConstraint(new a.EditConstraint(b,c||a.Strength.strong))},beginEdit:function(){return a.assert(this._editVarMap.size>0,\"_editVarMap.size > 0\"),this._infeasibleRows.clear(),this._resetStayConstants(),this._stkCedcns.push(this._editVarMap.size),this},endEdit:function(){return a.assert(this._editVarMap.size>0,\"_editVarMap.size > 0\"),this.resolve(),this._stkCedcns.pop(),this.removeEditVarsTo(this._stkCedcns[this._stkCedcns.length-1]),this},removeAllEditVars:function(){return this.removeEditVarsTo(0)},removeEditVarsTo:function(b){try{for(var c=this._editVarList.length,d=b;c>d;d++)this._editVarList[d]&&this.removeConstraint(this._editVarMap.get(this._editVarList[d].v).constraint);return this._editVarList.length=b,a.assert(this._editVarMap.size==b,\"_editVarMap.size == n\"),this}catch(e){throw new a.InternalError(\"Constraint not found in removeEditVarsTo\")}},addPointStays:function(b){return a.trace&&console.log(\"addPointStays\",b),b.forEach(function(a,b){this.addStay(a.x,e,Math.pow(2,b)),this.addStay(a.y,e,Math.pow(2,b))},this),this},addStay:function(b,c,d){var f=new a.StayConstraint(b,c||e,d||1);return this.addConstraint(f)},removeConstraint:function(a){return this.removeConstraintInternal(a),this},removeConstraintInternal:function(b){a.trace&&a.fnenterprint(\"removeConstraintInternal: \"+b),a.trace&&a.traceprint(\"\"+this),this._fNeedsSolving=!0,this._resetStayConstants();var c=this.rows.get(this._objective),d=this._errorVars.get(b);a.trace&&a.traceprint(\"eVars == \"+d),null!=d&&d.each(function(e){var f=this.rows.get(e);null==f?c.addVariable(e,-b.weight*b.strength.symbolicWeight.value,this._objective,this):c.addExpression(f,-b.weight*b.strength.symbolicWeight.value,this._objective,this),a.trace&&a.traceprint(\"now eVars == \"+d)},this);var e=this._markerVars.get(b);if(this._markerVars.delete(b),null==e)throw new a.InternalError(\"Constraint not found in removeConstraintInternal\");if(a.trace&&a.traceprint(\"Looking to remove var \"+e),null==this.rows.get(e)){var f=this.columns.get(e);a.trace&&a.traceprint(\"Must pivot -- columns are \"+f);var g=null,h=0;f.each(function(b){if(b.isRestricted){var c=this.rows.get(b),d=c.coefficientFor(e);if(a.trace&&a.traceprint(\"Marker \"+e+\"'s coefficient in \"+c+\" is \"+d),0>d){var f=-c.constant/d;(null==g||h>f||a.approx(f,h)&&b.hashCoded)&&(h=d,g=a)}},this)),null==g&&(0==f.size?this.removeColumn(e):f.escapingEach(function(a){return a!=this._objective?(g=a,{brk:!0}):void 0},this)),null!=g&&this.pivot(e,g)}if(null!=this.rows.get(e)&&this.removeRow(e),null!=d&&d.each(function(a){a!=e&&this.removeColumn(a)},this),b.isStayConstraint){if(null!=d)for(var j=0;this._stayPlusErrorVars.length>j;j++)d.delete(this._stayPlusErrorVars[j]),d.delete(this._stayMinusErrorVars[j])}else if(b.isEditConstraint){a.assert(null!=d,\"eVars != null\");var k=this._editVarMap.get(b.variable);this.removeColumn(k.editMinus),this._editVarMap.delete(b.variable)}return null!=d&&this._errorVars.delete(d),this.autoSolve&&(this.optimize(this._objective),this._setExternalVariables()),this},reset:function(){throw a.trace&&a.fnenterprint(\"reset\"),new a.InternalError(\"reset not implemented\")},resolveArray:function(b){a.trace&&a.fnenterprint(\"resolveArray\"+b);var c=b.length;this._editVarMap.each(function(a,d){var e=d.index;c>e&&this.suggestValue(a,b[e])},this),this.resolve()},resolvePair:function(a,b){this.suggestValue(this._editVarList[0].v,a),this.suggestValue(this._editVarList[1].v,b),this.resolve()},resolve:function(){a.trace&&a.fnenterprint(\"resolve()\"),this.dualOptimize(),this._setExternalVariables(),this._infeasibleRows.clear(),this._resetStayConstants()},suggestValue:function(b,c){a.trace&&console.log(\"suggestValue(\"+b+\", \"+c+\")\");var d=this._editVarMap.get(b);if(!d)throw new a.Error(\"suggestValue for variable \"+b+\", but var is not an edit variable\");var e=c-d.prevEditConstant;return d.prevEditConstant=c,this.deltaEditConstant(e,d.editPlus,d.editMinus),this},solve:function(){return this._fNeedsSolving&&(this.optimize(this._objective),this._setExternalVariables()),this},setEditedValue:function(b,c){if(!this.columnsHasKey(b)&&null==this.rows.get(b))return b.value=c,this;if(!a.approx(c,b.value)){this.addEditVar(b),this.beginEdit();try{this.suggestValue(b,c)}catch(d){throw new a.InternalError(\"Error in setEditedValue\")}this.endEdit()}return this},addVar:function(b){if(!this.columnsHasKey(b)&&null==this.rows.get(b)){try{this.addStay(b)}catch(c){throw new a.InternalError(\"Error in addVar -- required failure is impossible\")}a.trace&&a.traceprint(\"added initial stay on \"+b)}return this},getInternalInfo:function(){var a=c.getInternalInfo.call(this);return a+=\"\\nSolver info:\\n\",a+=\"Stay Error Variables: \",a+=this._stayPlusErrorVars.length+this._stayMinusErrorVars.length,a+=\" (\"+this._stayPlusErrorVars.length+\" +, \",a+=this._stayMinusErrorVars.length+\" -)\\n\",a+=\"Edit Variables: \"+this._editVarMap.size,a+=\"\\n\"},getDebugInfo:function(){return\"\"+this+this.getInternalInfo()+\"\\n\"},toString:function(){var a=c.getInternalInfo.call(this);return a+=\"\\n_stayPlusErrorVars: \",a+=\"[\"+this._stayPlusErrorVars+\"]\",a+=\"\\n_stayMinusErrorVars: \",a+=\"[\"+this._stayMinusErrorVars+\"]\",a+=\"\\n\",a+=\"_editVarMap:\\n\"+this._editVarMap,a+=\"\\n\"},getConstraintMap:function(){return this._markerVars},addWithArtificialVariable:function(b){a.trace&&a.fnenterprint(\"addWithArtificialVariable: \"+b);var c=new a.SlackVariable({value:++this._artificialCounter,prefix:\"a\"}),d=new a.ObjectiveVariable({name:\"az\"}),e=b.clone();a.trace&&a.traceprint(\"before addRows:\\n\"+this),this.addRow(d,e),this.addRow(c,b),a.trace&&a.traceprint(\"after addRows:\\n\"+this),this.optimize(d);var f=this.rows.get(d);if(a.trace&&a.traceprint(\"azTableauRow.constant == \"+f.constant),!a.approx(f.constant,0))throw this.removeRow(d),this.removeColumn(c),new a.RequiredFailure;var g=this.rows.get(c);if(null!=g){if(g.isConstant)return this.removeRow(c),this.removeRow(d),void 0;var h=g.anyPivotableVariable();this.pivot(h,c)}a.assert(null==this.rows.get(c),\"rowExpression(av) == null\"),this.removeColumn(c),this.removeRow(d)},tryAddingDirectly:function(b){a.trace&&a.fnenterprint(\"tryAddingDirectly: \"+b);var c=this.chooseSubject(b);return null==c?(a.trace&&a.fnexitprint(\"returning false\"),!1):(b.newSubject(c),this.columnsHasKey(c)&&this.substituteOut(c,b),this.addRow(c,b),a.trace&&a.fnexitprint(\"returning true\"),!0)},chooseSubject:function(b){a.trace&&a.fnenterprint(\"chooseSubject: \"+b);var c=null,d=!1,e=!1,f=b.terms,g=f.escapingEach(function(a,b){if(d){if(!a.isRestricted&&!this.columnsHasKey(a))return{retval:a}}else if(a.isRestricted){if(!e&&!a.isDummy&&0>b){var f=this.columns.get(a);(null==f||1==f.size&&this.columnsHasKey(this._objective))&&(c=a,e=!0)}}else c=a,d=!0},this);if(g&&void 0!==g.retval)return g.retval;if(null!=c)return c;var h=0,g=f.escapingEach(function(a,b){return a.isDummy?(this.columnsHasKey(a)||(c=a,h=b),void 0):{retval:null}},this);if(g&&void 0!==g.retval)return g.retval;if(!a.approx(b.constant,0))throw new a.RequiredFailure;return h>0&&b.multiplyMe(-1),c},deltaEditConstant:function(b,c,d){a.trace&&a.fnenterprint(\"deltaEditConstant :\"+b+\", \"+c+\", \"+d);var e=this.rows.get(c);if(null!=e)return e.constant+=b,0>e.constant&&this._infeasibleRows.add(c),void 0;var f=this.rows.get(d);if(null!=f)return f.constant+=-b,0>f.constant&&this._infeasibleRows.add(d),void 0;var g=this.columns.get(d);g||console.log(\"columnVars is null -- tableau is:\\n\"+this),g.each(function(a){var c=this.rows.get(a),e=c.coefficientFor(d);c.constant+=e*b,a.isRestricted&&0>c.constant&&this._infeasibleRows.add(a)},this)},dualOptimize:function(){a.trace&&a.fnenterprint(\"dualOptimize:\");for(var b=this.rows.get(this._objective);this._infeasibleRows.size;){var c=this._infeasibleRows.values()[0];this._infeasibleRows.delete(c);var d=null,e=this.rows.get(c);if(e&&0>e.constant){var g,f=Number.MAX_VALUE,h=e.terms;if(h.each(function(c,e){if(e>0&&c.isPivotable){var h=b.coefficientFor(c);g=h/e,(f>g||a.approx(g,f)&&c.hashCodef.constant&&f.multiplyMe(-1),a.trace&&a.fnexitprint(\"returning \"+f),f},optimize:function(b){a.trace&&a.fnenterprint(\"optimize: \"+b),a.trace&&a.traceprint(\"\"+this),this._optimizeCount++;var c=this.rows.get(b);a.assert(null!=c,\"zRow != null\");for(var g,h,e=null,f=null;;){if(g=0,h=c.terms,h.escapingEach(function(a,b){return a.isPivotable&&g>b?(g=b,e=a,{brk:1}):void 0},this),g>=-d)return;a.trace&&console.log(\"entryVar:\",e,\"objectiveCoeff:\",g);var i=Number.MAX_VALUE,j=this.columns.get(e),k=0;if(j.each(function(b){if(a.trace&&a.traceprint(\"Checking \"+b),b.isPivotable){var c=this.rows.get(b),d=c.coefficientFor(e);a.trace&&a.traceprint(\"pivotable, coeff = \"+d),0>d&&(k=-c.constant/d,(i>k||a.approx(k,i)&&b.hashCodeb;b++){var c=this.rows.get(this._stayPlusErrorVars[b]);null==c&&(c=this.rows.get(this._stayMinusErrorVars[b])),null!=c&&(c.constant=0)}},_setExternalVariables:function(){a.trace&&a.fnenterprint(\"_setExternalVariables:\"),a.trace&&a.traceprint(\"\"+this),this._externalParametricVars.each(function(b){null!=this.rows.get(b)?a.trace&&console.log(\"Error: variable\"+b+\" in _externalParametricVars is basic\"):b.value=0},this),this._externalRows.each(function(a){var b=this.rows.get(a);a.value!=b.constant&&(a.value=b.constant)},this),this._fNeedsSolving=!1,this.onsolved()},onsolved:function(){},insertErrorVar:function(b,c){a.trace&&a.fnenterprint(\"insertErrorVar:\"+b+\", \"+c);var d=this._errorVars.get(c);d||(d=new a.HashSet,this._errorVars.set(b,d)),d.add(c)}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.Timer=a.inherit({initialize:function(){this.isRunning=!1,this._elapsedMs=0},start:function(){return this.isRunning=!0,this._startReading=new Date,this},stop:function(){return this.isRunning=!1,this._elapsedMs+=new Date-this._startReading,this},reset:function(){return this.isRunning=!1,this._elapsedMs=0,this},elapsedTime:function(){return this.isRunning?(this._elapsedMs+(new Date-this._startReading))/1e3:this._elapsedMs/1e3}})}(this.c||module.parent.exports||{}),__cassowary_parser=function(){function a(a){return'\"'+a.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\x08/g,\"\\\\b\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\f/g,\"\\\\f\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x07\\x0B\\x0E-\\x1F\\x80-\\uFFFF]/g,escape)+'\"'}var b={parse:function(b,c){function k(a){g>e||(e>g&&(g=e,h=[]),h.push(a))}function l(){var a,b,c,d,f;if(d=e,f=e,a=z(),null!==a){if(c=m(),null!==c)for(b=[];null!==c;)b.push(c),c=m();else b=null;null!==b?(c=z(),null!==c?a=[a,b,c]:(a=null,e=f)):(a=null,e=f)}else a=null,e=f;return null!==a&&(a=function(a,b){return b}(d,a[1])),null===a&&(e=d),a}function m(){var a,b,c,d;return c=e,d=e,a=P(),null!==a?(b=s(),null!==b?a=[a,b]:(a=null,e=d)):(a=null,e=d),null!==a&&(a=function(a,b){return b}(c,a[0])),null===a&&(e=c),a}function n(){var a;return b.length>e?(a=b.charAt(e),e++):(a=null,0===f&&k(\"any character\")),a}function o(){var a;return/^[a-zA-Z]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,0===f&&k(\"[a-zA-Z]\")),null===a&&(36===b.charCodeAt(e)?(a=\"$\",e++):(a=null,0===f&&k('\"$\"')),null===a&&(95===b.charCodeAt(e)?(a=\"_\",e++):(a=null,0===f&&k('\"_\"')))),a}function p(){var a;return f++,/^[\\t\\x0B\\f \\xA0\\uFEFF]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,0===f&&k(\"[\\\\t\\\\x0B\\\\f \\\\xA0\\\\uFEFF]\")),f--,0===f&&null===a&&k(\"whitespace\"),a}function q(){var a;return/^[\\n\\r\\u2028\\u2029]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,0===f&&k(\"[\\\\n\\\\r\\\\u2028\\\\u2029]\")),a}function r(){var a;return f++,10===b.charCodeAt(e)?(a=\"\\n\",e++):(a=null,0===f&&k('\"\\\\n\"')),null===a&&(\"\\r\\n\"===b.substr(e,2)?(a=\"\\r\\n\",e+=2):(a=null,0===f&&k('\"\\\\r\\\\n\"')),null===a&&(13===b.charCodeAt(e)?(a=\"\\r\",e++):(a=null,0===f&&k('\"\\\\r\"')),null===a&&(8232===b.charCodeAt(e)?(a=\"\\u2028\",e++):(a=null,0===f&&k('\"\\\\u2028\"')),null===a&&(8233===b.charCodeAt(e)?(a=\"\\u2029\",e++):(a=null,0===f&&k('\"\\\\u2029\"')))))),f--,0===f&&null===a&&k(\"end of line\"),a}function s(){var a,c,d;return d=e,a=z(),null!==a?(59===b.charCodeAt(e)?(c=\";\",e++):(c=null,0===f&&k('\";\"')),null!==c?a=[a,c]:(a=null,e=d)):(a=null,e=d),null===a&&(d=e,a=y(),null!==a?(c=r(),null!==c?a=[a,c]:(a=null,e=d)):(a=null,e=d),null===a&&(d=e,a=z(),null!==a?(c=t(),null!==c?a=[a,c]:(a=null,e=d)):(a=null,e=d))),a}function t(){var a,c;return c=e,f++,b.length>e?(a=b.charAt(e),e++):(a=null,0===f&&k(\"any character\")),f--,null===a?a=\"\":(a=null,e=c),a}function u(){var a;return f++,a=v(),null===a&&(a=x()),f--,0===f&&null===a&&k(\"comment\"),a}function v(){var a,c,d,g,h,i,j;if(h=e,\"/*\"===b.substr(e,2)?(a=\"/*\",e+=2):(a=null,0===f&&k('\"/*\"')),null!==a){for(c=[],i=e,j=e,f++,\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==d;)c.push(d),i=e,j=e,f++,\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==c?(\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),null!==d?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)}else a=null,e=h;return a}function w(){var a,c,d,g,h,i,j;if(h=e,\"/*\"===b.substr(e,2)?(a=\"/*\",e+=2):(a=null,0===f&&k('\"/*\"')),null!==a){for(c=[],i=e,j=e,f++,\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),null===d&&(d=q()),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==d;)c.push(d),i=e,j=e,f++,\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),null===d&&(d=q()),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==c?(\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),null!==d?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)}else a=null,e=h;return a}function x(){var a,c,d,g,h,i,j;if(h=e,\"//\"===b.substr(e,2)?(a=\"//\",e+=2):(a=null,0===f&&k('\"//\"')),null!==a){for(c=[],i=e,j=e,f++,d=q(),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==d;)c.push(d),i=e,j=e,f++,d=q(),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==c?a=[a,c]:(a=null,e=h)}else a=null,e=h;return a}function y(){var a,b;for(a=[],b=p(),null===b&&(b=w(),null===b&&(b=x()));null!==b;)a.push(b),b=p(),null===b&&(b=w(),null===b&&(b=x()));return a}function z(){var a,b;for(a=[],b=p(),null===b&&(b=r(),null===b&&(b=u()));null!==b;)a.push(b),b=p(),null===b&&(b=r(),null===b&&(b=u()));return a}function A(){var a,b;return b=e,a=C(),null===a&&(a=B()),null!==a&&(a=function(a,b){return{type:\"NumericLiteral\",value:b}}(b,a)),null===a&&(e=b),a}function B(){var a,c,d;if(d=e,/^[0-9]/.test(b.charAt(e))?(c=b.charAt(e),e++):(c=null,0===f&&k(\"[0-9]\")),null!==c)for(a=[];null!==c;)a.push(c),/^[0-9]/.test(b.charAt(e))?(c=b.charAt(e),e++):(c=null,0===f&&k(\"[0-9]\"));else a=null;return null!==a&&(a=function(a,b){return parseInt(b.join(\"\"))}(d,a)),null===a&&(e=d),a}function C(){var a,c,d,g,h;return g=e,h=e,a=B(),null!==a?(46===b.charCodeAt(e)?(c=\".\",e++):(c=null,0===f&&k('\".\"')),null!==c?(d=B(),null!==d?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)):(a=null,e=h),null!==a&&(a=function(a,b){return parseFloat(b.join(\"\"))}(g,a)),null===a&&(e=g),a}function D(){var a,c,d,g;if(g=e,/^[\\-+]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,0===f&&k(\"[\\\\-+]\")),a=null!==a?a:\"\",null!==a){if(/^[0-9]/.test(b.charAt(e))?(d=b.charAt(e),e++):(d=null,0===f&&k(\"[0-9]\")),null!==d)for(c=[];null!==d;)c.push(d),/^[0-9]/.test(b.charAt(e))?(d=b.charAt(e),e++):(d=null,0===f&&k(\"[0-9]\"));else c=null;null!==c?a=[a,c]:(a=null,e=g)}else a=null,e=g;return a}function E(){var a,b;return f++,b=e,a=F(),null!==a&&(a=function(a,b){return b}(b,a)),null===a&&(e=b),f--,0===f&&null===a&&k(\"identifier\"),a}function F(){var a,b,c,d,g;if(f++,d=e,g=e,a=o(),null!==a){for(b=[],c=o();null!==c;)b.push(c),c=o();null!==b?a=[a,b]:(a=null,e=g)}else a=null,e=g;return null!==a&&(a=function(a,b,c){return b+c.join(\"\")}(d,a[0],a[1])),null===a&&(e=d),f--,0===f&&null===a&&k(\"identifier\"),a}function G(){var a,c,d,g,h,i,j;return i=e,a=E(),null!==a&&(a=function(a,b){return{type:\"Variable\",name:b}}(i,a)),null===a&&(e=i),null===a&&(a=A(),null===a&&(i=e,j=e,40===b.charCodeAt(e)?(a=\"(\",e++):(a=null,0===f&&k('\"(\"')),null!==a?(c=z(),null!==c?(d=P(),null!==d?(g=z(),null!==g?(41===b.charCodeAt(e)?(h=\")\",e++):(h=null,0===f&&k('\")\"')),null!==h?a=[a,c,d,g,h]:(a=null,e=j)):(a=null,e=j)):(a=null,e=j)):(a=null,e=j)):(a=null,e=j),null!==a&&(a=function(a,b){return b}(i,a[2])),null===a&&(e=i))),a}function H(){var a,b,c,d,f;return a=G(),null===a&&(d=e,f=e,a=I(),null!==a?(b=z(),null!==b?(c=H(),null!==c?a=[a,b,c]:(a=null,e=f)):(a=null,e=f)):(a=null,e=f),null!==a&&(a=function(a,b,c){return{type:\"UnaryExpression\",operator:b,expression:c}}(d,a[0],a[2])),null===a&&(e=d)),a}function I(){var a;return 43===b.charCodeAt(e)?(a=\"+\",e++):(a=null,0===f&&k('\"+\"')),null===a&&(45===b.charCodeAt(e)?(a=\"-\",e++):(a=null,0===f&&k('\"-\"')),null===a&&(33===b.charCodeAt(e)?(a=\"!\",e++):(a=null,0===f&&k('\"!\"')))),a}function J(){var a,b,c,d,f,g,h,i,j;if(h=e,i=e,a=H(),null!==a){for(b=[],j=e,c=z(),null!==c?(d=K(),null!==d?(f=z(),null!==f?(g=H(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==c;)b.push(c),j=e,c=z(),null!==c?(d=K(),null!==d?(f=z(),null!==f?(g=H(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==b?a=[a,b]:(a=null,e=i)}else a=null,e=i;return null!==a&&(a=function(a,b,c){for(var d=b,e=0;c.length>e;e++)d={type:\"MultiplicativeExpression\",operator:c[e][1],left:d,right:c[e][3]};return d}(h,a[0],a[1])),null===a&&(e=h),a}function K(){var a;return 42===b.charCodeAt(e)?(a=\"*\",e++):(a=null,0===f&&k('\"*\"')),null===a&&(47===b.charCodeAt(e)?(a=\"/\",e++):(a=null,0===f&&k('\"/\"'))),a}function L(){var a,b,c,d,f,g,h,i,j;if(h=e,i=e,a=J(),null!==a){for(b=[],j=e,c=z(),null!==c?(d=M(),null!==d?(f=z(),null!==f?(g=J(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==c;)b.push(c),j=e,c=z(),null!==c?(d=M(),null!==d?(f=z(),null!==f?(g=J(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==b?a=[a,b]:(a=null,e=i)}else a=null,e=i;return null!==a&&(a=function(a,b,c){for(var d=b,e=0;c.length>e;e++)d={type:\"AdditiveExpression\",operator:c[e][1],left:d,right:c[e][3]};return d}(h,a[0],a[1])),null===a&&(e=h),a}function M(){var a;return 43===b.charCodeAt(e)?(a=\"+\",e++):(a=null,0===f&&k('\"+\"')),null===a&&(45===b.charCodeAt(e)?(a=\"-\",e++):(a=null,0===f&&k('\"-\"'))),a}function N(){var a,b,c,d,f,g,h,i,j;if(h=e,i=e,a=L(),null!==a){for(b=[],j=e,c=z(),null!==c?(d=O(),null!==d?(f=z(),null!==f?(g=L(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==c;)b.push(c),j=e,c=z(),null!==c?(d=O(),null!==d?(f=z(),null!==f?(g=L(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==b?a=[a,b]:(a=null,e=i)}else a=null,e=i;return null!==a&&(a=function(a,b,c){for(var d=b,e=0;c.length>e;e++)d={type:\"Inequality\",operator:c[e][1],left:d,right:c[e][3]};return d}(h,a[0],a[1])),null===a&&(e=h),a}function O(){var a;return\"<=\"===b.substr(e,2)?(a=\"<=\",e+=2):(a=null,0===f&&k('\"<=\"')),null===a&&(\">=\"===b.substr(e,2)?(a=\">=\",e+=2):(a=null,0===f&&k('\">=\"')),null===a&&(60===b.charCodeAt(e)?(a=\"<\",e++):(a=null,0===f&&k('\"<\"')),null===a&&(62===b.charCodeAt(e)?(a=\">\",e++):(a=null,0===f&&k('\">\"'))))),a}function P(){var a,c,d,g,h,i,j,l,m;if(j=e,l=e,a=N(),null!==a){for(c=[],m=e,d=z(),null!==d?(\"==\"===b.substr(e,2)?(g=\"==\",e+=2):(g=null,0===f&&k('\"==\"')),null!==g?(h=z(),null!==h?(i=N(),null!==i?d=[d,g,h,i]:(d=null,e=m)):(d=null,e=m)):(d=null,e=m)):(d=null,e=m);null!==d;)c.push(d),m=e,d=z(),null!==d?(\"==\"===b.substr(e,2)?(g=\"==\",e+=2):(g=null,0===f&&k('\"==\"')),null!==g?(h=z(),null!==h?(i=N(),null!==i?d=[d,g,h,i]:(d=null,e=m)):(d=null,e=m)):(d=null,e=m)):(d=null,e=m);null!==c?a=[a,c]:(a=null,e=l)}else a=null,e=l;return null!==a&&(a=function(a,b,c){for(var d=b,e=0;c.length>e;e++)d={type:\"Equality\",operator:c[e][1],left:d,right:c[e][3]};return d}(j,a[0],a[1])),null===a&&(e=j),a}function Q(a){a.sort();for(var b=null,c=[],d=0;a.length>d;d++)a[d]!==b&&(c.push(a[d]),b=a[d]);return c}function R(){for(var a=1,c=1,d=!1,f=0;Math.max(e,g)>f;f++){var h=b.charAt(f);\"\\n\"===h?(d||a++,c=1,d=!1):\"\\r\"===h||\"\\u2028\"===h||\"\\u2029\"===h?(a++,c=1,d=!0):(c++,d=!1)}return{line:a,column:c}}var d={start:l,Statement:m,SourceCharacter:n,IdentifierStart:o,WhiteSpace:p,LineTerminator:q,LineTerminatorSequence:r,EOS:s,EOF:t,Comment:u,MultiLineComment:v,MultiLineCommentNoLineTerminator:w,SingleLineComment:x,_:y,__:z,Literal:A,Integer:B,Real:C,SignedInteger:D,Identifier:E,IdentifierName:F,PrimaryExpression:G,UnaryExpression:H,UnaryOperator:I,MultiplicativeExpression:J,MultiplicativeOperator:K,AdditiveExpression:L,AdditiveOperator:M,InequalityExpression:N,InequalityOperator:O,LinearExpression:P};if(void 0!==c){if(void 0===d[c])throw Error(\"Invalid rule name: \"+a(c)+\".\")}else c=\"start\";var e=0,f=0,g=0,h=[],S=d[c]();if(null===S||e!==b.length){var T=Math.max(e,g),U=b.length>T?b.charAt(T):null,V=R();throw new this.SyntaxError(Q(h),U,T,V.line,V.column)}return S},toSource:function(){return this._source}};return b.SyntaxError=function(b,c,d,e,f){function g(b,c){var d,e;switch(b.length){case 0:d=\"end of input\";break;case 1:d=b[0];break;default:d=b.slice(0,b.length-1).join(\", \")+\" or \"+b[b.length-1]}return e=c?a(c):\"end of input\",\"Expected \"+d+\" but \"+e+\" found.\"}this.name=\"SyntaxError\",this.expected=b,this.found=c,this.message=g(b,c),this.offset=d,this.line=e,this.column=f},b.SyntaxError.prototype=Error.prototype,b}();\n}).call(\n (typeof module != \"undefined\") ?\n (module.compiled = true && module) : this\n);\n"]} \ No newline at end of file +{"version":3,"sources":["../node_modules/browserify/node_modules/browser-pack/_prelude.js","autolayout.es6","../node_modules/cassowary/bin/c.js"],"names":["_processEqualSpacer","context","stackView","equalSpacerIndex","name","lineIndex","constraints","push","view1","attr1","horizontal","Attribute","WIDTH","HEIGHT","relation","Relation","EQU","view2","attr2","priority","multiplier","undefined","constant","CONST","orientation","Orientation","HORIZONTAL","RIGHT","LEFT","VERTICAL","BOTTOM","TOP","ZINDEX","_processProportionalSpacer","proportionalSpacerIndex","_processStackView","subView","viewName","orientations","stack","processedOrientations","type","i","j","subViews","length","_processCascade","cascade","view","item","Array","isArray","hasOwnProperty","equalSpacing","n","attribute","variable","VARIABLE","Error","_getConst","value","vr","c","Variable","this","_solver","addConstraint","StayConstraint","Strength","required","_getSubView","_subViews","SubView","solver","_type","_parentSubView","_getSpacing","constraint","index","_spacingVars","_spacingExpr","addEditVar","minus","suggestValue","_spacing","_addConstraint","call","strength","_getAttr","plus","times","defaultPriorityStrength","Equation","GEQ","Inequality","LEQ","_compareSpacing","old","newz","require","NOTANATTRIBUTE","CENTERX","CENTERY","Priority","REQUIRED","DEFAULTHIGH","DEFAULTLOW","parser","peg$subclass","child","parent","ctor","constructor","prototype","SyntaxError","message","expected","found","offset","line","column","parse","input","peg$reportedPos","peg$computePosDetails","pos","advance","details","startPos","endPos","p","ch","charAt","seenCR","peg$cachedPos","peg$cachedPosDetails","peg$fail","peg$maxFailPos","peg$currPos","peg$maxFailExpected","peg$buildException","cleanupExpected","sort","a","b","description","splice","buildMessage","stringEscape","s","hex","charCodeAt","toString","toUpperCase","replace","expectedDesc","foundDesc","expectedDescs","slice","join","posDetails","peg$parsevisualFormatString","s0","s1","s2","s3","s4","s5","s6","s7","peg$parseorientation","peg$FAILED","peg$c2","peg$silentFails","peg$c3","peg$c0","peg$c1","peg$parsesuperview","peg$parseconnection","peg$parseview","peg$c5","peg$c6","peg$c7","peg$c8","peg$c9","peg$c10","peg$c11","peg$c12","peg$c13","peg$c14","peg$c15","peg$parseviewName","peg$parsepredicateListWithParens","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","peg$parsepredicateList","peg$c21","peg$c22","peg$c23","peg$c24","peg$parsesimplePredicate","peg$parsenumber","peg$c25","peg$c26","peg$c27","peg$parsepredicate","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$parserelation","peg$parseobjectOfPredicate","peg$c33","peg$c34","peg$parsepriority","peg$c35","substr","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","peg$c41","peg$c42","peg$c43","peg$c44","peg$parseconstant","peg$c45","test","peg$c46","peg$c47","peg$c48","peg$c49","peg$c50","substring","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","extend","dst","arguments","k","peg$result","options","peg$startRuleFunctions","visualFormatString","peg$startRuleFunction","o","superto","views","tosuper","concat","apply","orient","predicates","predicateList","$parserOffset","ps","map","r","digits","parseInt","f","v","decimals","parseFloat","startRule","parserExt","peg$parsecomments","peg$parsecascadedViews","peg$parseequalSpacingPredicateList","peg$parsepercentage","peg$parseequalSpacingPredicate","peg$c58","peg$c59","peg$c60","peg$c61","peg$c62","peg$c63","peg$c64","peg$c65","peg$parseviewPredicate","peg$c66","peg$c67","peg$c68","peg$c69","peg$c70","peg$c71","peg$c72","peg$parseattribute","peg$parsemultiplier","peg$parseconstantExpr","peg$c73","peg$c74","peg$c75","peg$c76","peg$c77","peg$c78","peg$c79","peg$c80","peg$c81","peg$c82","peg$c83","peg$c84","peg$c85","peg$c86","peg$c87","peg$c88","peg$c89","peg$c90","peg$c91","peg$c92","peg$c93","peg$c94","peg$c95","peg$c96","peg$c97","peg$c98","peg$c99","peg$c100","peg$c101","peg$c102","peg$c103","peg$c104","peg$c105","peg$c106","peg$c107","peg$c108","peg$c109","peg$c110","peg$c111","peg$c112","peg$c113","peg$c114","peg$c115","comments","cascadedViews","connection","vn","m","metaInfoCategories","VisualFormat","visualFormat","extended","indexOf","res","outFormat","lineSeperator","parseLine","err","source","lines","parseOptions","strict","split","trim","prefix","key","metaInfo","category","prefixedCategory","items","viewport","aspectRatio","height","width","widths","isNaN","heights","spacing","JSON","_name","_attr","left","top","stringify","toJSON","_getAttrValue","_intrinsicWidth","attr","resolve","_intrinsicHeight","divide","View","SimplexSolver","setSpacing","setSize","addConstraints","intrinsicWidth","intrinsicHeight","AutoLayout","module","exports","bind","Object","defineProperty","Function","enumerable","configurable","writable","HTMLElement","d","tagName","e","g","__super__","h","debug","trace","verbose","traceAdded","GC","inherit","initialize","_t","create","l","__proto__","created","decorate","upgrade","document","createElement","own","getOwnPropertyDescriptor","get","set","getOwnPropertyNames","forEach","traceprint","console","log","fnenterprint","fnexitprint","assert","InternalError","Expression","approx","Math","abs","_inc","parseJSON","load","hashCode","keys","HashTable","size","_store","_keyStrMap","_deleted","clear","_compact","_compactThreshold","_perhapsCompact","_size","delete","each","escapingEach","retval","brk","clone","equals","HashSet","storage","add","values","has","data","fromJSON","_description",{"end":{"file":"?","comments_before":[],"nlb":false,"endpos":6565,"endcol":6125,"endline":16,"pos":6554,"col":6114,"line":16,"value":"description","type":"name"},"start":{"file":"?","comments_before":[],"nlb":false,"endpos":6565,"endcol":6125,"endline":16,"pos":6554,"col":6114,"line":16,"value":"description","type":"name"},"name":"description"},"extends","ConstraintNotFound","NonExpression","NotEnoughStays","RequiredFailure","TooDifficult","SymbolicWeight","symbolicWeight","isRequired","strong","medium","weak","AbstractVariable","isDummy","isExternal","isPivotable","isRestricted","_init","_prefix","_map","DummyVariable","ObjectiveVariable","SlackVariable","Point","_x","_y","x","y","terms","setVariable","initializeFromHash","multiplyMe","isConstant","addExpression","addVariable","noteRemovedVariable","noteAddedVariable","anyPivotableVariable","substituteOut","changeSubject","newSubject","coefficientFor","Plus","Minus","Times","Divide","AbstractConstraint","weight","isEditConstraint","isInequality","isStayConstraint","expression","EditConstraint","Constraint","_cloneOrNewCle","q","t","EditInfo","editPlus","editMinus","prevEditConstant","Tableau","columns","rows","_infeasibleRows","_externalRows","_externalParametricVars","insertColVar","getInternalInfo","addRow","removeColumn","removeRow","columnsHasKey","_stayMinusErrorVars","_stayPlusErrorVars","_errorVars","_markerVars","_objective","_editVarMap","_editVarList","_slackCounter","_artificialCounter","_dummyCounter","autoSolve","_fNeedsSolving","_optimizeCount","_stkCedcns","addLowerBound","addUpperBound","addBounds","newExpression","tryAddingDirectly","addWithArtificialVariable","warn","info","optimize","_setExternalVariables","addConstraintNoException","beginEdit","_resetStayConstants","endEdit","pop","removeEditVarsTo","removeAllEditVars","removeConstraint","addPointStays","addStay","pow","removeConstraintInternal","pivot","reset","resolveArray","resolvePair","dualOptimize","deltaEditConstant","solve","setEditedValue","addVar","getDebugInfo","getConstraintMap","chooseSubject","Number","MAX_VALUE","insertErrorVar","time","timeEnd","onsolved","Timer","isRunning","_elapsedMs","start","_startReading","Date","stop","elapsedTime","__cassowary_parser","escape","z","P","u","w","A","C","B","D","E","F","G","H","I","operator","J","K","right","L","M","N","O","Q","R","max","Statement","SourceCharacter","IdentifierStart","WhiteSpace","LineTerminator","LineTerminatorSequence","EOS","EOF","Comment","MultiLineComment","MultiLineCommentNoLineTerminator","SingleLineComment","_","__","Literal","Integer","Real","SignedInteger","Identifier","IdentifierName","PrimaryExpression","UnaryExpression","UnaryOperator","MultiplicativeExpression","MultiplicativeOperator","AdditiveExpression","AdditiveOperator","InequalityExpression","InequalityOperator","LinearExpression","S","T","U","V","toSource","_source","compiled"],"mappings":"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","file":"bundle.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { visualFormatString: peg$parsevisualFormatString },\n peg$startRuleFunction = peg$parsevisualFormatString,\n\n peg$c0 = peg$FAILED,\n peg$c1 = null,\n peg$c2 = \":\",\n peg$c3 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c4 = [],\n peg$c5 = function(o, superto, view, views, tosuper) { return {\n orientation: o ? o[0] : 'horizontal',\n cascade: (superto || []).concat(\n [view],\n [].concat.apply([], views),\n (tosuper || [])\n )\n }\n },\n peg$c6 = \"H\",\n peg$c7 = { type: \"literal\", value: \"H\", description: \"\\\"H\\\"\" },\n peg$c8 = \"V\",\n peg$c9 = { type: \"literal\", value: \"V\", description: \"\\\"V\\\"\" },\n peg$c10 = function(orient) { return orient == 'H' ? 'horizontal' : 'vertical' },\n peg$c11 = \"|\",\n peg$c12 = { type: \"literal\", value: \"|\", description: \"\\\"|\\\"\" },\n peg$c13 = function() { return { view: null } },\n peg$c14 = \"[\",\n peg$c15 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n peg$c16 = \"]\",\n peg$c17 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n peg$c18 = function(view, predicates) { return extend(view, predicates ? { constraints: predicates } : {}) },\n peg$c19 = \"-\",\n peg$c20 = { type: \"literal\", value: \"-\", description: \"\\\"-\\\"\" },\n peg$c21 = function(predicateList) { return predicateList },\n peg$c22 = function() { return [{ relation: 'equ', constant: 'default', $parserOffset: offset() }] },\n peg$c23 = \"\",\n peg$c24 = function() { return [{ relation: 'equ', constant: 0, $parserOffset: offset() }] },\n peg$c25 = function(n) { return [{ relation: 'equ', constant: n, $parserOffset: offset() }] },\n peg$c26 = \"(\",\n peg$c27 = { type: \"literal\", value: \"(\", description: \"\\\"(\\\"\" },\n peg$c28 = \",\",\n peg$c29 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c30 = \")\",\n peg$c31 = { type: \"literal\", value: \")\", description: \"\\\")\\\"\" },\n peg$c32 = function(p, ps) { return [p].concat(ps.map(function(p){ return p[1] })) },\n peg$c33 = \"@\",\n peg$c34 = { type: \"literal\", value: \"@\", description: \"\\\"@\\\"\" },\n peg$c35 = function(r, o, p) { return extend({ relation: 'equ' }, (r || {}), o, (p ? p[1]: {})) },\n peg$c36 = \"==\",\n peg$c37 = { type: \"literal\", value: \"==\", description: \"\\\"==\\\"\" },\n peg$c38 = function() { return { relation: 'equ', $parserOffset: offset() } },\n peg$c39 = \"<=\",\n peg$c40 = { type: \"literal\", value: \"<=\", description: \"\\\"<=\\\"\" },\n peg$c41 = function() { return { relation: 'leq', $parserOffset: offset() } },\n peg$c42 = \">=\",\n peg$c43 = { type: \"literal\", value: \">=\", description: \"\\\">=\\\"\" },\n peg$c44 = function() { return { relation: 'geq', $parserOffset: offset() } },\n peg$c45 = /^[0-9]/,\n peg$c46 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c47 = function(digits) { return { priority: parseInt(digits.join(\"\"), 10) } },\n peg$c48 = function(n) { return { constant: n } },\n peg$c49 = /^[a-zA-Z_]/,\n peg$c50 = { type: \"class\", value: \"[a-zA-Z_]\", description: \"[a-zA-Z_]\" },\n peg$c51 = /^[a-zA-Z0-9_]/,\n peg$c52 = { type: \"class\", value: \"[a-zA-Z0-9_]\", description: \"[a-zA-Z0-9_]\" },\n peg$c53 = function(f, v) { return { view: f + v } },\n peg$c54 = \".\",\n peg$c55 = { type: \"literal\", value: \".\", description: \"\\\".\\\"\" },\n peg$c56 = function(digits, decimals) { return parseFloat(digits.concat(\".\").concat(decimals).join(\"\"), 10); },\n peg$c57 = function(digits) { return parseInt(digits.join(\"\"), 10); },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsevisualFormatString() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseorientation();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c2;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c0;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c0;\n }\n if (s1 === peg$FAILED) {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parsesuperview();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseconnection();\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c0;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c0;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseview();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsesuperview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$c1;\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c5(s1, s2, s3, s4, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseorientation() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 72) {\n s1 = peg$c6;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s1 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 86) {\n s1 = peg$c8;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c10(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsesuperview() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s1 = peg$c11;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c12); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c13();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseview() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c14;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseviewName();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsepredicateListWithParens();\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c18(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseconnection() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c19;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepredicateList();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s3 = peg$c19;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c21(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c19;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c20); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c22();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$c23;\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parsepredicateList() {\n var s0;\n\n s0 = peg$parsesimplePredicate();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepredicateListWithParens();\n }\n\n return s0;\n }\n\n function peg$parsesimplePredicate() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c25(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsepredicateListWithParens() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c26;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c27); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepredicate();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c28;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c28;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s4 = peg$c30;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c31); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c32(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsepredicate() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parserelation();\n if (s1 === peg$FAILED) {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseobjectOfPredicate();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s4 = peg$c33;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepriority();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c35(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parserelation() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c36) {\n s1 = peg$c36;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c38();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c39) {\n s1 = peg$c39;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c41();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c42) {\n s1 = peg$c42;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c44();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseobjectOfPredicate() {\n var s0;\n\n s0 = peg$parseconstant();\n if (s0 === peg$FAILED) {\n s0 = peg$parseviewName();\n }\n\n return s0;\n }\n\n function peg$parsepriority() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c47(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseconstant() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c48(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseviewName() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n if (peg$c49.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c49.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c50); }\n }\n }\n } else {\n s2 = peg$c0;\n }\n if (s2 !== peg$FAILED) {\n s2 = input.substring(s1, peg$currPos);\n }\n s1 = s2;\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = [];\n if (peg$c51.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c51.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n }\n if (s3 !== peg$FAILED) {\n s3 = input.substring(s2, peg$currPos);\n }\n s2 = s3;\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c53(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c54;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n }\n } else {\n s3 = peg$c0;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c56(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c45.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c46); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c57(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n\n function extend(dst) {\n for (var i = 1; i < arguments.length; i++) {\n for (var k in arguments[i]) {\n dst[k] = arguments[i][k];\n }\n }\n return dst;\n }\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n }\n }\n\n return {\n SyntaxError: SyntaxError,\n parse: parse\n };\n})();\n\nvar parserExt = (function() {\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { visualFormatString: peg$parsevisualFormatString },\n peg$startRuleFunction = peg$parsevisualFormatString,\n\n peg$c0 = peg$FAILED,\n peg$c1 = null,\n peg$c2 = \":\",\n peg$c3 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c4 = [],\n peg$c5 = function(o, superto, view, views, tosuper, comments) { return {\n orientation: o ? o[0] : 'horizontal',\n cascade: (superto || []).concat(\n [view],\n [].concat.apply([], views),\n (tosuper || [])\n )\n }\n },\n peg$c6 = \"HV\",\n peg$c7 = { type: \"literal\", value: \"HV\", description: \"\\\"HV\\\"\" },\n peg$c8 = function() { return 'horzvert' },\n peg$c9 = \"H\",\n peg$c10 = { type: \"literal\", value: \"H\", description: \"\\\"H\\\"\" },\n peg$c11 = function() { return 'horizontal' },\n peg$c12 = \"V\",\n peg$c13 = { type: \"literal\", value: \"V\", description: \"\\\"V\\\"\" },\n peg$c14 = function() { return 'vertical' },\n peg$c15 = \"Z\",\n peg$c16 = { type: \"literal\", value: \"Z\", description: \"\\\"Z\\\"\" },\n peg$c17 = function() { return 'zIndex' },\n peg$c18 = \" \",\n peg$c19 = { type: \"literal\", value: \" \", description: \"\\\" \\\"\" },\n peg$c20 = \"//\",\n peg$c21 = { type: \"literal\", value: \"//\", description: \"\\\"//\\\"\" },\n peg$c22 = { type: \"any\", description: \"any character\" },\n peg$c23 = \"|\",\n peg$c24 = { type: \"literal\", value: \"|\", description: \"\\\"|\\\"\" },\n peg$c25 = function() { return { view: null } },\n peg$c26 = \"[\",\n peg$c27 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n peg$c28 = \"]\",\n peg$c29 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n peg$c30 = function(view, predicates, cascadedViews) { return extend(extend(view, predicates ? { constraints: predicates } : {}), cascadedViews ? {\n cascade: cascadedViews\n } : {}) },\n peg$c31 = function(views, connection) { return [].concat([].concat.apply([], views),[connection]); },\n peg$c32 = \"->\",\n peg$c33 = { type: \"literal\", value: \"->\", description: \"\\\"->\\\"\" },\n peg$c34 = function() { return [{ relation: 'none', $parserOffset: offset() }] },\n peg$c35 = \"-\",\n peg$c36 = { type: \"literal\", value: \"-\", description: \"\\\"-\\\"\" },\n peg$c37 = function(predicateList) { return predicateList },\n peg$c38 = function() { return [{ relation: 'equ', constant: 'default', $parserOffset: offset() }] },\n peg$c39 = \"~\",\n peg$c40 = { type: \"literal\", value: \"~\", description: \"\\\"~\\\"\" },\n peg$c41 = function() { return [{ relation: 'equ', equalSpacing: true, $parserOffset: offset() }] },\n peg$c42 = \"\",\n peg$c43 = function() { return [{ relation: 'equ', constant: 0, $parserOffset: offset() }] },\n peg$c44 = function(p) { return [{ relation: 'equ', multiplier: p.multiplier, $parserOffset: offset() }] },\n peg$c45 = function(n) { return [{ relation: 'equ', constant: n, $parserOffset: offset() }] },\n peg$c46 = \"(\",\n peg$c47 = { type: \"literal\", value: \"(\", description: \"\\\"(\\\"\" },\n peg$c48 = \",\",\n peg$c49 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c50 = \")\",\n peg$c51 = { type: \"literal\", value: \")\", description: \"\\\")\\\"\" },\n peg$c52 = function(p, ps) { return [p].concat(ps.map(function(p){ return p[1] })) },\n peg$c53 = \"@\",\n peg$c54 = { type: \"literal\", value: \"@\", description: \"\\\"@\\\"\" },\n peg$c55 = function(r, o, p) { return extend({ relation: 'equ' }, (r || {}), o, (p ? p[1]: {})) },\n peg$c56 = function(r, o, p) { return extend({ relation: 'equ', equalSpacing: true }, (r || {}), o, (p ? p[1]: {})) },\n peg$c57 = \"==\",\n peg$c58 = { type: \"literal\", value: \"==\", description: \"\\\"==\\\"\" },\n peg$c59 = function() { return { relation: 'equ', $parserOffset: offset() } },\n peg$c60 = \"<=\",\n peg$c61 = { type: \"literal\", value: \"<=\", description: \"\\\"<=\\\"\" },\n peg$c62 = function() { return { relation: 'leq', $parserOffset: offset() } },\n peg$c63 = \">=\",\n peg$c64 = { type: \"literal\", value: \">=\", description: \"\\\">=\\\"\" },\n peg$c65 = function() { return { relation: 'geq', $parserOffset: offset() } },\n peg$c66 = /^[0-9]/,\n peg$c67 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c68 = function(digits) { return { priority: parseInt(digits.join(\"\"), 10) } },\n peg$c69 = function(n) { return { constant: n } },\n peg$c70 = \"%\",\n peg$c71 = { type: \"literal\", value: \"%\", description: \"\\\"%\\\"\" },\n peg$c72 = function(n) { return { view: null, multiplier: n / 100 } },\n peg$c73 = function(vn, a, m, c) { return { view: vn.view, attribute: a ? a : undefined, multiplier: m ? m : 1, constant: c ? c : undefined } },\n peg$c74 = \".left\",\n peg$c75 = { type: \"literal\", value: \".left\", description: \"\\\".left\\\"\" },\n peg$c76 = function() { return 'left'},\n peg$c77 = \".right\",\n peg$c78 = { type: \"literal\", value: \".right\", description: \"\\\".right\\\"\" },\n peg$c79 = function() { return 'right'},\n peg$c80 = \".top\",\n peg$c81 = { type: \"literal\", value: \".top\", description: \"\\\".top\\\"\" },\n peg$c82 = function() { return 'top'},\n peg$c83 = \".bottom\",\n peg$c84 = { type: \"literal\", value: \".bottom\", description: \"\\\".bottom\\\"\" },\n peg$c85 = function() { return 'bottom'},\n peg$c86 = \".width\",\n peg$c87 = { type: \"literal\", value: \".width\", description: \"\\\".width\\\"\" },\n peg$c88 = function() { return 'width'},\n peg$c89 = \".height\",\n peg$c90 = { type: \"literal\", value: \".height\", description: \"\\\".height\\\"\" },\n peg$c91 = function() { return 'height'},\n peg$c92 = \".centerX\",\n peg$c93 = { type: \"literal\", value: \".centerX\", description: \"\\\".centerX\\\"\" },\n peg$c94 = function() { return 'centerX'},\n peg$c95 = \".centerY\",\n peg$c96 = { type: \"literal\", value: \".centerY\", description: \"\\\".centerY\\\"\" },\n peg$c97 = function() { return 'centerY'},\n peg$c98 = \"/\",\n peg$c99 = { type: \"literal\", value: \"/\", description: \"\\\"/\\\"\" },\n peg$c100 = function(n) { return 1 / n; },\n peg$c101 = \"*\",\n peg$c102 = { type: \"literal\", value: \"*\", description: \"\\\"*\\\"\" },\n peg$c103 = function(n) { return n; },\n peg$c104 = function(n) { return -n; },\n peg$c105 = \"+\",\n peg$c106 = { type: \"literal\", value: \"+\", description: \"\\\"+\\\"\" },\n peg$c107 = /^[a-zA-Z_]/,\n peg$c108 = { type: \"class\", value: \"[a-zA-Z_]\", description: \"[a-zA-Z_]\" },\n peg$c109 = /^[a-zA-Z0-9_]/,\n peg$c110 = { type: \"class\", value: \"[a-zA-Z0-9_]\", description: \"[a-zA-Z0-9_]\" },\n peg$c111 = function(f, v) { return { view: f + v } },\n peg$c112 = \".\",\n peg$c113 = { type: \"literal\", value: \".\", description: \"\\\".\\\"\" },\n peg$c114 = function(digits, decimals) { return parseFloat(digits.concat(\".\").concat(decimals).join(\"\"), 10); },\n peg$c115 = function(digits) { return parseInt(digits.join(\"\"), 10); },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsevisualFormatString() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseorientation();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s3 = peg$c2;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c0;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c0;\n }\n if (s1 === peg$FAILED) {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parsesuperview();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseconnection();\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c0;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c0;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseview();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$currPos;\n s6 = peg$parseconnection();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsesuperview();\n if (s7 !== peg$FAILED) {\n s6 = [s6, s7];\n s5 = s6;\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n } else {\n peg$currPos = s5;\n s5 = peg$c0;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$c1;\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsecomments();\n if (s6 === peg$FAILED) {\n s6 = peg$c1;\n }\n if (s6 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c5(s1, s2, s3, s4, s5, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseorientation() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c6) {\n s1 = peg$c6;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c7); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c8();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 72) {\n s1 = peg$c9;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c11();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 86) {\n s1 = peg$c12;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c14();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 90) {\n s1 = peg$c15;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c16); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c17();\n }\n s0 = s1;\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsecomments() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n if (input.charCodeAt(peg$currPos) === 32) {\n s2 = peg$c18;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (input.charCodeAt(peg$currPos) === 32) {\n s2 = peg$c18;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n }\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c20) {\n s2 = peg$c20;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (input.length > peg$currPos) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c22); }\n }\n }\n if (s3 !== peg$FAILED) {\n s1 = [s1, s2, s3];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsesuperview() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 124) {\n s1 = peg$c23;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c24); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c25();\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseview() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c26;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c27); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseviewName();\n if (s2 !== peg$FAILED) {\n s3 = peg$parsepredicateListWithParens();\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsecascadedViews();\n if (s4 === peg$FAILED) {\n s4 = peg$c1;\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s5 = peg$c28;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c30(s2, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsecascadedViews() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s1 = peg$c2;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$parseconnection();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseview();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$parseconnection();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseview();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n }\n } else {\n s2 = peg$c0;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseconnection();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c31(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseconnection() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c32) {\n s1 = peg$c32;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c33); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c34();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c35;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepredicateList();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s3 = peg$c35;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c37(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c35;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c38();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 126) {\n s1 = peg$c39;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseequalSpacingPredicateList();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 126) {\n s3 = peg$c39;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c37(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 126) {\n s1 = peg$c39;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c41();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$c42;\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c43();\n }\n s0 = s1;\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsepredicateList() {\n var s0;\n\n s0 = peg$parsesimplePredicate();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepredicateListWithParens();\n }\n\n return s0;\n }\n\n function peg$parsesimplePredicate() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsepercentage();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c44(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c45(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsepredicateListWithParens() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c46;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c47); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepredicate();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c48;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c48;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsepredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s4 = peg$c50;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c52(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsepredicate() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parserelation();\n if (s1 === peg$FAILED) {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseobjectOfPredicate();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s4 = peg$c53;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c54); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepriority();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c55(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseequalSpacingPredicateList() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 40) {\n s1 = peg$c46;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c47); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseequalSpacingPredicate();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c48;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parseequalSpacingPredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c48;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c49); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parseequalSpacingPredicate();\n if (s6 !== peg$FAILED) {\n s5 = [s5, s6];\n s4 = s5;\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n } else {\n peg$currPos = s4;\n s4 = peg$c0;\n }\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 41) {\n s4 = peg$c50;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c51); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c52(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseequalSpacingPredicate() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n s1 = peg$parserelation();\n if (s1 === peg$FAILED) {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseobjectOfPredicate();\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 64) {\n s4 = peg$c53;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c54); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsepriority();\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c0;\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c56(s1, s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parserelation() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c57) {\n s1 = peg$c57;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c59();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c60) {\n s1 = peg$c60;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c62();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c63) {\n s1 = peg$c63;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c64); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c65();\n }\n s0 = s1;\n }\n }\n\n return s0;\n }\n\n function peg$parseobjectOfPredicate() {\n var s0;\n\n s0 = peg$parsepercentage();\n if (s0 === peg$FAILED) {\n s0 = peg$parseconstant();\n if (s0 === peg$FAILED) {\n s0 = peg$parseviewPredicate();\n }\n }\n\n return s0;\n }\n\n function peg$parsepriority() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c66.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c66.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c68(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseconstant() {\n var s0, s1;\n\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c69(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parsepercentage() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n s1 = peg$parsenumber();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 37) {\n s2 = peg$c70;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c71); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c72(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseviewPredicate() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseviewName();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseattribute();\n if (s2 === peg$FAILED) {\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsemultiplier();\n if (s3 === peg$FAILED) {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseconstantExpr();\n if (s4 === peg$FAILED) {\n s4 = peg$c1;\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c73(s1, s2, s3, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parseattribute() {\n var s0, s1;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c74) {\n s1 = peg$c74;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c75); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c76();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c77) {\n s1 = peg$c77;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c78); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c79();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c80) {\n s1 = peg$c80;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c81); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c82();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c83) {\n s1 = peg$c83;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c85();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c86) {\n s1 = peg$c86;\n peg$currPos += 6;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c87); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c88();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 7) === peg$c89) {\n s1 = peg$c89;\n peg$currPos += 7;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c90); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c91();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8) === peg$c92) {\n s1 = peg$c92;\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c93); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c94();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 8) === peg$c95) {\n s1 = peg$c95;\n peg$currPos += 8;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c96); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c97();\n }\n s0 = s1;\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsemultiplier() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 47) {\n s1 = peg$c98;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c99); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c100(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 42) {\n s1 = peg$c101;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c102); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c103(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n }\n\n return s0;\n }\n\n function peg$parseconstantExpr() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c35;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c104(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 43) {\n s1 = peg$c105;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c106); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsenumber();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c103(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n }\n\n return s0;\n }\n\n function peg$parseviewName() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = [];\n if (peg$c107.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c108); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c107.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c108); }\n }\n }\n } else {\n s2 = peg$c0;\n }\n if (s2 !== peg$FAILED) {\n s2 = input.substring(s1, peg$currPos);\n }\n s1 = s2;\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = [];\n if (peg$c109.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c110); }\n }\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c109.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c110); }\n }\n }\n if (s3 !== peg$FAILED) {\n s3 = input.substring(s2, peg$currPos);\n }\n s2 = s3;\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c111(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n\n return s0;\n }\n\n function peg$parsenumber() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n if (peg$c66.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c66.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c112;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n if (peg$c66.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n if (peg$c66.test(input.charAt(peg$currPos))) {\n s4 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n }\n } else {\n s3 = peg$c0;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c114(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c0;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n if (peg$c66.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c66.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n }\n } else {\n s1 = peg$c0;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c115(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n\n function extend(dst) {\n for (var i = 1; i < arguments.length; i++) {\n for (var k in arguments[i]) {\n dst[k] = arguments[i][k];\n }\n }\n return dst;\n }\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n }\n }\n\n return {\n SyntaxError: SyntaxError,\n parse: parse\n };\n})();\n\nconst Orientation = {\n HORIZONTAL: 1,\n VERTICAL: 2,\n ZINDEX: 4\n};\n\n/**\n * Helper function that inserts equal spacers (~).\n * @private\n */\nfunction _processEqualSpacer(context, stackView) {\n\n // Determine unique name for the spacer\n context.equalSpacerIndex = context.equalSpacerIndex || 1;\n const name = '_~' + context.lineIndex + ':' + context.equalSpacerIndex + '~';\n if (context.equalSpacerIndex > 1) {\n\n // Ensure that all spacers have the same width/height\n context.constraints.push({\n view1: '_~' + context.lineIndex + ':1~',\n attr1: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n relation: context.relation.relation || Relation.EQU,\n view2: name,\n attr2: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n priority: context.relation.priority\n });\n }\n context.equalSpacerIndex++;\n\n // Enforce proportional width/height\n if (context.relation.multiplier && (context.relation.multiplier !== 1)) {\n context.constraints.push({\n view1: name,\n attr1: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n relation: context.relation.relation || Relation.EQU,\n view2: null,\n attr2: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n priority: context.relation.priority,\n multiplier: context.relation.multiplier\n });\n context.relation.multiplier = undefined;\n }\n else if (context.relation.constant) {\n context.constraints.push({\n view1: name,\n attr1: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n relation: Relation.EQU,\n view2: null,\n attr2: Attribute.CONST,\n priority: context.relation.priority,\n constant: context.relation.constant\n });\n context.relation.constant = undefined;\n }\n\n // Add constraint\n switch (context.orientation) {\n case Orientation.HORIZONTAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.RIGHT : Attribute.LEFT;\n context.attr2 = Attribute.LEFT;\n break;\n case Orientation.VERTICAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.BOTTOM : Attribute.TOP;\n context.attr2 = Attribute.TOP;\n break;\n case Orientation.ZINDEX:\n context.attr1 = Attribute.ZINDEX;\n context.attr2 = Attribute.ZINDEX;\n context.relation.constant = (context.view1 !== stackView) ? 'default' : 0;\n break;\n }\n context.constraints.push({\n view1: context.view1,\n attr1: context.attr1,\n relation: context.relation.relation,\n view2: name,\n attr2: context.attr2,\n priority: context.relation.priority\n });\n context.view1 = name;\n}\n\n/**\n * Helper function that inserts proportional spacers (-12%-).\n * @private\n */\nfunction _processProportionalSpacer(context, stackView) {\n context.proportionalSpacerIndex = context.proportionalSpacerIndex || 1;\n const name = '_-' + context.lineIndex + ':' + context.proportionalSpacerIndex + '-';\n context.proportionalSpacerIndex++;\n context.constraints.push({\n view1: name,\n attr1: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n relation: context.relation.relation || Relation.EQU,\n view2: null, // or relative to the stackView... food for thought\n attr2: context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT,\n priority: context.relation.priority,\n multiplier: context.relation.multiplier\n });\n context.relation.multiplier = undefined;\n\n // Add constraint\n switch (context.orientation) {\n case Orientation.HORIZONTAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.RIGHT : Attribute.LEFT;\n context.attr2 = Attribute.LEFT;\n break;\n case Orientation.VERTICAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.BOTTOM : Attribute.TOP;\n context.attr2 = Attribute.TOP;\n break;\n case Orientation.ZINDEX:\n context.attr1 = Attribute.ZINDEX;\n context.attr2 = Attribute.ZINDEX;\n context.relation.constant = (context.view1 !== stackView) ? 'default' : 0;\n break;\n }\n context.constraints.push({\n view1: context.view1,\n attr1: context.attr1,\n relation: context.relation.relation,\n view2: name,\n attr2: context.attr2,\n priority: context.relation.priority\n });\n context.view1 = name;\n}\n\n/**\n * In case of a stack-view, set constraints for opposite orientations\n * @private\n */\nfunction _processStackView(context, name, subView) {\n let viewName;\n for (var orientation = 1; orientation <= 4; orientation *= 2) {\n if ((subView.orientations & orientation) &&\n (subView.stack.orientation !== orientation) &&\n !(subView.stack.processedOrientations & orientation)) {\n subView.stack.processedOrientations = subView.stack.processedOrientations | orientation;\n viewName = viewName || {\n name: name,\n type: 'stack'\n };\n for (var i = 0, j = subView.stack.subViews.length; i < j; i++) {\n if (orientation === Orientation.ZINDEX) {\n context.constraints.push({\n view1: viewName,\n attr1: Attribute.ZINDEX,\n relation: Relation.EQU,\n view2: subView.stack.subViews[i],\n attr2: Attribute.ZINDEX\n });\n }\n else {\n context.constraints.push({\n view1: viewName,\n attr1: (orientation === Orientation.VERTICAL) ? Attribute.HEIGHT : Attribute.WIDTH,\n relation: Relation.EQU,\n view2: subView.stack.subViews[i],\n attr2: (orientation === Orientation.VERTICAL) ? Attribute.HEIGHT : Attribute.WIDTH\n });\n context.constraints.push({\n view1: viewName,\n attr1: (orientation === Orientation.VERTICAL) ? Attribute.TOP : Attribute.LEFT,\n relation: Relation.EQU,\n view2: subView.stack.subViews[i],\n attr2: (orientation === Orientation.VERTICAL) ? Attribute.TOP : Attribute.LEFT\n });\n }\n }\n }\n }\n}\n\n/**\n * Recursive helper function that processes the cascaded data.\n * @private\n */\nfunction _processCascade(context, cascade, stackView) {\n const subViews = [];\n let subView;\n if (stackView) {\n cascade.push({view: stackView});\n }\n for (var i = 0; i < cascade.length; i++) {\n context.item = cascade[i];\n if (!Array.isArray(context.item) && context.item.hasOwnProperty('view')) {\n context.view1 = context.view2;\n context.view2 = context.item.view;\n if ((context.view1 !== undefined) && (context.view2 !== undefined) && context.relation) {\n if (context.item.view !== stackView) {\n subViews.push(context.item.view);\n subView = context.subViews[context.item.view];\n if (!subView) {\n subView = {orientations: 0};\n context.subViews[context.item.view] = subView;\n }\n subView.orientations = subView.orientations | context.orientation;\n if (subView.stack) {\n _processStackView(context, context.item.view, subView);\n }\n }\n if (context.relation.equalSpacing) {\n _processEqualSpacer(context, stackView);\n }\n if (context.relation.multiplier) {\n _processProportionalSpacer(context, stackView);\n }\n if (context.relation.relation !== 'none') {\n switch (context.orientation) {\n case Orientation.HORIZONTAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.RIGHT : Attribute.LEFT;\n context.attr2 = (context.view2 !== stackView) ? Attribute.LEFT : Attribute.RIGHT;\n break;\n case Orientation.VERTICAL:\n context.attr1 = (context.view1 !== stackView) ? Attribute.BOTTOM : Attribute.TOP;\n context.attr2 = (context.view2 !== stackView) ? Attribute.TOP : Attribute.BOTTOM;\n break;\n case Orientation.ZINDEX:\n context.attr1 = Attribute.ZINDEX;\n context.attr2 = Attribute.ZINDEX;\n context.relation.constant = (context.view1 !== stackView) ? 'default' : 0;\n break;\n }\n context.constraints.push({\n view1: context.view1,\n attr1: context.attr1,\n relation: context.relation.relation,\n view2: context.view2,\n attr2: context.attr2,\n multiplier: context.relation.multiplier,\n constant: ((context.relation.constant === 'default') || !context.relation.constant) ? context.relation.constant : -context.relation.constant,\n priority: context.relation.priority\n //,variable: context.relation.variable\n });\n }\n }\n context.relation = undefined;\n\n // process view size constraints\n if (context.item.constraints) {\n for (var n = 0; n < context.item.constraints.length; n++) {\n context.attr1 = context.horizontal ? Attribute.WIDTH : Attribute.HEIGHT;\n context.attr2 = (context.item.constraints[n].view || context.item.constraints[n].multiplier) ?\n (context.item.constraints[n].attribute || context.attr1) :\n (context.item.constraints[n].variable ? Attribute.VARIABLE : Attribute.CONST);\n context.constraints.push({\n view1: context.item.view,\n attr1: context.attr1,\n relation: context.item.constraints[n].relation,\n view2: context.item.constraints[n].view,\n attr2: context.attr2,\n multiplier: context.item.constraints[n].multiplier,\n constant: context.item.constraints[n].constant,\n priority: context.item.constraints[n].priority\n //,variable: context.item.constraints[n].variable\n });\n }\n }\n\n // Process cascaded data (child stack-views)\n if (context.item.cascade) {\n _processCascade(context, context.item.cascade, context.item.view);\n }\n }\n else {\n context.relation = context.item[0];\n }\n }\n\n if (stackView) {\n subView = context.subViews[stackView];\n if (subView.stack) {\n throw new Error('A stack with name \"' + stackView + '\"\" already exists');\n }\n subView.stack = {\n orientation: context.orientation,\n processedOrientations: context.orientation,\n subViews: subViews\n };\n _processStackView(context, stackView, subView);\n }\n}\n\nconst metaInfoCategories = [\n 'viewport',\n 'spacing',\n 'colors',\n 'shapes',\n 'widths',\n 'heights'\n];\n\n/**\n * VisualFormat\n *\n * @namespace VisualFormat\n */\nclass VisualFormat {\n\n /**\n * Parses a single line of vfl into an array of constraint definitions.\n *\n * When the visual-format could not be succesfully parsed an exception is thrown containing\n * additional info about the parse error and column position.\n *\n * @param {String} visualFormat Visual format string (cannot contain line-endings!).\n * @param {Object} [options] Configuration options.\n * @param {Boolean} [options.extended] When set to true uses the extended syntax (default: false).\n * @param {String} [options.outFormat] Output format (`constraints` or `raw`) (default: `constraints`).\n * @param {Number} [options.lineIndex] Line-index used when auto generating equal-spacing constraints.\n * @return {Array} Array of constraint definitions.\n */\n static parseLine(visualFormat, options) {\n if ((visualFormat.length === 0) ||\n (options && options.extended && (visualFormat.indexOf('//') === 0))) {\n return [];\n }\n const res = (options && options.extended) ? parserExt.parse(visualFormat) : parser.parse(visualFormat);\n if (options && options.outFormat === 'raw') {\n return [res];\n }\n var context = {\n constraints: [],\n lineIndex: (options ? options.lineIndex : undefined) || 1,\n subViews: (options ? options.subViews : undefined) || {}\n };\n switch (res.orientation) {\n case 'horizontal':\n context.orientation = Orientation.HORIZONTAL;\n context.horizontal = true;\n _processCascade(context, res.cascade, null);\n break;\n case 'vertical':\n context.orientation = Orientation.VERTICAL;\n _processCascade(context, res.cascade, null);\n break;\n case 'horzvert':\n context.orientation = Orientation.HORIZONTAL;\n context.horizontal = true;\n _processCascade(context, res.cascade, null);\n context = {\n constraints: context.constraints,\n lineIndex: context.lineIndex,\n subViews: context.subViews,\n orientation: Orientation.VERTICAL\n };\n _processCascade(context, res.cascade, null);\n break;\n case 'zIndex':\n context.orientation = Orientation.ZINDEX;\n _processCascade(context, res.cascade, null);\n break;\n }\n return context.constraints;\n }\n\n /**\n * Parses one or more visual format strings into an array of constraint definitions.\n *\n * When the visual-format could not be succesfully parsed an exception is thrown containing\n * additional info about the parse error and column position.\n *\n * @param {String|Array} visualFormat One or more visual format strings.\n * @param {Object} [options] Configuration options.\n * @param {Boolean} [options.extended] When set to true uses the extended syntax (default: false).\n * @param {Boolean} [options.strict] When set to false trims any leading/trailing spaces and ignores empty lines (default: true).\n * @param {String} [options.lineSeperator] String that defines the end of a line (default `\\n`).\n * @param {String} [options.outFormat] Output format (`constraints` or `raw`) (default: `constraints`).\n * @return {Array} Array of constraint definitions.\n */\n static parse(visualFormat, options) {\n const lineSeperator = (options && options.lineSeperator) ? options.lineSeperator : '\\n';\n if (!Array.isArray(visualFormat) && (visualFormat.indexOf(lineSeperator) < 0)) {\n try {\n return this.parseLine(visualFormat, options);\n }\n catch (err) {\n err.source = visualFormat;\n throw err;\n }\n }\n\n // Decompose visual-format into an array of strings, and within those strings\n // search for line-endings, and treat each line as a seperate visual-format.\n visualFormat = Array.isArray(visualFormat) ? visualFormat : [visualFormat];\n let lines;\n let constraints = [];\n let lineIndex = 0;\n let line;\n const parseOptions = {\n lineIndex: lineIndex,\n extended: (options && options.extended),\n strict: (options && (options.strict !== undefined)) ? options.strict : true,\n outFormat: options ? options.outFormat : undefined,\n subViews: {}\n };\n try {\n for (var i = 0; i < visualFormat.length; i++) {\n lines = visualFormat[i].split(lineSeperator);\n for (var j = 0; j < lines.length; j++) {\n line = lines[j];\n lineIndex++;\n parseOptions.lineIndex = lineIndex;\n if (!parseOptions.strict) {\n line = line.trim();\n }\n if (parseOptions.strict || line.length) {\n constraints = constraints.concat(this.parseLine(line, parseOptions));\n }\n }\n }\n }\n catch (err) {\n err.source = line;\n err.line = lineIndex;\n throw err;\n }\n return constraints;\n }\n\n /**\n * Parses meta information from the comments in the VFL.\n *\n * Additional meta information can be specified in the comments\n * for previewing and rendering purposes. For instance, the view-port\n * aspect-ratio, sub-view widths and colors, can be specified. The\n * following example renders three colored circles in the visual-format editor:\n *\n * ```vfl\n * //viewport aspect-ratio:3/1 max-height:300\n * //colors red:#FF0000 green:#00FF00 blue:#0000FF\n * //shapes red:circle green:circle blue:circle\n * H:|-[row:[red(green,blue)]-[green]-[blue]]-|\n * V:|[row]|\n * ```\n *\n * Supported categories and properties:\n *\n * |Category|Property|Example|\n * |--------|--------|-------|\n * |`viewport`|`aspect-ratio:{width}/{height}`|`//viewport aspect-ratio:16/9`|\n * ||`width:[{number}/intrinsic]`|`//viewport width:10`|\n * ||`height:[{number}/intrinsic]`|`//viewport height:intrinsic`|\n * ||`min-width:{number}`|\n * ||`max-width:{number}`|\n * ||`min-height:{number}`|\n * ||`max-height:{number}`|\n * |`spacing`|`[{number}/array]`|`//spacing:8` or `//spacing:[10, 20, 5]`|\n * |`widths`|`{view-name}:[{number}/intrinsic]`|`//widths subview1:100`|\n * |`heights`|`{view-name}:[{number}/intrinsic]`|`//heights subview1:intrinsic`|\n * |`colors`|`{view-name}:{color}`|`//colors redview:#FF0000 blueview:#00FF00`|\n * |`shapes`|`{view-name}:[circle/square]`|`//shapes avatar:circle`|\n *\n * @param {String|Array} visualFormat One or more visual format strings.\n * @param {Object} [options] Configuration options.\n * @param {String} [options.lineSeperator] String that defines the end of a line (default `\\n`).\n * @param {String} [options.prefix] When specified, also processes the categories using that prefix (e.g. \"-dev-viewport max-height:10\").\n * @return {Object} meta-info\n */\n static parseMetaInfo(visualFormat, options) {\n const lineSeperator = (options && options.lineSeperator) ? options.lineSeperator : '\\n';\n const prefix = options ? options.prefix : undefined;\n visualFormat = Array.isArray(visualFormat) ? visualFormat : [visualFormat];\n const metaInfo = {};\n var key;\n for (var k = 0; k < visualFormat.length; k++) {\n const lines = visualFormat[k].split(lineSeperator);\n for (var i = 0; i < lines.length; i++) {\n const line = lines[i];\n for (var c = 0; c < metaInfoCategories.length; c++) {\n for (var s = 0; s < (prefix ? 2 : 1); s++) {\n const category = metaInfoCategories[c];\n const prefixedCategory = ((s === 0) ? '' : prefix) + category;\n if (line.indexOf('//' + prefixedCategory + ' ') === 0) {\n const items = line.substring(3 + prefixedCategory.length).split(' ');\n for (var j = 0; j < items.length; j++) {\n const item = items[j].split(':');\n metaInfo[category] = metaInfo[category] || {};\n metaInfo[category][item[0]] = (item.length > 1) ? item[1] : '';\n }\n }\n else if (line.indexOf('//' + prefixedCategory + ':') === 0) {\n metaInfo[category] = line.substring(3 + prefixedCategory.length);\n }\n }\n }\n }\n }\n if (metaInfo.viewport) {\n const viewport = metaInfo.viewport;\n var aspectRatio = viewport['aspect-ratio'];\n if (aspectRatio) {\n aspectRatio = aspectRatio.split('/');\n viewport['aspect-ratio'] = parseInt(aspectRatio[0]) / parseInt(aspectRatio[1]);\n }\n if (viewport.height !== undefined) {\n viewport.height = (viewport.height === 'intrinsic') ? true : parseInt(viewport.height);\n }\n if (viewport.width !== undefined) {\n viewport.width = (viewport.width === 'intrinsic') ? true : parseInt(viewport.width);\n }\n if (viewport['max-height'] !== undefined) {\n viewport['max-height'] = parseInt(viewport['max-height']);\n }\n if (viewport['max-width'] !== undefined) {\n viewport['max-width'] = parseInt(viewport['max-width']);\n }\n if (viewport['min-height'] !== undefined) {\n viewport['min-height'] = parseInt(viewport['min-height']);\n }\n if (viewport['min-width'] !== undefined) {\n viewport['min-width'] = parseInt(viewport['min-width']);\n }\n }\n if (metaInfo.widths) {\n for (key in metaInfo.widths) {\n const width = (metaInfo.widths[key] === 'intrinsic') ? true : parseInt(metaInfo.widths[key]);\n metaInfo.widths[key] = width;\n if ((width === undefined) || isNaN(width)) {\n delete metaInfo.widths[key];\n }\n }\n }\n if (metaInfo.heights) {\n for (key in metaInfo.heights) {\n const height = (metaInfo.heights[key] === 'intrinsic') ? true : parseInt(metaInfo.heights[key]);\n metaInfo.heights[key] = height;\n if ((height === undefined) || isNaN(height)) {\n delete metaInfo.heights[key];\n }\n }\n }\n if (metaInfo.spacing) {\n const value = JSON.parse(metaInfo.spacing);\n metaInfo.spacing = value;\n if ((value === undefined) || isNaN(value)) {\n delete metaInfo.spacing;\n }\n }\n return metaInfo;\n }\n}\n\nclass SubView {\n constructor(options) {\n this._name = options.name;\n this._type = options.type;\n this._solver = options.solver;\n this._attr = {};\n if (!options.name) {\n if (true) {\n this._attr[Attribute.LEFT] = new c.Variable();\n this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.LEFT], c.Strength.required));\n this._attr[Attribute.TOP] = new c.Variable();\n this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.TOP], c.Strength.required));\n this._attr[Attribute.ZINDEX] = new c.Variable();\n this._solver.addConstraint(new c.StayConstraint(this._attr[Attribute.ZINDEX], c.Strength.required));\n }\n else {\n this._attr[Attribute.LEFT] = new kiwi.Variable();\n this._solver.addConstraint(new kiwi.Constraint(this._attr[Attribute.LEFT], kiwi.Operator.Eq, 0));\n this._attr[Attribute.TOP] = new kiwi.Variable();\n this._solver.addConstraint(new kiwi.Constraint(this._attr[Attribute.TOP], kiwi.Operator.Eq, 0));\n this._attr[Attribute.ZINDEX] = new kiwi.Variable();\n this._solver.addConstraint(new kiwi.Constraint(this._attr[Attribute.ZINDEX], kiwi.Operator.Eq, 0));\n }\n }\n }\n toJSON() {\n return {\n name: this.name,\n left: this.left,\n top: this.top,\n width: this.width,\n height: this.height\n };\n }\n toString() {\n JSON.stringify(this.toJSON(), undefined, 2);\n }\n\n /**\n * Name of the sub-view.\n * @readonly\n * @type {String}\n */\n get name() {\n return this._name;\n }\n\n /**\n * Left value (`Attribute.LEFT`).\n * @readonly\n * @type {Number}\n */\n get left() {\n return this._getAttrValue(Attribute.LEFT);\n }\n\n /**\n * Right value (`Attribute.RIGHT`).\n * @readonly\n * @type {Number}\n */\n get right() {\n return this._getAttrValue(Attribute.RIGHT);\n }\n\n /**\n * Width value (`Attribute.WIDTH`).\n * @type {Number}\n */\n get width() {\n return this._getAttrValue(Attribute.WIDTH);\n }\n\n /**\n * Height value (`Attribute.HEIGHT`).\n * @readonly\n * @type {Number}\n */\n get height() {\n return this._getAttrValue(Attribute.HEIGHT);\n }\n\n /**\n * Intrinsic width of the sub-view.\n *\n * Use this property to explicitely set the width of the sub-view, e.g.:\n * ```javascript\n * var view = new AutoLayout.View(AutoLayout.VisualFormat.parse('|[child1][child2]|'), {\n * width: 500\n * });\n * view.subViews.child1.intrinsicWidth = 100;\n * console.log('child2 width: ' + view.subViews.child2.width); // 400\n * ```\n *\n * @type {Number}\n */\n get intrinsicWidth() {\n return this._intrinsicWidth;\n }\n set intrinsicWidth(value) {\n if ((value !== undefined) && (value !== this._intrinsicWidth)) {\n const attr = this._getAttr(Attribute.WIDTH);\n if (this._intrinsicWidth === undefined) {\n if (true) {\n this._solver.addEditVar(attr, new c.Strength('required', this._name ? 998 : 999, 1000, 1000));\n }\n else {\n this._solver.addEditVariable(attr, kiwi.Strength.create(this._name ? 998 : 999, 1000, 1000));\n }\n }\n this._intrinsicWidth = value;\n this._solver.suggestValue(attr, value);\n if (true) {\n this._solver.resolve();\n }\n else {\n this._solver.updateVariables();\n }\n }\n }\n\n /**\n * Intrinsic height of the sub-view.\n *\n * See `intrinsicWidth`.\n *\n * @type {Number}\n */\n get intrinsicHeight() {\n return this._intrinsicHeight;\n }\n set intrinsicHeight(value) {\n if ((value !== undefined) && (value !== this._intrinsicHeight)) {\n const attr = this._getAttr(Attribute.HEIGHT);\n if (this._intrinsicHeight === undefined) {\n if (true) {\n this._solver.addEditVar(attr, new c.Strength('required', this._name ? 998 : 999, 1000, 1000));\n }\n else {\n this._solver.addEditVariable(attr, kiwi.Strength.create(this._name ? 998 : 999, 1000, 1000));\n }\n }\n this._intrinsicHeight = value;\n this._solver.suggestValue(attr, value);\n if (true) {\n this._solver.resolve();\n }\n else {\n this._solver.updateVariables();\n }\n }\n }\n\n /**\n * Top value (`Attribute.TOP`).\n * @readonly\n * @type {Number}\n */\n get top() {\n return this._getAttrValue(Attribute.TOP);\n }\n\n /**\n * Bottom value (`Attribute.BOTTOM`).\n * @readonly\n * @type {Number}\n */\n get bottom() {\n return this._getAttrValue(Attribute.BOTTOM);\n }\n\n /**\n * Horizontal center (`Attribute.CENTERX`).\n * @readonly\n * @type {Number}\n */\n get centerX() {\n return this._getAttrValue(Attribute.CENTERX);\n }\n\n /**\n * Vertical center (`Attribute.CENTERY`).\n * @readonly\n * @type {Number}\n */\n get centerY() {\n return this._getAttrValue(Attribute.CENTERY);\n }\n\n /**\n * Z-index (`Attribute.ZINDEX`).\n * @readonly\n * @type {Number}\n */\n get zIndex() {\n return this._getAttrValue(Attribute.ZINDEX);\n }\n\n /**\n * Returns the type of the sub-view.\n * @readonly\n * @type {String}\n */\n get type() {\n return this._type;\n }\n\n /**\n * Gets the value of one of the attributes.\n *\n * @param {String|Attribute} attr Attribute name (e.g. 'right', 'centerY', Attribute.TOP).\n * @return {Number} value or `undefined`\n */\n getValue(attr) {\n return this._attr[attr] ? this._attr[attr].value() : undefined;\n }\n\n /**\n * @private\n */\n _getAttr(attr) {\n if (this._attr[attr]) {\n return this._attr[attr];\n }\n this._attr[attr] = true ? new c.Variable() : new kiwi.Variable();\n switch (attr) {\n case Attribute.RIGHT:\n this._getAttr(Attribute.LEFT);\n this._getAttr(Attribute.WIDTH);\n if (true) {\n this._solver.addConstraint(new c.Equation(this._attr[attr], c.plus(this._attr[Attribute.LEFT], this._attr[Attribute.WIDTH])));\n }\n else {\n this._solver.addConstraint(new kiwi.Constraint(this._attr[attr], kiwi.Operator.Eq, this._attr[Attribute.LEFT].plus(this._attr[Attribute.WIDTH])));\n }\n break;\n case Attribute.BOTTOM:\n this._getAttr(Attribute.TOP);\n this._getAttr(Attribute.HEIGHT);\n if (true) {\n this._solver.addConstraint(new c.Equation(this._attr[attr], c.plus(this._attr[Attribute.TOP], this._attr[Attribute.HEIGHT])));\n }\n else {\n this._solver.addConstraint(new kiwi.Constraint(this._attr[attr], kiwi.Operator.Eq, this._attr[Attribute.TOP].plus(this._attr[Attribute.HEIGHT])));\n }\n break;\n case Attribute.CENTERX:\n this._getAttr(Attribute.LEFT);\n this._getAttr(Attribute.WIDTH);\n if (true) {\n this._solver.addConstraint(new c.Equation(this._attr[attr], c.plus(this._attr[Attribute.LEFT], c.divide(this._attr[Attribute.WIDTH], 2))));\n }\n else {\n this._solver.addConstraint(new kiwi.Constraint(this._attr[attr], kiwi.Operator.Eq, this._attr[Attribute.LEFT].plus(this._attr[Attribute.WIDTH].divide(2))));\n }\n break;\n case Attribute.CENTERY:\n this._getAttr(Attribute.TOP);\n this._getAttr(Attribute.HEIGHT);\n if (true) {\n this._solver.addConstraint(new c.Equation(this._attr[attr], c.plus(this._attr[Attribute.TOP], c.divide(this._attr[Attribute.HEIGHT], 2))));\n }\n else {\n this._solver.addConstraint(new kiwi.Constraint(this._attr[attr], kiwi.Operator.Eq, this._attr[Attribute.TOP].plus(this._attr[Attribute.HEIGHT].divide(2))));\n }\n break;\n }\n if (!true) {\n this._solver.updateVariables();\n }\n return this._attr[attr];\n }\n\n /**\n * @private\n */\n _getAttrValue(attr) {\n if (true) {\n return this._getAttr(attr).value;\n }\n else {\n return this._getAttr(attr).value();\n }\n }\n}\n\nconst defaultPriorityStrength = true ? new c.Strength('defaultPriority', 0, 1000, 1000) : kiwi.Strength.create(0, 1000, 1000);\n\nfunction _getConst(name, value) {\n if (true) {\n const vr = new c.Variable({value: value});\n this._solver.addConstraint(new c.StayConstraint(vr, c.Strength.required, 0));\n return vr;\n }\n else {\n const vr = new kiwi.Variable();\n this._solver.addConstraint(new kiwi.Constraint(vr, kiwi.Operator.Eq, value));\n return vr;\n }\n}\n\nfunction _getSubView(viewName) {\n if (!viewName) {\n return this._parentSubView;\n }\n else if (viewName.name) {\n this._subViews[viewName.name] = this._subViews[viewName.name] || new SubView({\n name: viewName.name,\n solver: this._solver\n });\n this._subViews[viewName.name]._type = this._subViews[viewName.name]._type || viewName.type;\n return this._subViews[viewName.name];\n }\n else {\n this._subViews[viewName] = this._subViews[viewName] || new SubView({\n name: viewName,\n solver: this._solver\n });\n return this._subViews[viewName];\n }\n}\n\nfunction _getSpacing(constraint) {\n let index = 4;\n if (!constraint.view1 && (constraint.attr1 === 'left')) {\n index = 3;\n }\n else if (!constraint.view1 && (constraint.attr1 === 'top')) {\n index = 0;\n }\n else if (!constraint.view2 && (constraint.attr2 === 'right')) {\n index = 1;\n }\n else if (!constraint.view2 && (constraint.attr2 === 'bottom')) {\n index = 2;\n }\n else {\n switch (constraint.attr1) {\n case 'left':\n case 'right':\n case 'centerX':\n case 'leading':\n case 'trailing':\n index = 4;\n break;\n case 'zIndex':\n index = 6;\n break;\n default:\n index = 5;\n }\n }\n this._spacingVars = this._spacingVars || new Array(7);\n this._spacingExpr = this._spacingExpr || new Array(7);\n if (!this._spacingVars[index]) {\n if (true) {\n this._spacingVars[index] = new c.Variable();\n this._solver.addEditVar(this._spacingVars[index]);\n this._spacingExpr[index] = c.minus(0, this._spacingVars[index]);\n }\n else {\n this._spacingVars[index] = new kiwi.Variable();\n this._solver.addEditVariable(this._spacingVars[index], kiwi.Strength.create(999, 1000, 1000));\n this._spacingExpr[index] = this._spacingVars[index].multiply(-1);\n }\n this._solver.suggestValue(this._spacingVars[index], this._spacing[index]);\n }\n return this._spacingExpr[index];\n}\n\nfunction _addConstraint(constraint) {\n //this.constraints.push(constraint);\n let relation;\n const multiplier = (constraint.multiplier !== undefined) ? constraint.multiplier : 1;\n let constant = (constraint.constant !== undefined) ? constraint.constant : 0;\n if (constant === 'default') {\n constant = _getSpacing.call(this, constraint);\n }\n const attr1 = _getSubView.call(this, constraint.view1)._getAttr(constraint.attr1);\n let attr2;\n if (true) {\n if (constraint.attr2 === Attribute.CONST) {\n attr2 = _getConst.call(this, undefined, constraint.constant);\n }\n else {\n attr2 = _getSubView.call(this, constraint.view2)._getAttr(constraint.attr2);\n if ((multiplier !== 1) && constant) {\n attr2 = c.plus(c.times(attr2, multiplier), constant);\n }\n else if (constant) {\n attr2 = c.plus(attr2, constant);\n }\n else if (multiplier !== 1) {\n attr2 = c.times(attr2, multiplier);\n }\n }\n const strength = ((constraint.priority !== undefined) && (constraint.priority < 1000)) ? new c.Strength('priority', 0, constraint.priority, 1000) : defaultPriorityStrength;\n switch (constraint.relation) {\n case Relation.EQU:\n relation = new c.Equation(attr1, attr2, strength);\n break;\n case Relation.GEQ:\n relation = new c.Inequality(attr1, c.GEQ, attr2, strength);\n break;\n case Relation.LEQ:\n relation = new c.Inequality(attr1, c.LEQ, attr2, strength);\n break;\n default:\n throw 'Invalid relation specified: ' + constraint.relation;\n }\n }\n else {\n if (constraint.attr2 === Attribute.CONST) {\n attr2 = _getConst.call(this, undefined, constraint.constant);\n }\n else {\n attr2 = _getSubView.call(this, constraint.view2)._getAttr(constraint.attr2);\n if ((multiplier !== 1) && constant) {\n attr2 = attr2.multiply(multiplier).plus(constant);\n }\n else if (constant) {\n attr2 = attr2.plus(constant);\n }\n else if (multiplier !== 1) {\n attr2 = attr2.multiply(multiplier);\n }\n }\n const strength = ((constraint.priority !== undefined) && (constraint.priority < 1000)) ? kiwi.Strength.create(0, constraint.priority, 1000) : defaultPriorityStrength;\n switch (constraint.relation) {\n case Relation.EQU:\n relation = new kiwi.Constraint(attr1, kiwi.Operator.Eq, attr2, strength);\n break;\n case Relation.GEQ:\n relation = new kiwi.Constraint(attr1, kiwi.Operator.Ge, attr2, strength);\n break;\n case Relation.LEQ:\n relation = new kiwi.Constraint(attr1, kiwi.Operator.Le, attr2, strength);\n break;\n default:\n throw 'Invalid relation specified: ' + constraint.relation;\n }\n }\n this._solver.addConstraint(relation);\n}\n\nfunction _compareSpacing(old, newz) {\n if (old === newz) {\n return true;\n }\n if (!old || !newz) {\n return false;\n }\n for (var i = 0; i < 7; i++) {\n if (old[i] !== newz[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * AutoLayoutJS API reference.\n *\n * ### Index\n *\n * |Entity|Type|Description|\n * |---|---|---|\n * |[AutoLayout](#autolayout)|`namespace`|Top level AutoLayout object.|\n * |[VisualFormat](#autolayoutvisualformat--object)|`namespace`|Parses VFL into constraints.|\n * |[View](#autolayoutview)|`class`|Main entity for adding & evaluating constraints.|\n * |[SubView](#autolayoutsubview--object)|`class`|SubView's are automatically created when constraints are added to views. They give access to the evaluated results.|\n * |[Attribute](#autolayoutattribute--enum)|`enum`|Attribute types that are supported when adding constraints.|\n * |[Relation](#autolayoutrelation--enum)|`enum`|Relationship types that are supported when adding constraints.|\n * |[Priority](#autolayoutpriority--enum)|`enum`|Default priority values for when adding constraints.|\n *\n * ### AutoLayout\n *\n * @module AutoLayout\n */\nclass View {\n\n /**\n * @class View\n * @param {Object} [options] Configuration options.\n * @param {Number} [options.width] Initial width of the view.\n * @param {Number} [options.height] Initial height of the view.\n * @param {Number|Object} [options.spacing] Spacing for the view (default: 8) (see `setSpacing`).\n * @param {Array} [options.constraints] One or more constraint definitions (see `addConstraints`).\n */\n constructor(options) {\n this._solver = true ? new c.SimplexSolver() : new kiwi.Solver();\n this._subViews = {};\n //this._spacing = undefined;\n this._parentSubView = new SubView({\n solver: this._solver\n });\n this.setSpacing((options && (options.spacing !== undefined)) ? options.spacing : 8);\n //this.constraints = [];\n if (options) {\n if ((options.width !== undefined) || (options.height !== undefined)) {\n this.setSize(options.width, options.height);\n }\n if (options.constraints) {\n this.addConstraints(options.constraints);\n }\n }\n }\n\n /**\n * Sets the width and height of the view.\n *\n * @param {Number} width Width of the view.\n * @param {Number} height Height of the view.\n * @return {View} this\n */\n setSize(width, height /*, depth*/) {\n this._parentSubView.intrinsicWidth = width;\n this._parentSubView.intrinsicHeight = height;\n return this;\n }\n\n /**\n * Width that was set using `setSize`.\n * @readonly\n * @type {Number}\n */\n get width() {\n return this._parentSubView.intrinsicWidth;\n }\n\n /**\n * Height that was set using `setSize`.\n * @readonly\n * @type {Number}\n */\n get height() {\n return this._parentSubView.intrinsicHeight;\n }\n\n /**\n * Width that is calculated from the constraints and the `.intrinsicWidth` of\n * the sub-views.\n *\n * When the width has been explicitely set using `setSize`, the fittingWidth\n * will **always** be the same as the explicitely set width. To calculate the size\n * based on the content, use:\n * ```javascript\n * var view = new AutoLayout.View({\n * constraints: VisualFormat.parse('|-[view1]-[view2]-'),\n * spacing: 20\n * });\n * view.subViews.view1.intrinsicWidth = 100;\n * view.subViews.view2.intrinsicWidth = 100;\n * console.log('fittingWidth: ' + view.fittingWidth); // 260\n * ```\n *\n * @readonly\n * @type {Number}\n */\n get fittingWidth() {\n return this._parentSubView.width;\n }\n\n /**\n * Height that is calculated from the constraints and the `.intrinsicHeight` of\n * the sub-views.\n *\n * See `.fittingWidth`.\n *\n * @readonly\n * @type {Number}\n */\n get fittingHeight() {\n return this._parentSubView.height;\n }\n\n /**\n * Sets the spacing for the view.\n *\n * The spacing can be set for 7 different variables:\n * `top`, `right`, `bottom`, `left`, `width`, `height` and `zIndex`. The `left`-spacing is\n * used when a spacer is used between the parent-view and a sub-view (e.g. `|-[subView]`).\n * The same is true for the `right`, `top` and `bottom` spacers. The `width` and `height` are\n * used for spacers in between sub-views (e.g. `[view1]-[view2]`).\n *\n * Instead of using the full spacing syntax, it is also possible to use shorthand notations:\n *\n * |Syntax|Type|Description|\n * |---|---|---|\n * |`[top, right, bottom, left, width, height, zIndex]`|Array(7)|Full syntax including z-index **(clockwise order)**.|\n * |`[top, right, bottom, left, width, height]`|Array(6)|Full horizontal & vertical spacing syntax (no z-index) **(clockwise order)**.|\n * |`[horizontal, vertical, zIndex]`|Array(3)|Horizontal = left, right, width, vertical = top, bottom, height.|\n * |`[horizontal, vertical]`|Array(2)|Horizontal = left, right, width, vertical = top, bottom, height, z-index = 1.|\n * |`spacing`|Number|Horizontal & vertical spacing are all the same, z-index = 1.|\n *\n * Examples:\n * ```javascript\n * view.setSpacing(10); // horizontal & vertical spacing 10\n * view.setSpacing([10, 15, 2]); // horizontal spacing 10, vertical spacing 15, z-axis spacing 2\n * view.setSpacing([10, 20, 10, 20, 5, 5]); // top, right, bottom, left, horizontal, vertical\n * view.setSpacing([10, 20, 10, 20, 5, 5, 1]); // top, right, bottom, left, horizontal, vertical, z\n * ```\n *\n * @param {Number|Array} spacing\n * @return {View} this\n */\n setSpacing(spacing) {\n // convert spacing into array: [top, right, bottom, left, horz, vert, z-index]\n switch (Array.isArray(spacing) ? spacing.length : -1) {\n case -1: spacing = [spacing, spacing, spacing, spacing, spacing, spacing, 1]; break;\n case 1: spacing = [spacing[0], spacing[0], spacing[0], spacing[0], spacing[0], spacing[0], 1]; break;\n case 2: spacing = [spacing[1], spacing[0], spacing[1], spacing[0], spacing[0], spacing[1], 1]; break;\n case 3: spacing = [spacing[1], spacing[0], spacing[1], spacing[0], spacing[0], spacing[1], spacing[2]]; break;\n case 6: spacing = [spacing[0], spacing[1], spacing[2], spacing[3], spacing[4], spacing[5], 1]; break;\n case 7: break;\n default: throw 'Invalid spacing syntax';\n }\n if (!_compareSpacing(this._spacing, spacing)) {\n this._spacing = spacing;\n // update spacing variables\n if (this._spacingVars) {\n for (var i = 0; i < this._spacingVars.length; i++) {\n if (this._spacingVars[i]) {\n this._solver.suggestValue(this._spacingVars[i], this._spacing[i]);\n }\n }\n if (true) {\n this._solver.resolve();\n }\n else {\n this._solver.updateVariables();\n }\n }\n }\n return this;\n }\n\n /**\n * Adds a constraint definition.\n *\n * A constraint definition has the following format:\n *\n * ```javascript\n * constraint: {\n * view1: {String},\n * attr1: {AutoLayout.Attribute},\n * relation: {AutoLayout.Relation},\n * view2: {String},\n * attr2: {AutoLayout.Attribute},\n * multiplier: {Number},\n * constant: {Number},\n * priority: {Number}(0..1000)\n * }\n * ```\n * @param {Object} constraint Constraint definition.\n * @return {View} this\n */\n addConstraint(constraint) {\n _addConstraint.call(this, constraint);\n if (!true) {\n this._solver.updateVariables();\n }\n return this;\n }\n\n /**\n * Adds one or more constraint definitions.\n *\n * A constraint definition has the following format:\n *\n * ```javascript\n * constraint: {\n * view1: {String},\n * attr1: {AutoLayout.Attribute},\n * relation: {AutoLayout.Relation},\n * view2: {String},\n * attr2: {AutoLayout.Attribute},\n * multiplier: {Number},\n * constant: {Number},\n * priority: {Number}(0..1000)\n * }\n * ```\n * @param {Array} constraints One or more constraint definitions.\n * @return {View} this\n */\n addConstraints(constraints) {\n for (var j = 0; j < constraints.length; j++) {\n _addConstraint.call(this, constraints[j]);\n }\n if (!true) {\n this._solver.updateVariables();\n }\n return this;\n }\n\n /**\n * Dictionary of `SubView` objects that have been created when adding constraints.\n * @readonly\n * @type {Object.SubView}\n */\n get subViews() {\n return this._subViews;\n }\n\n /**\n * Checks whether the constraints incompletely specify the location\n * of the subViews.\n * @private\n */\n //get hasAmbiguousLayout() {\n // Todo\n //}\n}\n\nvar AutoLayout = {\n Attribute: Attribute,\n Relation: Relation,\n Priority: Priority,\n VisualFormat: VisualFormat,\n View: View,\n SubView: SubView\n //DOM: DOM\n};\n\nmodule.exports = AutoLayout;","/**\n * Parts Copyright (C) 2011-2012, Alex Russell (slightlyoff@chromium.org)\n * Parts Copyright (C) Copyright (C) 1998-2000 Greg J. Badros\n *\n * Use of this source code is governed by the LGPL, which can be found in the\n * COPYING.LGPL file.\n *\n * This is a compiled version of Cassowary/JS. For source versions or to\n * contribute, see the github project:\n *\n * https://github.com/slightlyoff/cassowary-js-refactor\n *\n */\n\n(function() {\n(function(a){\"use strict\";try{(function(){}).bind(a)}catch(b){Object.defineProperty(Function.prototype,\"bind\",{value:function(a){var b=this;return function(){return b.apply(a,arguments)}},enumerable:!1,configurable:!0,writable:!0})}var c=a.HTMLElement!==void 0,d=function(a){for(var b=null;a&&a!=Object.prototype;){if(a.tagName){b=a.tagName;break}a=a.prototype}return b||\"div\"},e=1e-8,f={},g=function(a,b){if(a&&b){if(\"function\"==typeof a[b])return a[b];var c=a.prototype;if(c&&\"function\"==typeof c[b])return c[b];if(c!==Object.prototype&&c!==Function.prototype)return\"function\"==typeof a.__super__?g(a.__super__,b):void 0}},h=a.c={debug:!1,trace:!1,verbose:!1,traceAdded:!1,GC:!1,GEQ:1,LEQ:2,inherit:function(b){var e=null,g=null;b[\"extends\"]&&(g=b[\"extends\"],delete b[\"extends\"]),b.initialize&&(e=b.initialize,delete b.initialize);var h=e||function(){};Object.defineProperty(h,\"__super__\",{value:g?g:Object,enumerable:!1,configurable:!0,writable:!1}),b._t&&(f[b._t]=h);var i=h.prototype=Object.create(g?g.prototype:Object.prototype);if(this.extend(i,b),c&&g&&g.prototype instanceof a.HTMLElement){var j=h,k=d(i),l=function(a){return a.__proto__=i,j.apply(a,arguments),i.created&&a.created(),i.decorate&&a.decorate(),a};this.extend(i,{upgrade:l}),h=function(){return l(a.document.createElement(k))},h.prototype=i,this.extend(h,{ctor:j})}return h},extend:function(a,b){return this.own(b,function(c){var d=Object.getOwnPropertyDescriptor(b,c);try{\"function\"==typeof d.get||\"function\"==typeof d.set?Object.defineProperty(a,c,d):\"function\"==typeof d.value||\"_\"===c.charAt(0)?(d.writable=!0,d.configurable=!0,d.enumerable=!1,Object.defineProperty(a,c,d)):a[c]=b[c]}catch(e){}}),a},own:function(b,c,d){return Object.getOwnPropertyNames(b).forEach(c,d||a),b},traceprint:function(a){h.verbose&&console.log(a)},fnenterprint:function(a){console.log(\"* \"+a)},fnexitprint:function(a){console.log(\"- \"+a)},assert:function(a,b){if(!a)throw new h.InternalError(\"Assertion failed: \"+b)},plus:function(a,b){return a instanceof h.Expression||(a=new h.Expression(a)),b instanceof h.Expression||(b=new h.Expression(b)),a.plus(b)},minus:function(a,b){return a instanceof h.Expression||(a=new h.Expression(a)),b instanceof h.Expression||(b=new h.Expression(b)),a.minus(b)},times:function(a,b){return(\"number\"==typeof a||a instanceof h.Variable)&&(a=new h.Expression(a)),(\"number\"==typeof b||b instanceof h.Variable)&&(b=new h.Expression(b)),a.times(b)},divide:function(a,b){return(\"number\"==typeof a||a instanceof h.Variable)&&(a=new h.Expression(a)),(\"number\"==typeof b||b instanceof h.Variable)&&(b=new h.Expression(b)),a.divide(b)},approx:function(a,b){if(a===b)return!0;var c,d;return c=a instanceof h.Variable?a.value:a,d=b instanceof h.Variable?b.value:b,0==c?e>Math.abs(d):0==d?e>Math.abs(c):Math.abs(c-d)64||this._deleted>this._compactThreshold&&(this._compact(),this._deleted=0)},\"delete\":function(a){a=b(a),this._store.hasOwnProperty(a)&&(this._deleted++,delete this._store[a],this.size>0&&this.size--)},each:function(a,b){if(this.size){this._perhapsCompact();var c=this._store,d=this._keyStrMap;Object.keys(this._store).forEach(function(e){a.call(b||null,d[e],c[e])},this)}},escapingEach:function(a,b){if(this.size){this._perhapsCompact();for(var c=this,e=this._store,f=this._keyStrMap,g=d,h=Object.keys(e),i=0;h.length>i;i++)if(function(d){c._store.hasOwnProperty(d)&&(g=a.call(b||null,f[d],e[d]))}(h[i]),g){if(void 0!==g.retval)return g;if(g.brk)break}}},clone:function(){var b=new a.HashTable;return this.size&&(b.size=this.size,c(this._store,b._store),c(this._keyStrMap,b._keyStrMap)),b},equals:function(b){if(b===this)return!0;if(!(b instanceof a.HashTable)||b._size!==this._size)return!1;for(var c=Object.keys(this._store),d=0;c.length>d;d++){var e=c[d];if(this._keyStrMap[e]!==b._keyStrMap[e]||this._store[e]!==b._store[e])return!1}return!0},toString:function(){var b=\"\";return this.each(function(a,c){b+=a+\" => \"+c+\"\\n\"}),b}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.HashSet=a.inherit({_t:\"c.HashSet\",initialize:function(){this.storage=[],this.size=0},add:function(a){var b=this.storage;b.indexOf(a),-1==b.indexOf(a)&&b.push(a),this.size=this.storage.length},values:function(){return this.storage},has:function(a){var b=this.storage;return-1!=b.indexOf(a)},\"delete\":function(a){var b=this.storage.indexOf(a);return-1==b?null:(this.storage.splice(b,1)[0],this.size=this.storage.length,void 0)},clear:function(){this.storage.length=0},each:function(a,b){this.size&&this.storage.forEach(a,b)},escapingEach:function(a,b){this.size&&this.storage.forEach(a,b)},toString:function(){var a=this.size+\" {\",b=!0;return this.each(function(c){b?b=!1:a+=\", \",a+=c}),a+=\"}\\n\"},toJSON:function(){var a=[];return this.each(function(b){a.push(b.toJSON())}),{_t:\"c.HashSet\",data:a}},fromJSON:function(b){var c=new a.HashSet;return b.data&&(c.size=b.data.length,c.storage=b.data),c}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.Error=a.inherit({initialize:function(a){a&&(this._description=a)},_name:\"c.Error\",_description:\"An error has occured in Cassowary\",set description(a){this._description=a},get description(){return\"(\"+this._name+\") \"+this._description},get message(){return this.description},toString:function(){return this.description}});var b=function(b,c){return a.inherit({\"extends\":a.Error,initialize:function(){a.Error.apply(this,arguments)},_name:b||\"\",_description:c||\"\"})};a.ConstraintNotFound=b(\"c.ConstraintNotFound\",\"Tried to remove a constraint never added to the tableu\"),a.InternalError=b(\"c.InternalError\"),a.NonExpression=b(\"c.NonExpression\",\"The resulting expression would be non\"),a.NotEnoughStays=b(\"c.NotEnoughStays\",\"There are not enough stays to give specific values to every variable\"),a.RequiredFailure=b(\"c.RequiredFailure\",\"A required constraint cannot be satisfied\"),a.TooDifficult=b(\"c.TooDifficult\",\"The constraints are too difficult to solve\")}(this.c||module.parent.exports||{}),function(a){\"use strict\";var b=1e3;a.SymbolicWeight=a.inherit({_t:\"c.SymbolicWeight\",initialize:function(){this.value=0;for(var a=1,c=arguments.length-1;c>=0;--c)this.value+=arguments[c]*a,a*=b},toJSON:function(){return{_t:this._t,value:this.value}}})}(this.c||module.parent.exports||{}),function(a){a.Strength=a.inherit({initialize:function(b,c,d,e){this.name=b,this.symbolicWeight=c instanceof a.SymbolicWeight?c:new a.SymbolicWeight(c,d,e)},get required(){return this===a.Strength.required},toString:function(){return this.name+(this.isRequired?\"\":\":\"+this.symbolicWeight)}}),a.Strength.required=new a.Strength(\"\",1e3,1e3,1e3),a.Strength.strong=new a.Strength(\"strong\",1,0,0),a.Strength.medium=new a.Strength(\"medium\",0,1,0),a.Strength.weak=new a.Strength(\"weak\",0,0,1)}(this.c||(\"undefined\"!=typeof module?module.parent.exports.c:{})),function(a){\"use strict\";a.AbstractVariable=a.inherit({isDummy:!1,isExternal:!1,isPivotable:!1,isRestricted:!1,_init:function(b,c){this.hashCode=a._inc(),this.name=(c||\"\")+this.hashCode,b&&(b.name!==void 0&&(this.name=b.name),b.value!==void 0&&(this.value=b.value),b.prefix!==void 0&&(this._prefix=b.prefix))},_prefix:\"\",name:\"\",value:0,toJSON:function(){var a={};return this._t&&(a._t=this._t),this.name&&(a.name=this.name),this.value!==void 0&&(a.value=this.value),this._prefix&&(a._prefix=this._prefix),this._t&&(a._t=this._t),a},fromJSON:function(b,c){var d=new c;return a.extend(d,b),d},toString:function(){return this._prefix+\"[\"+this.name+\":\"+this.value+\"]\"}}),a.Variable=a.inherit({_t:\"c.Variable\",\"extends\":a.AbstractVariable,initialize:function(b){this._init(b,\"v\");var c=a.Variable._map;c&&(c[this.name]=this)},isExternal:!0}),a.DummyVariable=a.inherit({_t:\"c.DummyVariable\",\"extends\":a.AbstractVariable,initialize:function(a){this._init(a,\"d\")},isDummy:!0,isRestricted:!0,value:\"dummy\"}),a.ObjectiveVariable=a.inherit({_t:\"c.ObjectiveVariable\",\"extends\":a.AbstractVariable,initialize:function(a){this._init(a,\"o\")},value:\"obj\"}),a.SlackVariable=a.inherit({_t:\"c.SlackVariable\",\"extends\":a.AbstractVariable,initialize:function(a){this._init(a,\"s\")},isPivotable:!0,isRestricted:!0,value:\"slack\"})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.Point=a.inherit({initialize:function(b,c,d){if(b instanceof a.Variable)this._x=b;else{var e={value:b};d&&(e.name=\"x\"+d),this._x=new a.Variable(e)}if(c instanceof a.Variable)this._y=c;else{var f={value:c};d&&(f.name=\"y\"+d),this._y=new a.Variable(f)}},get x(){return this._x},set x(b){b instanceof a.Variable?this._x=b:this._x.value=b},get y(){return this._y},set y(b){b instanceof a.Variable?this._y=b:this._y.value=b},toString:function(){return\"(\"+this.x+\", \"+this.y+\")\"}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.Expression=a.inherit({initialize:function(b,c,d){a.GC&&console.log(\"new c.Expression\"),this.constant=\"number\"!=typeof d||isNaN(d)?0:d,this.terms=new a.HashTable,b instanceof a.AbstractVariable?this.setVariable(b,\"number\"==typeof c?c:1):\"number\"==typeof b&&(isNaN(b)?console.trace():this.constant=b)},initializeFromHash:function(b,c){return a.verbose&&(console.log(\"*******************************\"),console.log(\"clone c.initializeFromHash\"),console.log(\"*******************************\")),a.GC&&console.log(\"clone c.Expression\"),this.constant=b,this.terms=c.clone(),this},multiplyMe:function(a){this.constant*=a;var b=this.terms;return b.each(function(c,d){b.set(c,d*a)}),this},clone:function(){a.verbose&&(console.log(\"*******************************\"),console.log(\"clone c.Expression\"),console.log(\"*******************************\"));var b=new a.Expression;return b.initializeFromHash(this.constant,this.terms),b},times:function(b){if(\"number\"==typeof b)return this.clone().multiplyMe(b);if(this.isConstant)return b.times(this.constant);if(b.isConstant)return this.times(b.constant);throw new a.NonExpression},plus:function(b){return b instanceof a.Expression?this.clone().addExpression(b,1):b instanceof a.Variable?this.clone().addVariable(b,1):void 0},minus:function(b){return b instanceof a.Expression?this.clone().addExpression(b,-1):b instanceof a.Variable?this.clone().addVariable(b,-1):void 0},divide:function(b){if(\"number\"==typeof b){if(a.approx(b,0))throw new a.NonExpression;return this.times(1/b)}if(b instanceof a.Expression){if(!b.isConstant)throw new a.NonExpression;return this.times(1/b.constant)}},addExpression:function(b,c,d,e){return b instanceof a.AbstractVariable&&(b=new a.Expression(b),a.trace&&console.log(\"addExpression: Had to cast a var to an expression\")),c=c||1,this.constant+=c*b.constant,b.terms.each(function(a,b){this.addVariable(a,b*c,d,e)},this),this},addVariable:function(b,c,d,e){null==c&&(c=1),a.trace&&console.log(\"c.Expression::addVariable():\",b,c);var f=this.terms.get(b);if(f){var g=f+c;0==g||a.approx(g,0)?(e&&e.noteRemovedVariable(b,d),this.terms.delete(b)):this.setVariable(b,g)}else a.approx(c,0)||(this.setVariable(b,c),e&&e.noteAddedVariable(b,d));return this},setVariable:function(a,b){return this.terms.set(a,b),this},anyPivotableVariable:function(){if(this.isConstant)throw new a.InternalError(\"anyPivotableVariable called on a constant\");var b=this.terms.escapingEach(function(a){return a.isPivotable?{retval:a}:void 0});return b&&void 0!==b.retval?b.retval:null},substituteOut:function(b,c,d,e){a.trace&&(a.fnenterprint(\"CLE:substituteOut: \"+b+\", \"+c+\", \"+d+\", ...\"),a.traceprint(\"this = \"+this));var f=this.setVariable.bind(this),g=this.terms,h=g.get(b);g.delete(b),this.constant+=h*c.constant,c.terms.each(function(b,c){var i=g.get(b);if(i){var j=i+h*c;a.approx(j,0)?(e.noteRemovedVariable(b,d),g.delete(b)):f(b,j)}else f(b,h*c),e&&e.noteAddedVariable(b,d)}),a.trace&&a.traceprint(\"Now this is \"+this)},changeSubject:function(a,b){this.setVariable(a,this.newSubject(b))},newSubject:function(b){a.trace&&a.fnenterprint(\"newSubject:\"+b);var c=1/this.terms.get(b);return this.terms.delete(b),this.multiplyMe(-c),c},coefficientFor:function(a){return this.terms.get(a)||0},get isConstant(){return 0==this.terms.size},toString:function(){var b=\"\",c=!1;if(!a.approx(this.constant,0)||this.isConstant){if(b+=this.constant,this.isConstant)return b;c=!0}return this.terms.each(function(a,d){c&&(b+=\" + \"),b+=d+\"*\"+a,c=!0}),b},equals:function(b){return b===this?!0:b instanceof a.Expression&&b.constant===this.constant&&b.terms.equals(this.terms)},Plus:function(a,b){return a.plus(b)},Minus:function(a,b){return a.minus(b)},Times:function(a,b){return a.times(b)},Divide:function(a,b){return a.divide(b)}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.AbstractConstraint=a.inherit({initialize:function(b,c){this.hashCode=a._inc(),this.strength=b||a.Strength.required,this.weight=c||1},isEditConstraint:!1,isInequality:!1,isStayConstraint:!1,get required(){return this.strength===a.Strength.required},toString:function(){return this.strength+\" {\"+this.weight+\"} (\"+this.expression+\")\"}});var b=a.AbstractConstraint.prototype.toString,c=function(b,c,d){a.AbstractConstraint.call(this,c||a.Strength.strong,d),this.variable=b,this.expression=new a.Expression(b,-1,b.value)};a.EditConstraint=a.inherit({\"extends\":a.AbstractConstraint,initialize:function(){c.apply(this,arguments)},isEditConstraint:!0,toString:function(){return\"edit:\"+b.call(this)}}),a.StayConstraint=a.inherit({\"extends\":a.AbstractConstraint,initialize:function(){c.apply(this,arguments)},isStayConstraint:!0,toString:function(){return\"stay:\"+b.call(this)}});var d=a.Constraint=a.inherit({\"extends\":a.AbstractConstraint,initialize:function(b,c,d){a.AbstractConstraint.call(this,c,d),this.expression=b}});a.Inequality=a.inherit({\"extends\":a.Constraint,_cloneOrNewCle:function(b){return b.clone?b.clone():new a.Expression(b)},initialize:function(b,c,e,f,g){var h=b instanceof a.Expression,i=e instanceof a.Expression,j=b instanceof a.AbstractVariable,k=e instanceof a.AbstractVariable,l=\"number\"==typeof b,m=\"number\"==typeof e;if((h||l)&&k){var n=b,o=c,p=e,q=f,r=g;if(d.call(this,this._cloneOrNewCle(n),q,r),o==a.LEQ)this.expression.multiplyMe(-1),this.expression.addVariable(p);else{if(o!=a.GEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");this.expression.addVariable(p,-1)}}else if(j&&(i||m)){var n=e,o=c,p=b,q=f,r=g;if(d.call(this,this._cloneOrNewCle(n),q,r),o==a.GEQ)this.expression.multiplyMe(-1),this.expression.addVariable(p);else{if(o!=a.LEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");this.expression.addVariable(p,-1)}}else{if(h&&m){var s=b,o=c,t=e,q=f,r=g;if(d.call(this,this._cloneOrNewCle(s),q,r),o==a.LEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(t));else{if(o!=a.GEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");this.expression.addExpression(this._cloneOrNewCle(t),-1)}return this}if(l&&i){var s=e,o=c,t=b,q=f,r=g;if(d.call(this,this._cloneOrNewCle(s),q,r),o==a.GEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(t));else{if(o!=a.LEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");this.expression.addExpression(this._cloneOrNewCle(t),-1)}return this}if(h&&i){var s=b,o=c,t=e,q=f,r=g;if(d.call(this,this._cloneOrNewCle(t),q,r),o==a.GEQ)this.expression.multiplyMe(-1),this.expression.addExpression(this._cloneOrNewCle(s));else{if(o!=a.LEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");this.expression.addExpression(this._cloneOrNewCle(s),-1)}}else{if(h)return d.call(this,b,c,e);if(c==a.GEQ)d.call(this,new a.Expression(e),f,g),this.expression.multiplyMe(-1),this.expression.addVariable(b);else{if(c!=a.LEQ)throw new a.InternalError(\"Invalid operator in c.Inequality constructor\");d.call(this,new a.Expression(e),f,g),this.expression.addVariable(b,-1)}}}},isInequality:!0,toString:function(){return d.prototype.toString.call(this)+\" >= 0) id: \"+this.hashCode}}),a.Equation=a.inherit({\"extends\":a.Constraint,initialize:function(b,c,e,f){if(b instanceof a.Expression&&!c||c instanceof a.Strength)d.call(this,b,c,e);else if(b instanceof a.AbstractVariable&&c instanceof a.Expression){var g=b,h=c,i=e,j=f;d.call(this,h.clone(),i,j),this.expression.addVariable(g,-1)}else if(b instanceof a.AbstractVariable&&\"number\"==typeof c){var g=b,k=c,i=e,j=f;d.call(this,new a.Expression(k),i,j),this.expression.addVariable(g,-1)}else if(b instanceof a.Expression&&c instanceof a.AbstractVariable){var h=b,g=c,i=e,j=f;d.call(this,h.clone(),i,j),this.expression.addVariable(g,-1)}else{if(!(b instanceof a.Expression||b instanceof a.AbstractVariable||\"number\"==typeof b)||!(c instanceof a.Expression||c instanceof a.AbstractVariable||\"number\"==typeof c))throw\"Bad initializer to c.Equation\";b=b instanceof a.Expression?b.clone():new a.Expression(b),c=c instanceof a.Expression?c.clone():new a.Expression(c),d.call(this,b,e,f),this.expression.addExpression(c,-1)}a.assert(this.strength instanceof a.Strength,\"_strength not set\")},toString:function(){return d.prototype.toString.call(this)+\" = 0)\"}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.EditInfo=a.inherit({initialize:function(a,b,c,d,e){this.constraint=a,this.editPlus=b,this.editMinus=c,this.prevEditConstant=d,this.index=e},toString:function(){return\"\"}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.Tableau=a.inherit({initialize:function(){this.columns=new a.HashTable,this.rows=new a.HashTable,this._infeasibleRows=new a.HashSet,this._externalRows=new a.HashSet,this._externalParametricVars=new a.HashSet},noteRemovedVariable:function(b,c){a.trace&&console.log(\"c.Tableau::noteRemovedVariable: \",b,c);var d=this.columns.get(b);c&&d&&d.delete(c)},noteAddedVariable:function(a,b){b&&this.insertColVar(a,b)},getInternalInfo:function(){var a=\"Tableau Information:\\n\";return a+=\"Rows: \"+this.rows.size,a+=\" (= \"+(this.rows.size-1)+\" constraints)\",a+=\"\\nColumns: \"+this.columns.size,a+=\"\\nInfeasible Rows: \"+this._infeasibleRows.size,a+=\"\\nExternal basic variables: \"+this._externalRows.size,a+=\"\\nExternal parametric variables: \",a+=this._externalParametricVars.size,a+=\"\\n\"},toString:function(){var a=\"Tableau:\\n\";return this.rows.each(function(b,c){a+=b,a+=\" <==> \",a+=c,a+=\"\\n\"}),a+=\"\\nColumns:\\n\",a+=this.columns,a+=\"\\nInfeasible rows: \",a+=this._infeasibleRows,a+=\"External basic variables: \",a+=this._externalRows,a+=\"External parametric variables: \",a+=this._externalParametricVars},insertColVar:function(b,c){var d=this.columns.get(b);d||(d=new a.HashSet,this.columns.set(b,d)),d.add(c)},addRow:function(b,c){a.trace&&a.fnenterprint(\"addRow: \"+b+\", \"+c),this.rows.set(b,c),c.terms.each(function(a){this.insertColVar(a,b),a.isExternal&&this._externalParametricVars.add(a)},this),b.isExternal&&this._externalRows.add(b),a.trace&&a.traceprint(\"\"+this)},removeColumn:function(b){a.trace&&a.fnenterprint(\"removeColumn:\"+b);var c=this.columns.get(b);c?(this.columns.delete(b),c.each(function(a){var c=this.rows.get(a);c.terms.delete(b)},this)):a.trace&&console.log(\"Could not find var\",b,\"in columns\"),b.isExternal&&(this._externalRows.delete(b),this._externalParametricVars.delete(b))},removeRow:function(b){a.trace&&a.fnenterprint(\"removeRow:\"+b);var c=this.rows.get(b);return a.assert(null!=c),c.terms.each(function(c){var e=this.columns.get(c);null!=e&&(a.trace&&console.log(\"removing from varset:\",b),e.delete(b))},this),this._infeasibleRows.delete(b),b.isExternal&&this._externalRows.delete(b),this.rows.delete(b),a.trace&&a.fnexitprint(\"returning \"+c),c},substituteOut:function(b,c){a.trace&&a.fnenterprint(\"substituteOut:\"+b+\", \"+c),a.trace&&a.traceprint(\"\"+this);var d=this.columns.get(b);d.each(function(a){var d=this.rows.get(a);d.substituteOut(b,c,a,this),a.isRestricted&&0>d.constant&&this._infeasibleRows.add(a)},this),b.isExternal&&(this._externalRows.add(b),this._externalParametricVars.delete(b)),this.columns.delete(b)},columnsHasKey:function(a){return!!this.columns.get(a)}})}(this.c||module.parent.exports||{}),function(a){var b=a.Tableau,c=b.prototype,d=1e-8,e=a.Strength.weak;a.SimplexSolver=a.inherit({\"extends\":a.Tableau,initialize:function(){a.Tableau.call(this),this._stayMinusErrorVars=[],this._stayPlusErrorVars=[],this._errorVars=new a.HashTable,this._markerVars=new a.HashTable,this._objective=new a.ObjectiveVariable({name:\"Z\"}),this._editVarMap=new a.HashTable,this._editVarList=[],this._slackCounter=0,this._artificialCounter=0,this._dummyCounter=0,this.autoSolve=!0,this._fNeedsSolving=!1,this._optimizeCount=0,this.rows.set(this._objective,new a.Expression),this._stkCedcns=[0],a.trace&&a.traceprint(\"objective expr == \"+this.rows.get(this._objective))},addLowerBound:function(b,c){var d=new a.Inequality(b,a.GEQ,new a.Expression(c));return this.addConstraint(d)},addUpperBound:function(b,c){var d=new a.Inequality(b,a.LEQ,new a.Expression(c));return this.addConstraint(d)},addBounds:function(a,b,c){return this.addLowerBound(a,b),this.addUpperBound(a,c),this},add:function(){for(var a=0;arguments.length>a;a++)this.addConstraint(arguments[a]);return this},addConstraint:function(b){a.trace&&a.fnenterprint(\"addConstraint: \"+b);var c=Array(2),d=Array(1),e=this.newExpression(b,c,d);if(d=d[0],this.tryAddingDirectly(e)||this.addWithArtificialVariable(e),this._fNeedsSolving=!0,b.isEditConstraint){var f=this._editVarMap.size,g=c[0],h=c[1];!g instanceof a.SlackVariable&&console.warn(\"cvEplus not a slack variable =\",g),!h instanceof a.SlackVariable&&console.warn(\"cvEminus not a slack variable =\",h),a.debug&&console.log(\"new c.EditInfo(\"+b+\", \"+g+\", \"+h+\", \"+d+\", \"+f+\")\");var i=new a.EditInfo(b,g,h,d,f);this._editVarMap.set(b.variable,i),this._editVarList[f]={v:b.variable,info:i}}return this.autoSolve&&(this.optimize(this._objective),this._setExternalVariables()),this},addConstraintNoException:function(b){a.trace&&a.fnenterprint(\"addConstraintNoException: \"+b);try{return this.addConstraint(b),!0}catch(c){return!1}},addEditVar:function(b,c){return a.trace&&a.fnenterprint(\"addEditVar: \"+b+\" @ \"+c),this.addConstraint(new a.EditConstraint(b,c||a.Strength.strong))},beginEdit:function(){return a.assert(this._editVarMap.size>0,\"_editVarMap.size > 0\"),this._infeasibleRows.clear(),this._resetStayConstants(),this._stkCedcns.push(this._editVarMap.size),this},endEdit:function(){return a.assert(this._editVarMap.size>0,\"_editVarMap.size > 0\"),this.resolve(),this._stkCedcns.pop(),this.removeEditVarsTo(this._stkCedcns[this._stkCedcns.length-1]),this},removeAllEditVars:function(){return this.removeEditVarsTo(0)},removeEditVarsTo:function(b){try{for(var c=this._editVarList.length,d=b;c>d;d++)this._editVarList[d]&&this.removeConstraint(this._editVarMap.get(this._editVarList[d].v).constraint);return this._editVarList.length=b,a.assert(this._editVarMap.size==b,\"_editVarMap.size == n\"),this}catch(e){throw new a.InternalError(\"Constraint not found in removeEditVarsTo\")}},addPointStays:function(b){return a.trace&&console.log(\"addPointStays\",b),b.forEach(function(a,b){this.addStay(a.x,e,Math.pow(2,b)),this.addStay(a.y,e,Math.pow(2,b))},this),this},addStay:function(b,c,d){var f=new a.StayConstraint(b,c||e,d||1);return this.addConstraint(f)},removeConstraint:function(a){return this.removeConstraintInternal(a),this},removeConstraintInternal:function(b){a.trace&&a.fnenterprint(\"removeConstraintInternal: \"+b),a.trace&&a.traceprint(\"\"+this),this._fNeedsSolving=!0,this._resetStayConstants();var c=this.rows.get(this._objective),d=this._errorVars.get(b);a.trace&&a.traceprint(\"eVars == \"+d),null!=d&&d.each(function(e){var f=this.rows.get(e);null==f?c.addVariable(e,-b.weight*b.strength.symbolicWeight.value,this._objective,this):c.addExpression(f,-b.weight*b.strength.symbolicWeight.value,this._objective,this),a.trace&&a.traceprint(\"now eVars == \"+d)},this);var e=this._markerVars.get(b);if(this._markerVars.delete(b),null==e)throw new a.InternalError(\"Constraint not found in removeConstraintInternal\");if(a.trace&&a.traceprint(\"Looking to remove var \"+e),null==this.rows.get(e)){var f=this.columns.get(e);a.trace&&a.traceprint(\"Must pivot -- columns are \"+f);var g=null,h=0;f.each(function(b){if(b.isRestricted){var c=this.rows.get(b),d=c.coefficientFor(e);if(a.trace&&a.traceprint(\"Marker \"+e+\"'s coefficient in \"+c+\" is \"+d),0>d){var f=-c.constant/d;(null==g||h>f||a.approx(f,h)&&b.hashCoded)&&(h=d,g=a)}},this)),null==g&&(0==f.size?this.removeColumn(e):f.escapingEach(function(a){return a!=this._objective?(g=a,{brk:!0}):void 0},this)),null!=g&&this.pivot(e,g)}if(null!=this.rows.get(e)&&this.removeRow(e),null!=d&&d.each(function(a){a!=e&&this.removeColumn(a)},this),b.isStayConstraint){if(null!=d)for(var j=0;this._stayPlusErrorVars.length>j;j++)d.delete(this._stayPlusErrorVars[j]),d.delete(this._stayMinusErrorVars[j])}else if(b.isEditConstraint){a.assert(null!=d,\"eVars != null\");var k=this._editVarMap.get(b.variable);this.removeColumn(k.editMinus),this._editVarMap.delete(b.variable)}return null!=d&&this._errorVars.delete(d),this.autoSolve&&(this.optimize(this._objective),this._setExternalVariables()),this},reset:function(){throw a.trace&&a.fnenterprint(\"reset\"),new a.InternalError(\"reset not implemented\")},resolveArray:function(b){a.trace&&a.fnenterprint(\"resolveArray\"+b);var c=b.length;this._editVarMap.each(function(a,d){var e=d.index;c>e&&this.suggestValue(a,b[e])},this),this.resolve()},resolvePair:function(a,b){this.suggestValue(this._editVarList[0].v,a),this.suggestValue(this._editVarList[1].v,b),this.resolve()},resolve:function(){a.trace&&a.fnenterprint(\"resolve()\"),this.dualOptimize(),this._setExternalVariables(),this._infeasibleRows.clear(),this._resetStayConstants()},suggestValue:function(b,c){a.trace&&console.log(\"suggestValue(\"+b+\", \"+c+\")\");var d=this._editVarMap.get(b);if(!d)throw new a.Error(\"suggestValue for variable \"+b+\", but var is not an edit variable\");var e=c-d.prevEditConstant;return d.prevEditConstant=c,this.deltaEditConstant(e,d.editPlus,d.editMinus),this},solve:function(){return this._fNeedsSolving&&(this.optimize(this._objective),this._setExternalVariables()),this},setEditedValue:function(b,c){if(!this.columnsHasKey(b)&&null==this.rows.get(b))return b.value=c,this;if(!a.approx(c,b.value)){this.addEditVar(b),this.beginEdit();try{this.suggestValue(b,c)}catch(d){throw new a.InternalError(\"Error in setEditedValue\")}this.endEdit()}return this},addVar:function(b){if(!this.columnsHasKey(b)&&null==this.rows.get(b)){try{this.addStay(b)}catch(c){throw new a.InternalError(\"Error in addVar -- required failure is impossible\")}a.trace&&a.traceprint(\"added initial stay on \"+b)}return this},getInternalInfo:function(){var a=c.getInternalInfo.call(this);return a+=\"\\nSolver info:\\n\",a+=\"Stay Error Variables: \",a+=this._stayPlusErrorVars.length+this._stayMinusErrorVars.length,a+=\" (\"+this._stayPlusErrorVars.length+\" +, \",a+=this._stayMinusErrorVars.length+\" -)\\n\",a+=\"Edit Variables: \"+this._editVarMap.size,a+=\"\\n\"},getDebugInfo:function(){return\"\"+this+this.getInternalInfo()+\"\\n\"},toString:function(){var a=c.getInternalInfo.call(this);return a+=\"\\n_stayPlusErrorVars: \",a+=\"[\"+this._stayPlusErrorVars+\"]\",a+=\"\\n_stayMinusErrorVars: \",a+=\"[\"+this._stayMinusErrorVars+\"]\",a+=\"\\n\",a+=\"_editVarMap:\\n\"+this._editVarMap,a+=\"\\n\"},getConstraintMap:function(){return this._markerVars},addWithArtificialVariable:function(b){a.trace&&a.fnenterprint(\"addWithArtificialVariable: \"+b);var c=new a.SlackVariable({value:++this._artificialCounter,prefix:\"a\"}),d=new a.ObjectiveVariable({name:\"az\"}),e=b.clone();a.trace&&a.traceprint(\"before addRows:\\n\"+this),this.addRow(d,e),this.addRow(c,b),a.trace&&a.traceprint(\"after addRows:\\n\"+this),this.optimize(d);var f=this.rows.get(d);if(a.trace&&a.traceprint(\"azTableauRow.constant == \"+f.constant),!a.approx(f.constant,0))throw this.removeRow(d),this.removeColumn(c),new a.RequiredFailure;var g=this.rows.get(c);if(null!=g){if(g.isConstant)return this.removeRow(c),this.removeRow(d),void 0;var h=g.anyPivotableVariable();this.pivot(h,c)}a.assert(null==this.rows.get(c),\"rowExpression(av) == null\"),this.removeColumn(c),this.removeRow(d)},tryAddingDirectly:function(b){a.trace&&a.fnenterprint(\"tryAddingDirectly: \"+b);var c=this.chooseSubject(b);return null==c?(a.trace&&a.fnexitprint(\"returning false\"),!1):(b.newSubject(c),this.columnsHasKey(c)&&this.substituteOut(c,b),this.addRow(c,b),a.trace&&a.fnexitprint(\"returning true\"),!0)},chooseSubject:function(b){a.trace&&a.fnenterprint(\"chooseSubject: \"+b);var c=null,d=!1,e=!1,f=b.terms,g=f.escapingEach(function(a,b){if(d){if(!a.isRestricted&&!this.columnsHasKey(a))return{retval:a}}else if(a.isRestricted){if(!e&&!a.isDummy&&0>b){var f=this.columns.get(a);(null==f||1==f.size&&this.columnsHasKey(this._objective))&&(c=a,e=!0)}}else c=a,d=!0},this);if(g&&void 0!==g.retval)return g.retval;if(null!=c)return c;var h=0,g=f.escapingEach(function(a,b){return a.isDummy?(this.columnsHasKey(a)||(c=a,h=b),void 0):{retval:null}},this);if(g&&void 0!==g.retval)return g.retval;if(!a.approx(b.constant,0))throw new a.RequiredFailure;return h>0&&b.multiplyMe(-1),c},deltaEditConstant:function(b,c,d){a.trace&&a.fnenterprint(\"deltaEditConstant :\"+b+\", \"+c+\", \"+d);var e=this.rows.get(c);if(null!=e)return e.constant+=b,0>e.constant&&this._infeasibleRows.add(c),void 0;var f=this.rows.get(d);if(null!=f)return f.constant+=-b,0>f.constant&&this._infeasibleRows.add(d),void 0;var g=this.columns.get(d);g||console.log(\"columnVars is null -- tableau is:\\n\"+this),g.each(function(a){var c=this.rows.get(a),e=c.coefficientFor(d);c.constant+=e*b,a.isRestricted&&0>c.constant&&this._infeasibleRows.add(a)},this)},dualOptimize:function(){a.trace&&a.fnenterprint(\"dualOptimize:\");for(var b=this.rows.get(this._objective);this._infeasibleRows.size;){var c=this._infeasibleRows.values()[0];this._infeasibleRows.delete(c);var d=null,e=this.rows.get(c);if(e&&0>e.constant){var g,f=Number.MAX_VALUE,h=e.terms;if(h.each(function(c,e){if(e>0&&c.isPivotable){var h=b.coefficientFor(c);g=h/e,(f>g||a.approx(g,f)&&c.hashCodef.constant&&f.multiplyMe(-1),a.trace&&a.fnexitprint(\"returning \"+f),f},optimize:function(b){a.trace&&a.fnenterprint(\"optimize: \"+b),a.trace&&a.traceprint(\"\"+this),this._optimizeCount++;var c=this.rows.get(b);a.assert(null!=c,\"zRow != null\");for(var g,h,e=null,f=null;;){if(g=0,h=c.terms,h.escapingEach(function(a,b){return a.isPivotable&&g>b?(g=b,e=a,{brk:1}):void 0},this),g>=-d)return;a.trace&&console.log(\"entryVar:\",e,\"objectiveCoeff:\",g);var i=Number.MAX_VALUE,j=this.columns.get(e),k=0;if(j.each(function(b){if(a.trace&&a.traceprint(\"Checking \"+b),b.isPivotable){var c=this.rows.get(b),d=c.coefficientFor(e);a.trace&&a.traceprint(\"pivotable, coeff = \"+d),0>d&&(k=-c.constant/d,(i>k||a.approx(k,i)&&b.hashCodeb;b++){var c=this.rows.get(this._stayPlusErrorVars[b]);null==c&&(c=this.rows.get(this._stayMinusErrorVars[b])),null!=c&&(c.constant=0)}},_setExternalVariables:function(){a.trace&&a.fnenterprint(\"_setExternalVariables:\"),a.trace&&a.traceprint(\"\"+this),this._externalParametricVars.each(function(b){null!=this.rows.get(b)?a.trace&&console.log(\"Error: variable\"+b+\" in _externalParametricVars is basic\"):b.value=0},this),this._externalRows.each(function(a){var b=this.rows.get(a);a.value!=b.constant&&(a.value=b.constant)},this),this._fNeedsSolving=!1,this.onsolved()},onsolved:function(){},insertErrorVar:function(b,c){a.trace&&a.fnenterprint(\"insertErrorVar:\"+b+\", \"+c);var d=this._errorVars.get(c);d||(d=new a.HashSet,this._errorVars.set(b,d)),d.add(c)}})}(this.c||module.parent.exports||{}),function(a){\"use strict\";a.Timer=a.inherit({initialize:function(){this.isRunning=!1,this._elapsedMs=0},start:function(){return this.isRunning=!0,this._startReading=new Date,this},stop:function(){return this.isRunning=!1,this._elapsedMs+=new Date-this._startReading,this},reset:function(){return this.isRunning=!1,this._elapsedMs=0,this},elapsedTime:function(){return this.isRunning?(this._elapsedMs+(new Date-this._startReading))/1e3:this._elapsedMs/1e3}})}(this.c||module.parent.exports||{}),__cassowary_parser=function(){function a(a){return'\"'+a.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\x08/g,\"\\\\b\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\f/g,\"\\\\f\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x07\\x0B\\x0E-\\x1F\\x80-\\uFFFF]/g,escape)+'\"'}var b={parse:function(b,c){function k(a){g>e||(e>g&&(g=e,h=[]),h.push(a))}function l(){var a,b,c,d,f;if(d=e,f=e,a=z(),null!==a){if(c=m(),null!==c)for(b=[];null!==c;)b.push(c),c=m();else b=null;null!==b?(c=z(),null!==c?a=[a,b,c]:(a=null,e=f)):(a=null,e=f)}else a=null,e=f;return null!==a&&(a=function(a,b){return b}(d,a[1])),null===a&&(e=d),a}function m(){var a,b,c,d;return c=e,d=e,a=P(),null!==a?(b=s(),null!==b?a=[a,b]:(a=null,e=d)):(a=null,e=d),null!==a&&(a=function(a,b){return b}(c,a[0])),null===a&&(e=c),a}function n(){var a;return b.length>e?(a=b.charAt(e),e++):(a=null,0===f&&k(\"any character\")),a}function o(){var a;return/^[a-zA-Z]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,0===f&&k(\"[a-zA-Z]\")),null===a&&(36===b.charCodeAt(e)?(a=\"$\",e++):(a=null,0===f&&k('\"$\"')),null===a&&(95===b.charCodeAt(e)?(a=\"_\",e++):(a=null,0===f&&k('\"_\"')))),a}function p(){var a;return f++,/^[\\t\\x0B\\f \\xA0\\uFEFF]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,0===f&&k(\"[\\\\t\\\\x0B\\\\f \\\\xA0\\\\uFEFF]\")),f--,0===f&&null===a&&k(\"whitespace\"),a}function q(){var a;return/^[\\n\\r\\u2028\\u2029]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,0===f&&k(\"[\\\\n\\\\r\\\\u2028\\\\u2029]\")),a}function r(){var a;return f++,10===b.charCodeAt(e)?(a=\"\\n\",e++):(a=null,0===f&&k('\"\\\\n\"')),null===a&&(\"\\r\\n\"===b.substr(e,2)?(a=\"\\r\\n\",e+=2):(a=null,0===f&&k('\"\\\\r\\\\n\"')),null===a&&(13===b.charCodeAt(e)?(a=\"\\r\",e++):(a=null,0===f&&k('\"\\\\r\"')),null===a&&(8232===b.charCodeAt(e)?(a=\"\\u2028\",e++):(a=null,0===f&&k('\"\\\\u2028\"')),null===a&&(8233===b.charCodeAt(e)?(a=\"\\u2029\",e++):(a=null,0===f&&k('\"\\\\u2029\"')))))),f--,0===f&&null===a&&k(\"end of line\"),a}function s(){var a,c,d;return d=e,a=z(),null!==a?(59===b.charCodeAt(e)?(c=\";\",e++):(c=null,0===f&&k('\";\"')),null!==c?a=[a,c]:(a=null,e=d)):(a=null,e=d),null===a&&(d=e,a=y(),null!==a?(c=r(),null!==c?a=[a,c]:(a=null,e=d)):(a=null,e=d),null===a&&(d=e,a=z(),null!==a?(c=t(),null!==c?a=[a,c]:(a=null,e=d)):(a=null,e=d))),a}function t(){var a,c;return c=e,f++,b.length>e?(a=b.charAt(e),e++):(a=null,0===f&&k(\"any character\")),f--,null===a?a=\"\":(a=null,e=c),a}function u(){var a;return f++,a=v(),null===a&&(a=x()),f--,0===f&&null===a&&k(\"comment\"),a}function v(){var a,c,d,g,h,i,j;if(h=e,\"/*\"===b.substr(e,2)?(a=\"/*\",e+=2):(a=null,0===f&&k('\"/*\"')),null!==a){for(c=[],i=e,j=e,f++,\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==d;)c.push(d),i=e,j=e,f++,\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==c?(\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),null!==d?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)}else a=null,e=h;return a}function w(){var a,c,d,g,h,i,j;if(h=e,\"/*\"===b.substr(e,2)?(a=\"/*\",e+=2):(a=null,0===f&&k('\"/*\"')),null!==a){for(c=[],i=e,j=e,f++,\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),null===d&&(d=q()),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==d;)c.push(d),i=e,j=e,f++,\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),null===d&&(d=q()),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==c?(\"*/\"===b.substr(e,2)?(d=\"*/\",e+=2):(d=null,0===f&&k('\"*/\"')),null!==d?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)}else a=null,e=h;return a}function x(){var a,c,d,g,h,i,j;if(h=e,\"//\"===b.substr(e,2)?(a=\"//\",e+=2):(a=null,0===f&&k('\"//\"')),null!==a){for(c=[],i=e,j=e,f++,d=q(),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==d;)c.push(d),i=e,j=e,f++,d=q(),f--,null===d?d=\"\":(d=null,e=j),null!==d?(g=n(),null!==g?d=[d,g]:(d=null,e=i)):(d=null,e=i);null!==c?a=[a,c]:(a=null,e=h)}else a=null,e=h;return a}function y(){var a,b;for(a=[],b=p(),null===b&&(b=w(),null===b&&(b=x()));null!==b;)a.push(b),b=p(),null===b&&(b=w(),null===b&&(b=x()));return a}function z(){var a,b;for(a=[],b=p(),null===b&&(b=r(),null===b&&(b=u()));null!==b;)a.push(b),b=p(),null===b&&(b=r(),null===b&&(b=u()));return a}function A(){var a,b;return b=e,a=C(),null===a&&(a=B()),null!==a&&(a=function(a,b){return{type:\"NumericLiteral\",value:b}}(b,a)),null===a&&(e=b),a}function B(){var a,c,d;if(d=e,/^[0-9]/.test(b.charAt(e))?(c=b.charAt(e),e++):(c=null,0===f&&k(\"[0-9]\")),null!==c)for(a=[];null!==c;)a.push(c),/^[0-9]/.test(b.charAt(e))?(c=b.charAt(e),e++):(c=null,0===f&&k(\"[0-9]\"));else a=null;return null!==a&&(a=function(a,b){return parseInt(b.join(\"\"))}(d,a)),null===a&&(e=d),a}function C(){var a,c,d,g,h;return g=e,h=e,a=B(),null!==a?(46===b.charCodeAt(e)?(c=\".\",e++):(c=null,0===f&&k('\".\"')),null!==c?(d=B(),null!==d?a=[a,c,d]:(a=null,e=h)):(a=null,e=h)):(a=null,e=h),null!==a&&(a=function(a,b){return parseFloat(b.join(\"\"))}(g,a)),null===a&&(e=g),a}function D(){var a,c,d,g;if(g=e,/^[\\-+]/.test(b.charAt(e))?(a=b.charAt(e),e++):(a=null,0===f&&k(\"[\\\\-+]\")),a=null!==a?a:\"\",null!==a){if(/^[0-9]/.test(b.charAt(e))?(d=b.charAt(e),e++):(d=null,0===f&&k(\"[0-9]\")),null!==d)for(c=[];null!==d;)c.push(d),/^[0-9]/.test(b.charAt(e))?(d=b.charAt(e),e++):(d=null,0===f&&k(\"[0-9]\"));else c=null;null!==c?a=[a,c]:(a=null,e=g)}else a=null,e=g;return a}function E(){var a,b;return f++,b=e,a=F(),null!==a&&(a=function(a,b){return b}(b,a)),null===a&&(e=b),f--,0===f&&null===a&&k(\"identifier\"),a}function F(){var a,b,c,d,g;if(f++,d=e,g=e,a=o(),null!==a){for(b=[],c=o();null!==c;)b.push(c),c=o();null!==b?a=[a,b]:(a=null,e=g)}else a=null,e=g;return null!==a&&(a=function(a,b,c){return b+c.join(\"\")}(d,a[0],a[1])),null===a&&(e=d),f--,0===f&&null===a&&k(\"identifier\"),a}function G(){var a,c,d,g,h,i,j;return i=e,a=E(),null!==a&&(a=function(a,b){return{type:\"Variable\",name:b}}(i,a)),null===a&&(e=i),null===a&&(a=A(),null===a&&(i=e,j=e,40===b.charCodeAt(e)?(a=\"(\",e++):(a=null,0===f&&k('\"(\"')),null!==a?(c=z(),null!==c?(d=P(),null!==d?(g=z(),null!==g?(41===b.charCodeAt(e)?(h=\")\",e++):(h=null,0===f&&k('\")\"')),null!==h?a=[a,c,d,g,h]:(a=null,e=j)):(a=null,e=j)):(a=null,e=j)):(a=null,e=j)):(a=null,e=j),null!==a&&(a=function(a,b){return b}(i,a[2])),null===a&&(e=i))),a}function H(){var a,b,c,d,f;return a=G(),null===a&&(d=e,f=e,a=I(),null!==a?(b=z(),null!==b?(c=H(),null!==c?a=[a,b,c]:(a=null,e=f)):(a=null,e=f)):(a=null,e=f),null!==a&&(a=function(a,b,c){return{type:\"UnaryExpression\",operator:b,expression:c}}(d,a[0],a[2])),null===a&&(e=d)),a}function I(){var a;return 43===b.charCodeAt(e)?(a=\"+\",e++):(a=null,0===f&&k('\"+\"')),null===a&&(45===b.charCodeAt(e)?(a=\"-\",e++):(a=null,0===f&&k('\"-\"')),null===a&&(33===b.charCodeAt(e)?(a=\"!\",e++):(a=null,0===f&&k('\"!\"')))),a}function J(){var a,b,c,d,f,g,h,i,j;if(h=e,i=e,a=H(),null!==a){for(b=[],j=e,c=z(),null!==c?(d=K(),null!==d?(f=z(),null!==f?(g=H(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==c;)b.push(c),j=e,c=z(),null!==c?(d=K(),null!==d?(f=z(),null!==f?(g=H(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==b?a=[a,b]:(a=null,e=i)}else a=null,e=i;return null!==a&&(a=function(a,b,c){for(var d=b,e=0;c.length>e;e++)d={type:\"MultiplicativeExpression\",operator:c[e][1],left:d,right:c[e][3]};return d}(h,a[0],a[1])),null===a&&(e=h),a}function K(){var a;return 42===b.charCodeAt(e)?(a=\"*\",e++):(a=null,0===f&&k('\"*\"')),null===a&&(47===b.charCodeAt(e)?(a=\"/\",e++):(a=null,0===f&&k('\"/\"'))),a}function L(){var a,b,c,d,f,g,h,i,j;if(h=e,i=e,a=J(),null!==a){for(b=[],j=e,c=z(),null!==c?(d=M(),null!==d?(f=z(),null!==f?(g=J(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==c;)b.push(c),j=e,c=z(),null!==c?(d=M(),null!==d?(f=z(),null!==f?(g=J(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==b?a=[a,b]:(a=null,e=i)}else a=null,e=i;return null!==a&&(a=function(a,b,c){for(var d=b,e=0;c.length>e;e++)d={type:\"AdditiveExpression\",operator:c[e][1],left:d,right:c[e][3]};return d}(h,a[0],a[1])),null===a&&(e=h),a}function M(){var a;return 43===b.charCodeAt(e)?(a=\"+\",e++):(a=null,0===f&&k('\"+\"')),null===a&&(45===b.charCodeAt(e)?(a=\"-\",e++):(a=null,0===f&&k('\"-\"'))),a}function N(){var a,b,c,d,f,g,h,i,j;if(h=e,i=e,a=L(),null!==a){for(b=[],j=e,c=z(),null!==c?(d=O(),null!==d?(f=z(),null!==f?(g=L(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==c;)b.push(c),j=e,c=z(),null!==c?(d=O(),null!==d?(f=z(),null!==f?(g=L(),null!==g?c=[c,d,f,g]:(c=null,e=j)):(c=null,e=j)):(c=null,e=j)):(c=null,e=j);null!==b?a=[a,b]:(a=null,e=i)}else a=null,e=i;return null!==a&&(a=function(a,b,c){for(var d=b,e=0;c.length>e;e++)d={type:\"Inequality\",operator:c[e][1],left:d,right:c[e][3]};return d}(h,a[0],a[1])),null===a&&(e=h),a}function O(){var a;return\"<=\"===b.substr(e,2)?(a=\"<=\",e+=2):(a=null,0===f&&k('\"<=\"')),null===a&&(\">=\"===b.substr(e,2)?(a=\">=\",e+=2):(a=null,0===f&&k('\">=\"')),null===a&&(60===b.charCodeAt(e)?(a=\"<\",e++):(a=null,0===f&&k('\"<\"')),null===a&&(62===b.charCodeAt(e)?(a=\">\",e++):(a=null,0===f&&k('\">\"'))))),a}function P(){var a,c,d,g,h,i,j,l,m;if(j=e,l=e,a=N(),null!==a){for(c=[],m=e,d=z(),null!==d?(\"==\"===b.substr(e,2)?(g=\"==\",e+=2):(g=null,0===f&&k('\"==\"')),null!==g?(h=z(),null!==h?(i=N(),null!==i?d=[d,g,h,i]:(d=null,e=m)):(d=null,e=m)):(d=null,e=m)):(d=null,e=m);null!==d;)c.push(d),m=e,d=z(),null!==d?(\"==\"===b.substr(e,2)?(g=\"==\",e+=2):(g=null,0===f&&k('\"==\"')),null!==g?(h=z(),null!==h?(i=N(),null!==i?d=[d,g,h,i]:(d=null,e=m)):(d=null,e=m)):(d=null,e=m)):(d=null,e=m);null!==c?a=[a,c]:(a=null,e=l)}else a=null,e=l;return null!==a&&(a=function(a,b,c){for(var d=b,e=0;c.length>e;e++)d={type:\"Equality\",operator:c[e][1],left:d,right:c[e][3]};return d}(j,a[0],a[1])),null===a&&(e=j),a}function Q(a){a.sort();for(var b=null,c=[],d=0;a.length>d;d++)a[d]!==b&&(c.push(a[d]),b=a[d]);return c}function R(){for(var a=1,c=1,d=!1,f=0;Math.max(e,g)>f;f++){var h=b.charAt(f);\"\\n\"===h?(d||a++,c=1,d=!1):\"\\r\"===h||\"\\u2028\"===h||\"\\u2029\"===h?(a++,c=1,d=!0):(c++,d=!1)}return{line:a,column:c}}var d={start:l,Statement:m,SourceCharacter:n,IdentifierStart:o,WhiteSpace:p,LineTerminator:q,LineTerminatorSequence:r,EOS:s,EOF:t,Comment:u,MultiLineComment:v,MultiLineCommentNoLineTerminator:w,SingleLineComment:x,_:y,__:z,Literal:A,Integer:B,Real:C,SignedInteger:D,Identifier:E,IdentifierName:F,PrimaryExpression:G,UnaryExpression:H,UnaryOperator:I,MultiplicativeExpression:J,MultiplicativeOperator:K,AdditiveExpression:L,AdditiveOperator:M,InequalityExpression:N,InequalityOperator:O,LinearExpression:P};if(void 0!==c){if(void 0===d[c])throw Error(\"Invalid rule name: \"+a(c)+\".\")}else c=\"start\";var e=0,f=0,g=0,h=[],S=d[c]();if(null===S||e!==b.length){var T=Math.max(e,g),U=b.length>T?b.charAt(T):null,V=R();throw new this.SyntaxError(Q(h),U,T,V.line,V.column)}return S},toSource:function(){return this._source}};return b.SyntaxError=function(b,c,d,e,f){function g(b,c){var d,e;switch(b.length){case 0:d=\"end of input\";break;case 1:d=b[0];break;default:d=b.slice(0,b.length-1).join(\", \")+\" or \"+b[b.length-1]}return e=c?a(c):\"end of input\",\"Expected \"+d+\" but \"+e+\" found.\"}this.name=\"SyntaxError\",this.expected=b,this.found=c,this.message=g(b,c),this.offset=d,this.line=e,this.column=f},b.SyntaxError.prototype=Error.prototype,b}();\n}).call(\n (typeof module != \"undefined\") ?\n (module.compiled = true && module) : this\n);\n"]} \ No newline at end of file