mapexplorer-rails 1.0.0.pre.alpha → 1.0.0.pre.alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mapexplorer/rails/version.rb +1 -1
- data/vendor/assets/babel-polyfill/README.md +0 -0
- data/vendor/assets/babel-polyfill/bower.json +22 -0
- data/vendor/assets/babel-polyfill/browser-polyfill.js +5 -0
- data/vendor/assets/d3/LICENSE +27 -0
- data/vendor/assets/d3/README.md +45 -0
- data/vendor/assets/d3/bower.json +7 -0
- data/vendor/assets/d3/d3.js +16383 -0
- data/vendor/assets/d3/d3.min.js +8 -0
- data/vendor/assets/jsrender/MIT-LICENSE.txt +20 -0
- data/vendor/assets/jsrender/bower.json +43 -0
- data/vendor/assets/jsrender/index.js +8 -0
- data/vendor/assets/jsrender/jsrender-node.js +2298 -0
- data/vendor/assets/jsrender/jsrender.js +2350 -0
- data/vendor/assets/jsrender/jsrender.min.js +4 -0
- data/vendor/assets/jsrender/jsrender.min.js.map +1 -0
- data/vendor/assets/jsrender/tmplify/index.js +64 -0
- data/vendor/assets/mapexplorer-core/LICENSE +21 -0
- data/vendor/assets/mapexplorer-core/README.md +235 -0
- data/vendor/assets/mapexplorer-core/assets/stylesheets/map.scss +38 -0
- data/vendor/assets/mapexplorer-core/assets/stylesheets/mapexplorer-core.scss +3 -0
- data/vendor/assets/mapexplorer-core/assets/stylesheets/merkle-path.scss +10 -0
- data/vendor/assets/mapexplorer-core/assets/stylesheets/variables.scss +14 -0
- data/vendor/assets/mapexplorer-core/bower.json +32 -0
- data/vendor/assets/mapexplorer-core/dist/mapexplorer-core.js +3872 -0
- data/vendor/assets/mapexplorer-core/dist/mapexplorer-core.js.map +1 -0
- data/vendor/assets/mapexplorer-core/dist/mapexplorer-core.min.js +35 -0
- data/vendor/assets/mapexplorer-core/karma.conf.js +117 -0
- data/vendor/assets/mapexplorer-core/package.json +85 -0
- data/vendor/assets/mapexplorer-core/rollup.bower.config.js +41 -0
- data/vendor/assets/mapexplorer-core/rollup.es.config.js +16 -0
- data/vendor/assets/mapexplorer-core/rollup.umd.config.js +25 -0
- data/vendor/assets/stratumn-sdk/LICENSE +21 -0
- data/vendor/assets/stratumn-sdk/README.md +267 -0
- data/vendor/assets/stratumn-sdk/bower.json +27 -0
- data/vendor/assets/stratumn-sdk/dist/stratumn-sdk.js +813 -0
- data/vendor/assets/stratumn-sdk/dist/stratumn-sdk.js.map +1 -0
- data/vendor/assets/stratumn-sdk/dist/stratumn-sdk.min.js +2 -0
- data/vendor/assets/stratumn-sdk/dist/stratumn-sdk.min.js.map +1 -0
- data/vendor/assets/stratumn-sdk/examples/browser/index.html +34 -0
- data/vendor/assets/stratumn-sdk/package.json +67 -0
- data/vendor/assets/stratumn-sdk/rollup.base.config.js +13 -0
- data/vendor/assets/stratumn-sdk/rollup.bower.config.js +18 -0
- data/vendor/assets/stratumn-sdk/rollup.bower.min.config.js +7 -0
- data/vendor/assets/stratumn-sdk/rollup.es.config.js +9 -0
- data/vendor/assets/stratumn-sdk/rollup.umd.config.js +10 -0
- metadata +46 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":null,"sources":["../src/treeUtils.js","../src/parseChainscript.js","../src/ChainTree.js","../src/compactHash.js","../node_modules/deepmerge/index.js","../node_modules/httpplease/plugins/jsonrequest.js","../node_modules/httpplease/plugins/jsonresponse.js","../node_modules/httpplease/plugins/json.js","../node_modules/httpplease/plugins/cleanurl.js","../node_modules/httpplease/lib/xhr-browser.js","../node_modules/httpplease/lib/utils/delay.js","../node_modules/httpplease/lib/request.js","../node_modules/httpplease/node_modules/xtend/index.js","../node_modules/httpplease/lib/utils/extractResponseProps.js","../node_modules/httpplease/lib/response.js","../node_modules/httpplease/lib/error.js","../node_modules/httpplease/lib/utils/once.js","../node_modules/httpplease/lib/index.js","../node_modules/stratumn-sdk/lib/stratumn-sdk.mjs","../src/resolveLinks.js","../src/wrap.js","../src/parseIfJson.js","../src/flatten.js","../src/tagsSet.js","../src/ChainTreeBuilder.js","../node_modules/canonical-json/index.js","../node_modules/js-sha256/src/sha256.js","../src/hashJson.js","../node_modules/rollup-plugin-node-globals/dist/buffer.js","../src/computeMerkleParent.js","../src/SegmentValidator.js","../src/ChainValidator.js","../src/MerklePathTree.js"],"sourcesContent":["export function makeLink(source, target, margin = 0) {\n const finalTarget = target || source;\n const targetX = finalTarget.x;\n const targetY = finalTarget.y - margin;\n return `M${source.y},${source.x}\n C${(source.y + targetY) / 2},${source.x} ${(source.y + targetY) / 2},\n ${targetX} ${targetY},${targetX}`;\n}\n\nexport function finalLink(d, margin) {\n return makeLink(d.source, d.target, margin);\n}\n\nexport function translate(x, y) {\n return `translate(${y}, ${x})`;\n}\n\nexport function stashPositions(nodes) {\n // Stash the old positions for transition.\n nodes.forEach(d => {\n d.x0 = d.x;\n d.y0 = d.y;\n });\n}\n","import { stratify } from 'd3-hierarchy';\n\nexport default function parseChainscript(chainscript) {\n return stratify()\n .id(d => d.meta.linkHash)\n .parentId(d => d.link.meta.prevLinkHash)(chainscript);\n}\n","import { makeLink, finalLink, translate } from './treeUtils';\nimport parseChainscript from './parseChainscript';\nimport { tree } from 'd3-hierarchy';\nimport { transition } from 'd3-transition';\nimport { easeLinear } from 'd3-ease';\nimport { select, selectAll, event } from 'd3-selection';\nimport { zoom } from 'd3-zoom';\nimport { max } from 'd3-array';\n\nconst margin = { top: 20, right: 120, bottom: 20, left: 120 };\nconst height = 800 - margin.top - margin.bottom;\n\nexport default class ChainTree {\n constructor(element) {\n this.tree = tree();\n\n this.svg = select(element).append('svg');\n this.innerG = this.svg.append('g');\n\n this.zoomed = () => this.innerG.attr('transform', event.transform);\n }\n\n display(chainscript, options) {\n if (chainscript && chainscript.length) {\n const root = parseChainscript(chainscript);\n this._update(root, options);\n } else {\n this._update(null, options);\n }\n }\n\n _update(root, options) {\n const self = this;\n const polygon = options.polygonSize;\n const nodes = root ? root.descendants() : [];\n const links = root ? root.links() : [];\n const maxDepth = max(nodes, x => x.depth) || 0;\n const computedWidth = Math.max(maxDepth * (polygon.width + options.getArrowLength()), 500);\n const treeTransition = transition()\n .duration(options.duration)\n .ease(easeLinear);\n\n const branchesCount = nodes.reduce(\n (pre, cur) => pre + (cur.children ? Math.max(cur.children.length - 1, 0) : 0),\n 1\n );\n const computedHeight = branchesCount * polygon.height * options.verticalSpacing;\n\n this.tree.size([computedHeight, computedWidth]);\n this.svg\n .attr('width',\n options.zoomable ? 1200 : computedWidth + margin.right + margin.left +\n options.getArrowLength())\n .attr('height',\n (options.zoomable ? height : computedHeight) + margin.top + margin.bottom);\n\n // Compute the new tree layout.\n if (root) {\n root.x0 = computedHeight / 2;\n root.y0 = 0;\n this.tree(root);\n root.each(node => { node.y += options.getArrowLength(); });\n }\n\n if (options.zoomable) {\n this.svg.call(zoom().on('zoom', this.zoomed));\n } else {\n this.svg.on('.zoom', null);\n }\n this.innerG.attr('transform', () => translate(margin.top, margin.left));\n\n // Update the links...\n const link = this.innerG.selectAll('path.link').data(links,\n function key(d) { return d ? d.target.id : this.id; });\n\n link.enter().insert('text')\n .attr('dx', polygon.width + 20)\n .attr('dy', '-0.3em')\n .append('textPath')\n .attr('class', 'textpath')\n .attr('xlink:href', d => `#link-${d.target.id}`)\n .text(options.getLinkText);\n\n // Enter any new links at the parent's previous position.\n link.enter().insert('path', 'g')\n .attr('class', 'link')\n .attr('id', d => `link-${d.target.id}`);\n\n const linkUpdate = this.innerG.selectAll('path.link:not(.init)').transition(treeTransition);\n\n // Transition links to their new position.\n linkUpdate.attr('d', d => finalLink(d, 15));\n\n link.exit().remove();\n\n // Update the nodes...\n const node = this.innerG.selectAll('g.node').data(nodes,\n function key(d) { return d ? d.id : this.id; });\n\n // Enter any new nodes at the parent's previous position.\n const nodeEnter = node.enter().append('g')\n .attr('class', d => ['node'].concat(d.data.link.meta.tags).join(' '))\n .attr('id', d => d.id)\n .attr('transform', d => {\n const origin = d.parent && d.parent.x0 ? d.parent : root;\n return translate(origin.x0, origin.y0);\n })\n .on('click', function onClick(d) {\n selectAll('g.node')\n .classed('selected', false);\n select(this)\n .classed('selected', true);\n options.onclick(d, () => {\n self.innerG.selectAll('g.node.selected').classed('selected', false);\n }, this);\n });\n\n nodeEnter.append('polygon').attr('points',\n `0,${polygon.height / 4} ${polygon.width / 2},${polygon.height / 2} ` +\n `${polygon.width},${polygon.height / 4} ${polygon.width},${-polygon.height / 4} ` +\n `${polygon.width / 2},${-polygon.height / 2} 0,${-polygon.height / 4}`);\n\n nodeEnter.append('rect')\n .attr('y', -(options.getBoxSize().height / 2))\n .attr('width', polygon.width)\n .attr('height', options.getBoxSize().height)\n .style('fill-opacity', 1e-6);\n\n nodeEnter.append('text')\n .attr('dx', 12)\n .attr('dy', 4)\n .attr('text-anchor', 'begin')\n .text(options.getSegmentText)\n .style('fill-opacity', 1e-6);\n\n // Transition nodes to their new position.\n const nodeUpdate = this.svg.selectAll('g.node').transition(treeTransition);\n\n nodeUpdate.attr('transform', d => translate(d.x, d.y));\n nodeUpdate.select('text').style('fill-opacity', 1);\n nodeUpdate.select('rect').style('fill-opacity', 1);\n\n // Transition exiting nodes to the parent's new position.\n const nodeExit = node.exit(); // .transition(treeTransition);\n nodeExit.select('text').style('fill-opacity', 1e-6);\n nodeExit.attr('transform', () => translate(0, 0)).remove();\n\n this._drawInit(root);\n }\n\n _drawInit(root) {\n this.innerG.append('path')\n .attr('class', 'link init')\n .attr('id', 'init-link')\n .attr('d', makeLink({ x: root.x, y: root.y0 }, root, 15));\n\n this.innerG.append('text')\n .attr('dx', 20)\n .attr('dy', '-0.3em')\n .append('textPath')\n .attr('class', 'textpath')\n .attr('xlink:href', '#init-link')\n .text('init');\n }\n}\n","export default function (hash) {\n return `${hash.slice(0, 3)}${hash.slice(hash.length - 3)}`;\n}\n","(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define(factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.deepmerge = factory();\n }\n}(this, function () {\n\nreturn function deepmerge(target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(function(e, i) {\n if (typeof dst[i] === 'undefined') {\n dst[i] = e;\n } else if (typeof e === 'object') {\n dst[i] = deepmerge(target[i], e);\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e);\n }\n }\n });\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(function (key) {\n dst[key] = target[key];\n })\n }\n Object.keys(src).forEach(function (key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepmerge(target[key], src[key]);\n }\n }\n });\n }\n\n return dst;\n}\n\n}));\n","'use strict';\n\nmodule.exports = {\n processRequest: function(req) {\n var\n contentType = req.header('Content-Type'),\n hasJsonContentType = contentType &&\n contentType.indexOf('application/json') !== -1;\n\n if (contentType != null && !hasJsonContentType) {\n return;\n }\n\n if (req.body) {\n if (!contentType) {\n req.header('Content-Type', 'application/json');\n }\n\n req.body = JSON.stringify(req.body);\n }\n }\n};\n","'use strict';\n\nmodule.exports = {\n processRequest: function(req) {\n var accept = req.header('Accept');\n if (accept == null) {\n req.header('Accept', 'application/json');\n }\n },\n processResponse: function(res) {\n // Check to see if the contentype is \"something/json\" or\n // \"something/somethingelse+json\"\n if (res.contentType && /^.*\\/(?:.*\\+)?json(;|$)/i.test(res.contentType)) {\n var raw = typeof res.body === 'string' ? res.body : res.text;\n if (raw) {\n res.body = JSON.parse(raw);\n }\n }\n }\n};\n","'use strict';\n\nvar jsonrequest = require('./jsonrequest'),\n jsonresponse = require('./jsonresponse');\n\nmodule.exports = {\n processRequest: function(req) {\n jsonrequest.processRequest.call(this, req);\n jsonresponse.processRequest.call(this, req);\n },\n processResponse: function(res) {\n jsonresponse.processResponse.call(this, res);\n }\n};\n","'use strict';\n\nmodule.exports = {\n processRequest: function(req) {\n req.url = req.url.replace(/[^%]+/g, function(s) {\n return encodeURI(s);\n });\n }\n};\n","module.exports = window.XMLHttpRequest;\n","'use strict';\n\n// Wrap a function in a `setTimeout` call. This is used to guarantee async\n// behavior, which can avoid unexpected errors.\n\nmodule.exports = function(fn) {\n return function() {\n var\n args = Array.prototype.slice.call(arguments, 0),\n newFunc = function() {\n return fn.apply(null, args);\n };\n setTimeout(newFunc, 0);\n };\n};\n","'use strict';\n\nfunction Request(optsOrUrl) {\n var opts = typeof optsOrUrl === 'string' ? {url: optsOrUrl} : optsOrUrl || {};\n this.method = opts.method ? opts.method.toUpperCase() : 'GET';\n this.url = opts.url;\n this.headers = opts.headers || {};\n this.body = opts.body;\n this.timeout = opts.timeout || 0;\n this.errorOn404 = opts.errorOn404 != null ? opts.errorOn404 : true;\n this.onload = opts.onload;\n this.onerror = opts.onerror;\n}\n\nRequest.prototype.abort = function() {\n if (this.aborted) return;\n this.aborted = true;\n this.xhr.abort();\n return this;\n};\n\nRequest.prototype.header = function(name, value) {\n var k;\n for (k in this.headers) {\n if (this.headers.hasOwnProperty(k)) {\n if (name.toLowerCase() === k.toLowerCase()) {\n if (arguments.length === 1) {\n return this.headers[k];\n }\n\n delete this.headers[k];\n break;\n }\n }\n }\n if (value != null) {\n this.headers[name] = value;\n return value;\n }\n};\n\n\nmodule.exports = Request;\n","module.exports = extend\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (source.hasOwnProperty(key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","'use strict';\n\nvar extend = require('xtend');\n\nmodule.exports = function(req) {\n var xhr = req.xhr;\n var props = {request: req, xhr: xhr};\n\n // Try to create the response from the request. If the request was aborted,\n // accesssing properties of the XHR may throw an error, so we wrap in a\n // try/catch.\n try {\n var lines, i, m, headers = {};\n if (xhr.getAllResponseHeaders) {\n lines = xhr.getAllResponseHeaders().split('\\n');\n for (i = 0; i < lines.length; i++) {\n if ((m = lines[i].match(/\\s*([^\\s]+):\\s+([^\\s]+)/))) {\n headers[m[1]] = m[2];\n }\n }\n }\n\n props = extend(props, {\n status: xhr.status,\n contentType: xhr.contentType || (xhr.getResponseHeader && xhr.getResponseHeader('Content-Type')),\n headers: headers,\n text: xhr.responseText,\n body: xhr.response || xhr.responseText\n });\n } catch (err) {}\n\n return props;\n};\n","'use strict';\n\nvar Request = require('./request');\nvar extractResponseProps = require('./utils/extractResponseProps');\n\nfunction Response(props) {\n this.request = props.request;\n this.xhr = props.xhr;\n this.headers = props.headers || {};\n this.status = props.status || 0;\n this.text = props.text;\n this.body = props.body;\n this.contentType = props.contentType;\n this.isHttpError = props.status >= 400;\n}\n\nResponse.prototype.header = Request.prototype.header;\n\nResponse.fromRequest = function(req) {\n return new Response(extractResponseProps(req));\n};\n\n\nmodule.exports = Response;\n","'use strict';\n\nvar Response = require('./response');\nvar extractResponseProps = require('./utils/extractResponseProps');\nvar extend = require('xtend');\n\nfunction RequestError(message, props) {\n var err = new Error(message);\n err.name = 'RequestError';\n this.name = err.name;\n this.message = err.message;\n if (err.stack) {\n this.stack = err.stack;\n }\n\n this.toString = function() {\n return this.message;\n };\n\n for (var k in props) {\n if (props.hasOwnProperty(k)) {\n this[k] = props[k];\n }\n }\n}\n\nRequestError.prototype = extend(Error.prototype);\nRequestError.prototype.constructor = RequestError;\n\nRequestError.create = function(message, req, props) {\n var err = new RequestError(message, props);\n Response.call(err, extractResponseProps(req));\n return err;\n};\n\nmodule.exports = RequestError;\n","'use strict';\n\n// A \"once\" utility.\nmodule.exports = function(fn) {\n var result, called = false;\n return function() {\n if (!called) {\n called = true;\n result = fn.apply(this, arguments);\n }\n return result;\n };\n};\n","'use strict';\n\nvar\n cleanURL = require('../plugins/cleanurl'),\n XHR = require('./xhr'),\n delay = require('./utils/delay'),\n RequestError = require('./error'),\n Response = require('./response'),\n Request = require('./request'),\n extend = require('xtend'),\n once = require('./utils/once');\n\nvar i,\n createError = RequestError.create;\n\nfunction factory(defaults, plugins) {\n defaults = defaults || {};\n plugins = plugins || [];\n\n function http(req, cb) {\n var xhr, plugin, done, k, timeoutId, supportsLoadAndErrorEvents;\n\n req = new Request(extend(defaults, req));\n\n for (i = 0; i < plugins.length; i++) {\n plugin = plugins[i];\n if (plugin.processRequest) {\n plugin.processRequest(req);\n }\n }\n\n // Give the plugins a chance to create the XHR object\n for (i = 0; i < plugins.length; i++) {\n plugin = plugins[i];\n if (plugin.createXHR) {\n xhr = plugin.createXHR(req);\n break; // First come, first serve\n }\n }\n xhr = xhr || new XHR();\n\n req.xhr = xhr;\n\n // Use a single completion callback. This can be called with or without\n // an error. If no error is passed, the request will be examined to see\n // if it was successful.\n done = once(delay(function(rawError) {\n clearTimeout(timeoutId);\n xhr.onload = xhr.onerror = xhr.onabort = xhr.onreadystatechange = xhr.ontimeout = xhr.onprogress = null;\n\n var err = getError(req, rawError);\n\n var res = err || Response.fromRequest(req);\n for (i = 0; i < plugins.length; i++) {\n plugin = plugins[i];\n if (plugin.processResponse) {\n plugin.processResponse(res);\n }\n }\n\n // Invoke callbacks\n if (err && req.onerror) req.onerror(err);\n if (!err && req.onload) req.onload(res);\n if (cb) cb(err, err ? undefined : res);\n\n }));\n\n supportsLoadAndErrorEvents = ('onload' in xhr) && ('onerror' in xhr);\n xhr.onload = function() { done(); };\n xhr.onerror = done;\n xhr.onabort = function() { done(); };\n\n // We'd rather use `onload`, `onerror`, and `onabort` since they're the\n // only way to reliably detect successes and failures but, if they\n // aren't available, we fall back to using `onreadystatechange`.\n xhr.onreadystatechange = function() {\n if (xhr.readyState !== 4) return;\n\n if (req.aborted) return done();\n\n if (!supportsLoadAndErrorEvents) {\n // Assume a status of 0 is an error. This could be a false\n // positive, but there's no way to tell when using\n // `onreadystatechange` ):\n // See matthewwithanm/react-inlinesvg#10.\n\n // Some browsers don't like you reading XHR properties when the\n // XHR has been aborted. In case we've gotten here as a result\n // of that (either our calling `about()` in the timeout handler\n // or the user calling it directly even though they shouldn't),\n // be careful about accessing it.\n var status;\n try {\n status = xhr.status;\n } catch (err) {}\n var err = status === 0 ? new Error('Internal XHR Error') : null;\n return done(err);\n }\n };\n\n // IE sometimes fails if you don't specify every handler.\n // See http://social.msdn.microsoft.com/Forums/ie/en-US/30ef3add-767c-4436-b8a9-f1ca19b4812e/ie9-rtm-xdomainrequest-issued-requests-may-abort-if-all-event-handlers-not-specified?forum=iewebdevelopment\n xhr.ontimeout = function() { /* noop */ };\n xhr.onprogress = function() { /* noop */ };\n\n xhr.open(req.method, req.url);\n\n if (req.timeout) {\n // If we use the normal XHR timeout mechanism (`xhr.timeout` and\n // `xhr.ontimeout`), `onreadystatechange` will be triggered before\n // `ontimeout`. There's no way to recognize that it was triggered by\n // a timeout, and we'd be unable to dispatch the right error.\n timeoutId = setTimeout(function() {\n req.timedOut = true;\n done();\n try {\n xhr.abort();\n } catch (err) {}\n }, req.timeout);\n }\n\n for (k in req.headers) {\n if (req.headers.hasOwnProperty(k)) {\n xhr.setRequestHeader(k, req.headers[k]);\n }\n }\n\n xhr.send(req.body);\n\n return req;\n }\n\n var method,\n methods = ['get', 'post', 'put', 'head', 'patch', 'delete'],\n verb = function(method) {\n return function(req, cb) {\n req = new Request(req);\n req.method = method;\n return http(req, cb);\n };\n };\n for (i = 0; i < methods.length; i++) {\n method = methods[i];\n http[method] = verb(method);\n }\n\n http.plugins = function() {\n return plugins;\n };\n\n http.defaults = function(newValues) {\n if (newValues) {\n return factory(extend(defaults, newValues), plugins);\n }\n return defaults;\n };\n\n http.use = function() {\n var newPlugins = Array.prototype.slice.call(arguments, 0);\n return factory(defaults, plugins.concat(newPlugins));\n };\n\n http.bare = function() {\n return factory();\n };\n\n http.Request = Request;\n http.Response = Response;\n http.RequestError = RequestError;\n\n return http;\n}\n\nmodule.exports = factory({}, [cleanURL]);\n\n/**\n * Analyze the request to see if it represents an error. If so, return it! An\n * original error object can be passed as a hint.\n */\nfunction getError(req, err) {\n if (req.aborted) return createError('Request aborted', req, {name: 'Abort'});\n\n if (req.timedOut) return createError('Request timeout', req, {name: 'Timeout'});\n\n var xhr = req.xhr;\n var type = Math.floor(xhr.status / 100);\n\n var kind;\n switch (type) {\n case 0:\n case 2:\n // These don't represent errors unless the function was passed an\n // error object explicitly.\n if (!err) return;\n return createError(err.message, req);\n case 4:\n // Sometimes 4XX statuses aren't errors.\n if (xhr.status === 404 && !req.errorOn404) return;\n kind = 'Client';\n break;\n case 5:\n kind = 'Server';\n break;\n default:\n kind = 'HTTP';\n }\n var msg = kind + ' Error: ' +\n 'The server returned a status of ' + xhr.status +\n ' for the request \"' +\n req.method.toUpperCase() + ' ' + req.url + '\"';\n return createError(msg, req);\n}\n","import json from 'httpplease/plugins/json';\nimport httpplease from 'httpplease';\n\nfunction deprecated(oldFunc, newFunc) {\n if (!newFunc) {\n console.warn(\"WARNING: \" + oldFunc + \" is deprecated.\");\n } else {\n console.warn(\"WARNING: \" + oldFunc + \" is deprecated. Please use \" + newFunc + \" instead.\");\n }\n}\n\n/**\n * Makes a query string.\n * @param {object} obj - an object of keys\n * @returns {string} a query string\n */\nfunction makeQueryString(obj) {\n var parts = Object.keys(obj).reduce(function (curr, key) {\n var val = Array.isArray(obj[key]) ? obj[key].join('+') : obj[key];\n curr.push(encodeURIComponent(key) + '=' + encodeURIComponent(val));\n return curr;\n }, []);\n\n if (parts.length) {\n return '?' + parts.join('&');\n }\n\n return '';\n}\n\nvar request = httpplease.use(json);\n\nfunction send(method, url, args) {\n return new Promise(function (resolve, reject) {\n request({ method: method, url: url, body: args }, function (err, res) {\n if (err) {\n var error = err && err.body && err.body.meta && err.body.meta.errorMessage ? new Error(err.body.meta.errorMessage) : err;\n error.status = err.status;\n reject(error);\n } else {\n resolve(res);\n }\n });\n });\n}\n\nfunction get(url) {\n return send('GET', url);\n}\n\nfunction post(url, args) {\n return send('POST', url, args);\n}\n\nfunction findSegments(agent) {\n var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n return get(agent.url + '/segments' + makeQueryString(opts)).then(function (res) {\n return res.body.map(function (obj) {\n return segmentify(agent, obj);\n });\n });\n}\n\nfunction getBranches(agent, prevLinkHash) {\n var tags = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\n\n deprecated('Agent#getBranches(agent, prevLinkHash, tags = [])', 'Agent#findSegments(agent, filter)');\n\n return findSegments(agent, { prevLinkHash: prevLinkHash, tags: tags });\n}\n\nfunction segmentify(agent, obj) {\n Object.keys(agent.agentInfo.actions).filter(function (key) {\n return ['init'].indexOf(key) < 0;\n }).forEach(function (key) {\n /*eslint-disable*/\n obj[key] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return post(agent.url + '/segments/' + obj.meta.linkHash + '/' + key, args).then(function (res) {\n return segmentify(agent, res.body);\n });\n };\n });\n\n /*eslint-disable*/\n obj.getPrev = function () {\n /*eslint-enable*/\n if (obj.link.meta.prevLinkHash) {\n return agent.getSegment(obj.link.meta.prevLinkHash);\n }\n\n return Promise.resolve(null);\n };\n\n // Deprecated.\n /*eslint-disable*/\n obj.load = function () {\n /*eslint-enable*/\n deprecated('segment#load()');\n return Promise.resolve(segmentify(agent, {\n link: JSON.parse(JSON.stringify(obj.link)),\n meta: JSON.parse(JSON.stringify(obj.meta))\n }));\n };\n\n // Deprecated.\n /*eslint-disable*/\n obj.getBranches = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n /*eslint-enable*/\n return getBranches.apply(undefined, [agent, obj.meta.linkHash].concat(args));\n };\n\n return obj;\n}\n\nfunction createMap(agent) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return post(agent.url + '/segments', args).then(function (res) {\n return segmentify(agent, res.body);\n });\n}\n\nfunction getSegment(agent, linkHash) {\n return get(agent.url + '/segments/' + linkHash).then(function (res) {\n return segmentify(agent, res.body);\n });\n}\n\nfunction getMapIds(agent) {\n var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n return get(agent.url + '/maps' + makeQueryString(opts)).then(function (res) {\n return res.body;\n });\n}\n\nfunction getLink(agent, hash) {\n deprecated('Agent#getLink(agent, hash)', 'Agent#getSegment(agent, hash)');\n\n return getSegment(agent, hash);\n}\n\nfunction getMap(agent, mapId) {\n var tags = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\n\n deprecated('getMap(agent, mapId, tags = [])', 'findSegments(agent, filter)');\n\n return findSegments(agent, { mapId: mapId, tags: tags });\n}\n\n// Deprecated.\nfunction getAgent(url) {\n return get(url).then(function (res) {\n var agent = res.body;\n\n agent.url = url;\n agent.createMap = createMap.bind(null, agent);\n agent.getSegment = getSegment.bind(null, agent);\n agent.findSegments = findSegments.bind(null, agent);\n agent.getMapIds = getMapIds.bind(null, agent);\n\n // Deprecated.\n agent.getBranches = getBranches.bind(null, agent);\n agent.getLink = getLink.bind(null, agent);\n agent.getMap = getMap.bind(null, agent);\n\n return agent;\n });\n}\n\nfunction fromSegment(obj) {\n return getAgent(obj.meta.agentUrl || obj.meta.applicationLocation).then(function (agent) {\n var segment = segmentify(agent, obj);\n return { agent: agent, segment: segment };\n });\n}\n\n// Deprecated.\nvar config = {\n applicationUrl: 'https://%s.stratumn.rocks'\n};\n\nfunction getApplication(name, url) {\n deprecated('getApplication(name, url)', 'getAgent(url)');\n\n return getAgent(url || config.applicationUrl.replace('%s', name));\n}\n\nfunction loadLink(obj) {\n deprecated('loadLink(obj)', 'fromSegment(obj)');\n\n return fromSegment(obj).then(function (_ref) {\n var segment = _ref.segment;\n return segment;\n });\n}\n\nexport { getAgent, fromSegment, getApplication, loadLink, config };\n//# sourceMappingURL=stratumn-sdk.mjs.map\n","import merge from 'deepmerge';\nimport { loadLink } from 'stratumn-sdk';\n\nexport default function resolveLinks(segments) {\n return Promise.all(segments.map(segment => {\n if (!segment.link.state) {\n return loadLink(segment).then(res => merge(res, segment));\n }\n return Promise.resolve(segment);\n }));\n}\n","export default function wrap(arrayOrObject) {\n if (arrayOrObject instanceof Array) {\n return arrayOrObject;\n }\n return [arrayOrObject];\n}\n","export default function parseIfJson(object) {\n if (typeof(object) !== 'object') {\n object = JSON.parse(object);\n }\n return object;\n}\n","export default function flatten(arr) {\n const flat = [].concat(...arr);\n return flat.some(Array.isArray) ? flatten(flat) : flat;\n}\n","import flatten from './flatten';\n\nexport default function tagsSet(chainscript) {\n return new Set(flatten(chainscript.map(segment => segment.link.meta.tags)));\n}\n","import ChainTree from './ChainTree';\nimport compactHash from './compactHash';\nimport resolveLinks from './resolveLinks';\nimport wrap from './wrap';\nimport parseIfJson from './parseIfJson';\nimport tagsSet from './tagsSet';\nimport { getAgent } from 'stratumn-sdk';\n\nexport const defaultOptions = {\n withArgs: false,\n duration: 750,\n verticalSpacing: 1.2,\n polygonSize: { width: 78, height: 91 },\n getBoxSize() {\n const self = this;\n return { width: self.polygonSize.width, height: 25 };\n },\n getArrowLength() {\n return this.polygonSize.width;\n },\n getSegmentText(node) {\n return compactHash(node.data.meta.linkHash);\n },\n getLinkText(node) {\n return node.target.data.link.meta.action +\n (this.withArgs ? `(${node.target.data.link.meta.arguments.join(', ')})` : '');\n },\n onclick() {},\n onTag() {}\n};\n\nexport default class ChainTreeBuilder {\n constructor(element) {\n this.chainTree = new ChainTree(element);\n }\n\n build(map, options) {\n this.onTag = options.onTag;\n if (map.id && map.applicationUrl) {\n return this._load(map).then(segments => this._display(segments, options));\n } else if (map.chainscript && map.chainscript.length) {\n try {\n return resolveLinks(wrap(parseIfJson(map.chainscript)))\n .then(segments => this._display(segments, options));\n } catch (err) {\n return Promise.reject(err);\n }\n }\n return Promise.resolve();\n }\n\n _display(segments, options) {\n this.chainTree.display(segments, { ...defaultOptions, ...options });\n this._notifyTags(segments);\n return segments;\n }\n\n _notifyTags(chainscript) {\n tagsSet(chainscript).forEach(this.onTag);\n }\n\n _load(map) {\n return getAgent(map.applicationUrl)\n .then(app => app.findSegments({ mapId: map.id }))\n .catch(res => console.log(res));\n }\n}\n","\n/*\nThe original version of this code is taken from Douglas Crockford's json2.js:\nhttps://github.com/douglascrockford/JSON-js/blob/master/json2.js\n\nI made some modifications to ensure a canonical output.\n*/\n\nfunction f(n) {\n // Format integers to have at least two digits.\n return n < 10 ? '0' + n : n;\n}\n\nvar cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"' : '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\n\nfunction quote(string) {\n\n// If the string contains no control characters, no quote characters, and no\n// backslash characters, then we can safely slap some quotes around it.\n// Otherwise we must also replace the offending characters with safe escape\n// sequences.\n\n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string'\n ? c\n : '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n}\n\n\nfunction str(key, holder) {\n\n// Produce a string from holder[key].\n\n var i, // The loop counter.\n k, // The member key.\n v, // The member value.\n length,\n mind = gap,\n partial,\n value = holder[key];\n\n// If the value has a toJSON method, call it to obtain a replacement value.\n\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n\n// If we were called with a replacer function, then call the replacer to\n// obtain a replacement value.\n\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n\n// What happens next depends on the value's type.\n\n switch (typeof value) {\n case 'string':\n return quote(value);\n\n case 'number':\n\n// JSON numbers must be finite. Encode non-finite numbers as null.\n\n return isFinite(value) ? String(value) : 'null';\n\n case 'boolean':\n case 'null':\n\n// If the value is a boolean or null, convert it to a string. Note:\n// typeof null does not produce 'null'. The case is included here in\n// the remote chance that this gets fixed someday.\n\n return String(value);\n\n// If the type is 'object', we might be dealing with an object or an array or\n// null.\n\n case 'object':\n\n// Due to a specification blunder in ECMAScript, typeof null is 'object',\n// so watch out for that case.\n\n if (!value) {\n return 'null';\n }\n\n// Make an array to hold the partial results of stringifying this object value.\n\n gap += indent;\n partial = [];\n\n// Is the value an array?\n\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n\n// The value is an array. Stringify every element. Use null as a placeholder\n// for non-JSON values.\n\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n\n// Join all of the elements together, separated with commas, and wrap them in\n// brackets.\n\n v = partial.length === 0\n ? '[]'\n : gap\n ? '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']'\n : '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n\n// If the replacer is an array, use it to select the members to be stringified.\n\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n if (typeof rep[i] === 'string') {\n k = rep[i];\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n } else {\n\n// Otherwise, iterate through all of the keys in the object.\n var keysSorted = Object.keys(value).sort()\n for (i in keysSorted) {\n k = keysSorted[i]\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n\n// Join all of the member texts together, separated with commas,\n// and wrap them in braces.\n\n v = partial.length === 0\n ? '{}'\n : gap\n ? '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}'\n : '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n}\n\n// If the JSON object does not yet have a stringify method, give it one.\nvar stringify = function (value, replacer, space) {\n\n// The stringify method takes a value and an optional replacer, and an optional\n// space parameter, and returns a JSON text. The replacer can be a function\n// that can replace values, or an array of strings that will select the keys.\n// A default replacer method can be provided. Use of the space parameter can\n// produce text that is more easily readable.\n\n var i;\n gap = '';\n indent = '';\n\n// If the space parameter is a number, make an indent string containing that\n// many spaces.\n\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n\n// If the space parameter is a string, it will be used as the indent string.\n\n } else if (typeof space === 'string') {\n indent = space;\n }\n\n// If there is a replacer, it must be a function or an array.\n// Otherwise, throw an error.\n\n rep = replacer;\n if (replacer && typeof replacer !== 'function' &&\n (typeof replacer !== 'object' ||\n typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n\n// Make a fake root object containing our value under the key of ''.\n// Return the result of stringifying the value.\n\n return str('', {'': value});\n};\n\nmodule.exports = stringify\n","/*\n * js-sha256 v0.3.0\n * https://github.com/emn178/js-sha256\n *\n * Copyright 2014-2015, emn178@gmail.com\n *\n * Licensed under the MIT license:\n * http://www.opensource.org/licenses/MIT\n */\n;(function(root, undefined) {\n 'use strict';\n\n var NODE_JS = typeof(module) != 'undefined';\n if(NODE_JS) {\n root = global;\n }\n var TYPED_ARRAY = typeof(Uint8Array) != 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K =[0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n var blocks = [];\n\n var sha224 = function(message) {\n return sha256(message, true);\n };\n\n var sha256 = function(message, is224) {\n var notString = typeof(message) != 'string';\n if(notString && message.constructor == root.ArrayBuffer) {\n message = new Uint8Array(message);\n }\n\n var h0, h1, h2, h3, h4, h5, h6, h7, block, code, first = true, end = false,\n i, j, index = 0, start = 0, bytes = 0, length = message.length,\n s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n if(is224) {\n h0 = 0xc1059ed8;\n h1 = 0x367cd507;\n h2 = 0x3070dd17;\n h3 = 0xf70e5939;\n h4 = 0xffc00b31;\n h5 = 0x68581511;\n h6 = 0x64f98fa7;\n h7 = 0xbefa4fa4;\n } else { // 256\n h0 = 0x6a09e667;\n h1 = 0xbb67ae85;\n h2 = 0x3c6ef372;\n h3 = 0xa54ff53a;\n h4 = 0x510e527f;\n h5 = 0x9b05688c;\n h6 = 0x1f83d9ab;\n h7 = 0x5be0cd19;\n }\n block = 0;\n do {\n blocks[0] = block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n if(notString) {\n for (i = start;index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = start;index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n bytes += i - start;\n start = i - 64;\n if(index == length) {\n blocks[i >> 2] |= EXTRA[i & 3];\n ++index;\n }\n block = blocks[16];\n if(index > length && i < 56) {\n blocks[15] = bytes << 3;\n end = true;\n }\n\n var a = h0, b = h1, c = h2, d = h3, e = h4, f = h5, g = h6, h = h7;\n for(j = 16;j < 64;++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for(j = 0;j < 64;j += 4) {\n if(first) {\n if(is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n h0 = h0 + a << 0;\n h1 = h1 + b << 0;\n h2 = h2 + c << 0;\n h3 = h3 + d << 0;\n h4 = h4 + e << 0;\n h5 = h5 + f << 0;\n h6 = h6 + g << 0;\n h7 = h7 + h << 0;\n } while(!end);\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if(!is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n \n if(!root.JS_SHA256_TEST && NODE_JS) {\n sha256.sha256 = sha256;\n sha256.sha224 = sha224;\n module.exports = sha256;\n } else if(root) {\n root.sha256 = sha256;\n root.sha224 = sha224;\n }\n}(this));\n","import stringify from 'canonical-json';\nimport sha256 from 'js-sha256';\n\n/**\n * Canonically hashes a json object.\n * @param {Object} obj the json object\n */\nexport default function hashJson(obj) {\n return sha256(stringify(obj));\n}\n","var _buffer, _slowbuffer, _INSPECT_MAX_BYTES;\n(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<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,___mod,_expor_){\n'use strict'\n\n_expor_.toByteArray = toByteArray\n_expor_.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nfunction init () {\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n }\n\n revLookup['-'.charCodeAt(0)] = 62\n revLookup['_'.charCodeAt(0)] = 63\n}\n\ninit()\n\nfunction toByteArray (b64) {\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n\n},{}],2:[function(_dereq_,___mod,_expor_){\n(function (global){\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = _dereq_('base64-js')\nvar ieee754 = _dereq_('ieee754')\nvar isArray = _dereq_('isarray')\n\n_expor_.Buffer = Buffer\n_expor_.SlowBuffer = SlowBuffer\n_expor_.INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : typedArraySupport()\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\n_expor_.kMaxLength = kMaxLength()\n\nfunction typedArraySupport () {\n try {\n var arr = new Uint8Array(1)\n arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}\n return arr.foo() === 42 && // typed array instances can be augmented\n typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n } catch (e) {\n return false\n }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n Object.defineProperty(Buffer, Symbol.species, {\n value: null,\n configurable: true\n })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n that.write(string, encoding)\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'binary':\n case 'base64':\n case 'raw':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'binary':\n case 'raw':\n case 'raws':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'binary':\n return binarySlice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = _expor_.INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!Buffer.isBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var foundIndex = -1\n for (var i = byteOffset; i < arrLength; ++i) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n\n return -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset >>= 0\n\n if (this.length === 0) return -1\n if (byteOffset >= this.length) return -1\n\n // Negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)\n\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n if (Buffer.isBuffer(val)) {\n // special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(this, val, byteOffset, encoding)\n }\n if (typeof val === 'number') {\n if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {\n return Uint8Array.prototype.indexOf.call(this, val, byteOffset)\n }\n return arrayIndexOf(this, [ val ], byteOffset, encoding)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new Error('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction binaryWrite (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'binary':\n return binaryWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction binarySlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n},{\"base64-js\":1,\"ieee754\":3,\"isarray\":4}],3:[function(_dereq_,___mod,_expor_){\n_expor_.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\n_expor_.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n},{}],4:[function(_dereq_,___mod,_expor_){\nvar toString = {}.toString;\n\n___mod.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n},{}],5:[function(_dereq_,___mod,_expor_){\nvar buf = _dereq_('buffer');\n_buffer = buf.Buffer;\n_slowbuffer = buf.SlowBuffer;\n_INSPECT_MAX_BYTES = buf._INSPECT_MAX_BYTES;\n\n},{\"buffer\":2}]},{},[5]);\nexport default {\n Buffer:_buffer,\n SlowBuffer: _slowbuffer,\n INSPECT_MAX_BYTES: _INSPECT_MAX_BYTES\n}\nexport {\n _buffer as Buffer,\n _slowbuffer as SlowBuffer,\n _INSPECT_MAX_BYTES as INSPECT_MAX_BYTES\n}\n","import sha256 from 'js-sha256';\nimport { Buffer } from 'buffer';\n\nexport default function computeMerkleParent(left, right) {\n if (right) {\n return sha256(\n Buffer.concat([new Buffer(left, 'hex'), new Buffer(right, 'hex')])\n );\n }\n return left;\n}\n","import hashJson from './hashJson';\nimport httpplease from 'httpplease';\n\nimport computeMerkleParent from './computeMerkleParent';\n\nconst blockCypherCache = {};\n\nexport default class SegmentValidator {\n\n constructor(segment) {\n this.segment = segment;\n }\n\n validate(errors) {\n errors.linkHash.push(this._validateLinkHash());\n errors.stateHash.push(this._validateStateHash());\n errors.merklePath.push(this._validateMerklePath());\n errors.fossil.push(this._validateFossil());\n }\n\n _validateLinkHash() {\n const computed = hashJson(this.segment.link);\n const actual = this.segment.meta.linkHash;\n if (computed !== actual) {\n return `LinkHash computed: ${computed}, Found: ${actual}`;\n }\n return null;\n }\n\n _validateStateHash() {\n if (this.segment.link.state) {\n const computed = hashJson(this.segment.link.state);\n const actual = this.segment.link.meta.stateHash;\n if (computed !== actual) {\n return `StateHash computed: ${computed}, Found: ${actual}`;\n }\n }\n return null;\n }\n\n _validateMerklePath() {\n const evidence = this.segment.meta.evidence;\n if (evidence) {\n if (evidence.state === 'COMPLETE') {\n let previous = this.segment.meta.linkHash;\n\n let error;\n evidence.merklePath.every((merkleNode) => {\n if (merkleNode.left === previous || merkleNode.right === previous) {\n const computedParent = computeMerkleParent(merkleNode.left, merkleNode.right);\n\n if (computedParent !== merkleNode.parent) {\n error = `Invalid Merkle Node ${JSON.stringify(merkleNode)}: `\n + `computed parent: ${computedParent}`;\n return false;\n }\n previous = merkleNode.parent;\n return true;\n }\n error = `Invalid Merkle Node ${JSON.stringify(merkleNode)}: `\n + `previous hash (${previous}) not found`;\n return false;\n });\n\n if (error) {\n return error;\n }\n\n const lastMerkleNode = evidence.merklePath[evidence.merklePath.length - 1];\n if (lastMerkleNode.parent !== evidence.merkleRoot) {\n return `Invalid Merkle Root ${evidence.merkleRoot}: not found in Merkle Path`;\n }\n }\n }\n return null;\n }\n\n _validateFossil() {\n const txId = this.segment.meta.evidence.transactions['bitcoin:main'];\n return this._getFossil(txId)\n .then(res => {\n const body = JSON.parse(res.xhr.response);\n if (!body.outputs.find(\n output => output.data_hex === this.segment.meta.evidence.merkleRoot)) {\n return 'Merkle root not found in transaction data';\n }\n return null;\n });\n }\n\n _getFossil(txId) {\n if (blockCypherCache[txId]) {\n return Promise.resolve(blockCypherCache[txId]);\n }\n\n const p = new Promise((resolve, reject) =>\n httpplease.get(`https://api.blockcypher.com/v1/btc/main/txs/${txId}`, (err, res) =>\n (err ? reject(err) : resolve(res)))\n );\n blockCypherCache[txId] = p;\n return p;\n }\n}\n","import SegmentValidator from './SegmentValidator';\nimport resolveLinks from './resolveLinks';\nimport wrap from './wrap';\nimport parseIfJson from './parseIfJson';\n\nexport default class ChainValidator {\n constructor(chainscript) {\n this.chainscript = chainscript;\n this.errors = {\n linkHash: [],\n stateHash: [],\n merklePath: [],\n fossil: []\n };\n }\n\n validate() {\n try {\n return resolveLinks(wrap(parseIfJson(this.chainscript)))\n .then(segments => {\n wrap(segments).forEach(segment => new SegmentValidator(segment).validate(this.errors));\n return this.errors;\n });\n } catch (err) {\n return Promise.reject(err);\n }\n }\n}\n","import { makeLink, translate } from './treeUtils';\nimport compactHash from './compactHash';\n\nimport { tree, stratify } from 'd3-hierarchy';\nimport { select } from 'd3-selection';\n\nconst margin = { top: 10, right: 5, bottom: 20, left: 5 };\nconst height = 350 - margin.top - margin.bottom;\nconst width = 400 - margin.left - margin.right;\n\nexport default class MerklePathTree {\n constructor(element) {\n this.tree = tree().size([width, height]);\n this.svg = select(element).append('svg')\n .attr('width', width + margin.right + margin.left)\n .attr('height', height + margin.top + margin.bottom);\n this.innerG = this.svg.append('g')\n .attr('transform', () => translate(margin.top, margin.left));\n this.root = null;\n }\n\n display(merklePath) {\n if (merklePath && merklePath.length) {\n this.root = this._parse(merklePath);\n this._update(this.root.descendants(), this.root.links());\n } else {\n this.root = null;\n this._update([], []);\n }\n }\n\n _parse(merklePath) {\n const nodes = [];\n\n merklePath.forEach((path, index) => {\n nodes.push({\n id: `${path.left}-${index}`,\n name: path.left,\n parentId: `${path.parent}-${index + 1}`\n });\n if (path.right) {\n nodes.push({\n id: `${path.right}-${index}`,\n name: path.right,\n parentId: `${path.parent}-${index + 1}`\n });\n }\n });\n\n const root = merklePath[merklePath.length - 1].parent;\n nodes.push({\n id: `${root}-${merklePath.length}`,\n name: root\n });\n\n return stratify()(nodes);\n }\n\n _update(nodes, links) {\n // Compute the new tree layout.\n if (this.root) {\n this.tree(this.root);\n }\n\n // Update the nodes…\n const node = this.innerG.selectAll('g.node').data(nodes,\n function key(d) { return d ? d.id : this.id; });\n\n // Enter any new nodes at the parent's previous position.\n const nodeEnter = node.enter().append('g')\n .attr('class', 'node')\n .attr('transform', d => translate(d.y, d.x));\n\n nodeEnter.append('circle').attr('r', 10);\n\n nodeEnter.append('text')\n .attr('dx', 0)\n .attr('dy', 5)\n .attr('text-anchor', 'middle')\n .text(d => compactHash(d.data.name));\n\n nodeEnter\n .on('mouseover', function go(d) {\n select(this).select('text').text(d.data.name);\n })\n .on('mouseout', function go(d) {\n select(this).select('text').text(compactHash(d.data.name));\n });\n\n node.exit().remove();\n\n // Update the links...\n const link = this.innerG.selectAll('path.link').data(links,\n function key(d) { return d ? d.target.id : this.id; });\n\n // Enter any new links at the parent's previous position.\n link.enter().insert('path', 'g')\n .attr('class', 'link')\n .attr('id', d => d.target.id)\n .attr('d', d => makeLink({ x: d.source.y, y: d.source.x }, { x: d.target.y, y: d.target.x }));\n\n // Transition exiting nodes to the parent's new position.\n link.exit().remove();\n }\n}\n"],"names":["stratify","tree","select","event","max","transition","easeLinear","zoom","this","commonjsHelpers.interopDefault","json","get","commonjsHelpers.commonjsGlobal","sha256","Buffer","margin","height"],"mappings":";;;;;;AAAO,SAAS,QAAT,CAAkB,MAAlB,EAA0B,MAA1B,EAA8C;MAAZ,MAAY,yDAAH,CAAG;;MAC7C,cAAc,UAAU,MAA9B;MACM,UAAU,YAAY,CAA5B;MACM,UAAU,YAAY,CAAZ,GAAgB,MAAhC;eACW,OAAO,CAAlB,SAAuB,OAAO,CAA9B,eACK,CAAC,OAAO,CAAP,GAAW,OAAZ,IAAuB,CAD5B,SACiC,OAAO,CADxC,SAC6C,CAAC,OAAO,CAAP,GAAW,OAAZ,IAAuB,CADpE,eAEI,OAFJ,SAEe,OAFf,SAE0B,OAF1B;;;AAKF,AAAO,SAAS,SAAT,CAAmB,CAAnB,EAAsB,MAAtB,EAA8B;SAC5B,SAAS,EAAE,MAAX,EAAmB,EAAE,MAArB,EAA6B,MAA7B,CAAP;;;AAGF,AAAO,SAAS,SAAT,CAAmB,CAAnB,EAAsB,CAAtB,EAAyB;wBACV,CAApB,UAA0B,CAA1B;CAGF;;ACfe,SAAS,gBAAT,CAA0B,WAA1B,EAAuC;WAC7CA,uBACF,EADE,CACC;eAAK,EAAE,IAAF,CAAO,QAAZ;KADD,EAEF,QAFE,CAEO;eAAK,EAAE,IAAF,CAAO,IAAP,CAAY,YAAjB;KAFP,EAEsC,WAFtC,CAAP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACMF,IAAM,SAAS,EAAE,KAAK,EAAP,EAAW,OAAO,GAAlB,EAAuB,QAAQ,EAA/B,EAAmC,MAAM,GAAzC,EAAf;AACA,IAAM,SAAS,MAAM,OAAO,GAAb,GAAmB,OAAO,MAAzC;;IAEqB;qBACP,OAAZ,EAAqB;;;;;SACd,IAAL,GAAYC,kBAAZ;;SAEK,GAAL,GAAWC,mBAAO,OAAP,EAAgB,MAAhB,CAAuB,KAAvB,CAAX;SACK,MAAL,GAAc,KAAK,GAAL,CAAS,MAAT,CAAgB,GAAhB,CAAd;;SAEK,MAAL,GAAc;aAAM,MAAK,MAAL,CAAY,IAAZ,CAAiB,WAAjB,EAA8BC,kBAAM,SAApC,CAAN;KAAd;;;;;4BAGM,aAAa,SAAS;UACxB,eAAe,YAAY,MAA/B,EAAuC;YAC/B,OAAO,iBAAiB,WAAjB,CAAb;aACK,OAAL,CAAa,IAAb,EAAmB,OAAnB;OAFF,MAGO;aACA,OAAL,CAAa,IAAb,EAAmB,OAAnB;;;;;4BAII,MAAM,SAAS;UACf,OAAO,IAAb;UACM,UAAU,QAAQ,WAAxB;UACM,QAAQ,OAAO,KAAK,WAAL,EAAP,GAA4B,EAA1C;UACM,QAAQ,OAAO,KAAK,KAAL,EAAP,GAAsB,EAApC;UACM,WAAWC,YAAI,KAAJ,EAAW;eAAK,EAAE,KAAP;OAAX,KAA4B,CAA7C;UACM,gBAAgB,KAAK,GAAL,CAAS,YAAY,QAAQ,KAAR,GAAgB,QAAQ,cAAR,EAA5B,CAAT,EAAgE,GAAhE,CAAtB;UACM,iBAAiBC,0BACpB,QADoB,CACX,QAAQ,QADG,EAEpB,IAFoB,CAEfC,iBAFe,CAAvB;;UAIM,gBAAgB,MAAM,MAAN,CACpB,UAAC,GAAD,EAAM,GAAN;eAAc,OAAO,IAAI,QAAJ,GAAe,KAAK,GAAL,CAAS,IAAI,QAAJ,CAAa,MAAb,GAAsB,CAA/B,EAAkC,CAAlC,CAAf,GAAsD,CAA7D,CAAd;OADoB,EAEpB,CAFoB,CAAtB;UAIM,iBAAiB,gBAAgB,QAAQ,MAAxB,GAAiC,QAAQ,eAAhE;;WAEK,IAAL,CAAU,IAAV,CAAe,CAAC,cAAD,EAAiB,aAAjB,CAAf;WACK,GAAL,CACG,IADH,CACQ,OADR,EAEI,QAAQ,QAAR,GAAmB,IAAnB,GAA0B,gBAAgB,OAAO,KAAvB,GAA+B,OAAO,IAAtC,GAC1B,QAAQ,cAAR,EAHJ,EAIG,IAJH,CAIQ,QAJR,EAKI,CAAC,QAAQ,QAAR,GAAmB,MAAnB,GAA4B,cAA7B,IAA+C,OAAO,GAAtD,GAA4D,OAAO,MALvE;;;UAQI,IAAJ,EAAU;aACH,EAAL,GAAU,iBAAiB,CAA3B;aACK,EAAL,GAAU,CAAV;aACK,IAAL,CAAU,IAAV;aACK,IAAL,CAAU,gBAAQ;eAAO,CAAL,IAAU,QAAQ,cAAR,EAAV;SAApB;;;UAGE,QAAQ,QAAZ,EAAsB;aACf,GAAL,CAAS,IAAT,CAAcC,cAAO,EAAP,CAAU,MAAV,EAAkB,KAAK,MAAvB,CAAd;OADF,MAEO;aACA,GAAL,CAAS,EAAT,CAAY,OAAZ,EAAqB,IAArB;;WAEG,MAAL,CAAY,IAAZ,CAAiB,WAAjB,EAA8B;eAAM,UAAU,OAAO,GAAjB,EAAsB,OAAO,IAA7B,CAAN;OAA9B;;;UAGM,OAAO,KAAK,MAAL,CAAY,SAAZ,CAAsB,WAAtB,EAAmC,IAAnC,CAAwC,KAAxC,EACX,SAAS,GAAT,CAAa,CAAb,EAAgB;eAAS,IAAI,EAAE,MAAF,CAAS,EAAb,GAAkB,KAAK,EAA9B;OADP,CAAb;;WAGK,KAAL,GAAa,MAAb,CAAoB,MAApB,EACG,IADH,CACQ,IADR,EACc,QAAQ,KAAR,GAAgB,EAD9B,EAEG,IAFH,CAEQ,IAFR,EAEc,QAFd,EAGG,MAHH,CAGU,UAHV,EAIG,IAJH,CAIQ,OAJR,EAIiB,UAJjB,EAKG,IALH,CAKQ,YALR,EAKsB;0BAAc,EAAE,MAAF,CAAS,EAAvB;OALtB,EAMG,IANH,CAMQ,QAAQ,WANhB;;;WASK,KAAL,GAAa,MAAb,CAAoB,MAApB,EAA4B,GAA5B,EACG,IADH,CACQ,OADR,EACiB,MADjB,EAEG,IAFH,CAEQ,IAFR,EAEc;yBAAa,EAAE,MAAF,CAAS,EAAtB;OAFd;;UAIM,aAAa,KAAK,MAAL,CAAY,SAAZ,CAAsB,sBAAtB,EAA8C,UAA9C,CAAyD,cAAzD,CAAnB;;;iBAGW,IAAX,CAAgB,GAAhB,EAAqB;eAAK,UAAU,CAAV,EAAa,EAAb,CAAL;OAArB;;WAEK,IAAL,GAAY,MAAZ;;;UAGM,OAAO,KAAK,MAAL,CAAY,SAAZ,CAAsB,QAAtB,EAAgC,IAAhC,CAAqC,KAArC,EACX,SAAS,GAAT,CAAa,CAAb,EAAgB;eAAS,IAAI,EAAE,EAAN,GAAW,KAAK,EAAvB;OADP,CAAb;;;UAIM,YAAY,KAAK,KAAL,GAAa,MAAb,CAAoB,GAApB,EACf,IADe,CACV,OADU,EACD;eAAK,CAAC,MAAD,EAAS,MAAT,CAAgB,EAAE,IAAF,CAAO,IAAP,CAAY,IAAZ,CAAiB,IAAjC,EAAuC,IAAvC,CAA4C,GAA5C,CAAL;OADC,EAEf,IAFe,CAEV,IAFU,EAEJ;eAAK,EAAE,EAAP;OAFI,EAGf,IAHe,CAGV,WAHU,EAGG,aAAK;YAChB,SAAS,EAAE,MAAF,IAAY,EAAE,MAAF,CAAS,EAArB,GAA0B,EAAE,MAA5B,GAAqC,IAApD;eACO,UAAU,OAAO,EAAjB,EAAqB,OAAO,EAA5B,CAAP;OALc,EAOf,EAPe,CAOZ,OAPY,EAOH,SAAS,OAAT,CAAiB,CAAjB,EAAoB;8BACrB,QAAV,EACG,OADH,CACW,UADX,EACuB,KADvB;2BAEO,IAAP,EACG,OADH,CACW,UADX,EACuB,IADvB;gBAEQ,OAAR,CAAgB,CAAhB,EAAmB,YAAM;eAClB,MAAL,CAAY,SAAZ,CAAsB,iBAAtB,EAAyC,OAAzC,CAAiD,UAAjD,EAA6D,KAA7D;SADF,EAEG,IAFH;OAZc,CAAlB;;gBAiBU,MAAV,CAAiB,SAAjB,EAA4B,IAA5B,CAAiC,QAAjC,EACE,OAAK,QAAQ,MAAR,GAAiB,CAAtB,SAA2B,QAAQ,KAAR,GAAgB,CAA3C,SAAgD,QAAQ,MAAR,GAAiB,CAAjE,UACG,QAAQ,KADX,SACoB,QAAQ,MAAR,GAAiB,CADrC,SAC0C,QAAQ,KADlD,SAC2D,CAAC,QAAQ,MAAT,GAAkB,CAD7E,WAEG,QAAQ,KAAR,GAAgB,CAFnB,SAEwB,CAAC,QAAQ,MAAT,GAAkB,CAF1C,WAEiD,CAAC,QAAQ,MAAT,GAAkB,CAFnE,CADF;;gBAKU,MAAV,CAAiB,MAAjB,EACG,IADH,CACQ,GADR,EACa,EAAE,QAAQ,UAAR,GAAqB,MAArB,GAA8B,CAAhC,CADb,EAEG,IAFH,CAEQ,OAFR,EAEiB,QAAQ,KAFzB,EAGG,IAHH,CAGQ,QAHR,EAGkB,QAAQ,UAAR,GAAqB,MAHvC,EAIG,KAJH,CAIS,cAJT,EAIyB,IAJzB;;gBAMU,MAAV,CAAiB,MAAjB,EACG,IADH,CACQ,IADR,EACc,EADd,EAEG,IAFH,CAEQ,IAFR,EAEc,CAFd,EAGG,IAHH,CAGQ,aAHR,EAGuB,OAHvB,EAIG,IAJH,CAIQ,QAAQ,cAJhB,EAKG,KALH,CAKS,cALT,EAKyB,IALzB;;;UAQM,aAAa,KAAK,GAAL,CAAS,SAAT,CAAmB,QAAnB,EAA6B,UAA7B,CAAwC,cAAxC,CAAnB;;iBAEW,IAAX,CAAgB,WAAhB,EAA6B;eAAK,UAAU,EAAE,CAAZ,EAAe,EAAE,CAAjB,CAAL;OAA7B;iBACW,MAAX,CAAkB,MAAlB,EAA0B,KAA1B,CAAgC,cAAhC,EAAgD,CAAhD;iBACW,MAAX,CAAkB,MAAlB,EAA0B,KAA1B,CAAgC,cAAhC,EAAgD,CAAhD;;;UAGM,WAAW,KAAK,IAAL,EAAjB,CAhHqB;eAiHZ,MAAT,CAAgB,MAAhB,EAAwB,KAAxB,CAA8B,cAA9B,EAA8C,IAA9C;eACS,IAAT,CAAc,WAAd,EAA2B;eAAM,UAAU,CAAV,EAAa,CAAb,CAAN;OAA3B,EAAkD,MAAlD;;WAEK,SAAL,CAAe,IAAf;;;;8BAGQ,MAAM;WACT,MAAL,CAAY,MAAZ,CAAmB,MAAnB,EACG,IADH,CACQ,OADR,EACiB,WADjB,EAEG,IAFH,CAEQ,IAFR,EAEc,WAFd,EAGG,IAHH,CAGQ,GAHR,EAGa,SAAS,EAAE,GAAG,KAAK,CAAV,EAAa,GAAG,KAAK,EAArB,EAAT,EAAoC,IAApC,EAA0C,EAA1C,CAHb;;WAKK,MAAL,CAAY,MAAZ,CAAmB,MAAnB,EACG,IADH,CACQ,IADR,EACc,EADd,EAEG,IAFH,CAEQ,IAFR,EAEc,QAFd,EAGG,MAHH,CAGU,UAHV,EAIG,IAJH,CAIQ,OAJR,EAIiB,UAJjB,EAKG,IALH,CAKQ,YALR,EAKsB,YALtB,EAMG,IANH,CAMQ,MANR;;;;;;AC5JJ,sBAAyB,IAAV,EAAgB;cACnB,KAAK,KAAL,CAAW,CAAX,EAAc,CAAd,CAAV,GAA6B,KAAK,KAAL,CAAW,KAAK,MAAL,GAAc,CAAzB,CAA7B;;;;;;;;;;;;;;ACDF,CAAC,UAAU,IAAI,EAAE,OAAO,EAAE;IACtB,IAAI,OAAO,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,GAAG,EAAE;QAC5C,MAAM,CAAC,OAAO,CAAC,CAAC;KACnB,MAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QACpC,MAAM,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;KAC9B,MAAM;QACH,IAAI,CAAC,SAAS,GAAG,OAAO,EAAE,CAAC;KAC9B;CACJ,CAACC,cAAI,EAAE,YAAY;;AAEpB,OAAO,SAAS,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE;IACnC,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,KAAK,IAAI,EAAE,IAAI,EAAE,CAAC;;IAE5B,IAAI,KAAK,EAAE;QACP,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QACtB,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;YACvB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;gBAC/B,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;aACd,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;gBAC9B,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACpC,MAAM;gBACH,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;oBAC1B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACf;aACJ;SACJ,CAAC,CAAC;KACN,MAAM;QACH,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YACtC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;gBACvC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;aAC1B,CAAC;SACL;QACD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;YACpC,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC3C,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;aACvB;iBACI;gBACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;oBACd,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;iBACvB,MAAM;oBACH,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC/C;aACJ;SACJ,CAAC,CAAC;KACN;;IAED,OAAO,GAAG,CAAC;CACd;;CAEA,CAAC,EAAE;;;;;;ACnDJ,YAAY,CAAC;;AAEb,MAAM,CAAC,OAAO,GAAG;EACf,cAAc,EAAE,SAAS,GAAG,EAAE;IAC5B;MACE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC;MACxC,kBAAkB,GAAG,WAAW;2BACX,WAAW,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;;IAEtE,IAAI,WAAW,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;MAC9C,OAAO;KACR;;IAED,IAAI,GAAG,CAAC,IAAI,EAAE;MACZ,IAAI,CAAC,WAAW,EAAE;QAChB,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;OAChD;;MAED,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KACrC;GACF;CACF,CAAC;;;;;;;;;;;;ACrBF,YAAY,CAAC;;AAEb,MAAM,CAAC,OAAO,GAAG;EACf,cAAc,EAAE,SAAS,GAAG,EAAE;IAC5B,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,MAAM,IAAI,IAAI,EAAE;MAClB,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;KAC1C;GACF;EACD,eAAe,EAAE,SAAS,GAAG,EAAE;;;IAG7B,IAAI,GAAG,CAAC,WAAW,IAAI,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;MACvE,IAAI,GAAG,GAAG,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;MAC7D,IAAI,GAAG,EAAE;QACP,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;OAC5B;KACF;GACF;CACF,CAAC;;;;;;;;;;;;;;ACnBF,YAAY,CAAC;;AAEb,IAAI,WAAW,GAAGC,0BAAwB;IACtC,YAAY,GAAGA,0BAAyB,CAAC;;AAE7C,MAAM,CAAC,OAAO,GAAG;EACf,cAAc,EAAE,SAAS,GAAG,EAAE;IAC5B,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC3C,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;GAC7C;EACD,eAAe,EAAE,SAAS,GAAG,EAAE;IAC7B,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;GAC9C;CACF,CAAC;;;;;;ACbF,YAAY,CAAC;;AAEb,MAAM,CAAC,OAAO,GAAG;EACf,cAAc,EAAE,SAAS,GAAG,EAAE;IAC5B,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE;MAC9C,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;KACrB,CAAC,CAAC;GACJ;CACF,CAAC;;;;;;;;;;;;ACRF,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;;;;;;;;;;;ACAvC,YAAY,CAAC;;;;;AAKb,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,EAAE;EAC5B,OAAO,WAAW;IAChB;MACE,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;MAC/C,OAAO,GAAG,WAAW;QACnB,OAAO,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;OAC7B,CAAC;IACJ,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;GACxB,CAAC;CACH,CAAC;;;;;;;;;;;ACdF,YAAY,CAAC;;AAEb,SAAS,OAAO,CAAC,SAAS,EAAE;EAC1B,IAAI,IAAI,GAAG,OAAO,SAAS,KAAK,QAAQ,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,SAAS,IAAI,EAAE,CAAC;EAC9E,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC;EAC9D,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;EACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;EAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;EACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;EACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;EACnE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;EAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;CAC7B;;AAED,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,WAAW;EACnC,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO;EACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;EACpB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;EACjB,OAAO,IAAI,CAAC;CACb,CAAC;;AAEF,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE;EAC/C,IAAI,CAAC,CAAC;EACN,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;IACtB,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;MAClC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,EAAE;QAC1C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;UAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SACxB;;QAED,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM;OACP;KACF;GACF;EACD,IAAI,KAAK,IAAI,IAAI,EAAE;IACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC3B,OAAO,KAAK,CAAC;GACd;CACF,CAAC;;;AAGF,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;;;;;;;;;;;AC1CzB,MAAM,CAAC,OAAO,GAAG,MAAM;;AAEvB,SAAS,MAAM,GAAG;IACd,IAAI,MAAM,GAAG,EAAE;;IAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACvC,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;;QAEzB,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;YACpB,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;gBAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;aAC5B;SACJ;KACJ;;IAED,OAAO,MAAM;CAChB;;;;;;;;;;;AChBD,YAAY,CAAC;;AAEb,IAAI,MAAM,GAAGA,4BAAgB,CAAC;;AAE9B,MAAM,CAAC,OAAO,GAAG,SAAS,GAAG,EAAE;EAC7B,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;EAClB,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;;;;;EAKrC,IAAI;IACF,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,EAAE,CAAC;IAC9B,IAAI,GAAG,CAAC,qBAAqB,EAAE;MAC7B,KAAK,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;MAChD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,GAAG;UACnD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACtB;OACF;KACF;;IAED,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE;MACpB,MAAM,EAAE,GAAG,CAAC,MAAM;MAClB,WAAW,EAAE,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;MAChG,OAAO,EAAE,OAAO;MAChB,IAAI,EAAE,GAAG,CAAC,YAAY;MACtB,IAAI,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,YAAY;KACvC,CAAC,CAAC;GACJ,CAAC,OAAO,GAAG,EAAE,EAAE;;EAEhB,OAAO,KAAK,CAAC;CACd,CAAC;;;;;;;;;;;AChCF,YAAY,CAAC;;AAEb,IAAI,OAAO,GAAGA,4BAAoB,CAAC;AACnC,IAAI,oBAAoB,GAAGA,4BAAuC,CAAC;;AAEnE,SAAS,QAAQ,CAAC,KAAK,EAAE;EACvB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;EAC7B,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;EACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;EACnC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;EAChC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EACvB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;EACvB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;EACrC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;CACxC;;AAED,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC;;AAErD,QAAQ,CAAC,WAAW,GAAG,SAAS,GAAG,EAAE;EACnC,OAAO,IAAI,QAAQ,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD,CAAC;;;AAGF,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;;;;;;;;;;;ACvB1B,YAAY,CAAC;;AAEb,IAAI,QAAQ,GAAGA,0BAAqB,CAAC;AACrC,IAAI,oBAAoB,GAAGA,4BAAuC,CAAC;AACnE,IAAI,MAAM,GAAGA,4BAAgB,CAAC;;AAE9B,SAAS,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE;EACpC,IAAI,GAAG,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EAC7B,GAAG,CAAC,IAAI,GAAG,cAAc,CAAC;EAC1B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;EACrB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;EAC3B,IAAI,GAAG,CAAC,KAAK,EAAE;IACb,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;GACxB;;EAED,IAAI,CAAC,QAAQ,GAAG,WAAW;IACzB,OAAO,IAAI,CAAC,OAAO,CAAC;GACrB,CAAC;;EAEF,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE;IACnB,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;MAC3B,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KACpB;GACF;CACF;;AAED,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACjD,YAAY,CAAC,SAAS,CAAC,WAAW,GAAG,YAAY,CAAC;;AAElD,YAAY,CAAC,MAAM,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE;EAClD,IAAI,GAAG,GAAG,IAAI,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;EAC3C,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC;EAC9C,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC;;;;;;;;;;;ACnC9B,YAAY,CAAC;;;AAGb,MAAM,CAAC,OAAO,GAAG,SAAS,EAAE,EAAE;EAC5B,IAAI,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC;EAC3B,OAAO,WAAW;IAChB,IAAI,CAAC,MAAM,EAAE;MACX,MAAM,GAAG,IAAI,CAAC;MACd,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;KACpC;IACD,OAAO,MAAM,CAAC;GACf,CAAC;CACH,CAAC;;;;;;;;;;;ACZF,YAAY,CAAC;;AAEb;EACE,QAAQ,GAAGA,0BAA8B;EACzC,GAAG,GAAGA,0BAAgB;EACtB,KAAK,GAAGA,0BAAwB;EAChC,YAAY,GAAGA,0BAAkB;EACjC,QAAQ,GAAGA,0BAAqB;EAChC,OAAO,GAAGA,4BAAoB;EAC9B,MAAM,GAAGA,4BAAgB;EACzB,IAAI,GAAGA,4BAAuB,CAAC;;AAEjC,IAAI,CAAC;IACD,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC;;AAEtC,SAAS,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE;EAClC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;EAC1B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE;IACrB,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,0BAA0B,CAAC;;IAEhE,GAAG,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;;IAEzC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACnC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;MACpB,IAAI,MAAM,CAAC,cAAc,EAAE;QACzB,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;OAC5B;KACF;;;IAGD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MACnC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;MACpB,IAAI,MAAM,CAAC,SAAS,EAAE;QACpB,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM;OACP;KACF;IACD,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC;;IAEvB,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;;;;;IAKd,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,QAAQ,EAAE;MACnC,YAAY,CAAC,SAAS,CAAC,CAAC;MACxB,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,kBAAkB,GAAG,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;;MAExG,IAAI,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;;MAElC,IAAI,GAAG,GAAG,GAAG,IAAI,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;MAC3C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,MAAM,CAAC,eAAe,EAAE;UAC1B,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SAC7B;OACF;;;MAGD,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;MACzC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;MACxC,IAAI,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;;KAExC,CAAC,CAAC,CAAC;;IAEJ,0BAA0B,GAAG,CAAC,QAAQ,IAAI,GAAG,MAAM,SAAS,IAAI,GAAG,CAAC,CAAC;IACrE,GAAG,CAAC,MAAM,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACpC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;IACnB,GAAG,CAAC,OAAO,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;;;;;IAKrC,GAAG,CAAC,kBAAkB,GAAG,WAAW;MAClC,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC,EAAE,OAAO;;MAEjC,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;;MAE/B,IAAI,CAAC,0BAA0B,EAAE;;;;;;;;;;;QAW/B,IAAI,MAAM,CAAC;QACX,IAAI;UACF,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;SACrB,CAAC,OAAO,GAAG,EAAE,EAAE;QAChB,IAAI,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;QAChE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;OAClB;KACF,CAAC;;;;IAIF,GAAG,CAAC,SAAS,GAAG,WAAW,cAAc,CAAC;IAC1C,GAAG,CAAC,UAAU,GAAG,WAAW,cAAc,CAAC;;IAE3C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;;IAE9B,IAAI,GAAG,CAAC,OAAO,EAAE;;;;;MAKf,SAAS,GAAG,UAAU,CAAC,WAAW;QAChC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,EAAE,CAAC;QACP,IAAI;UACF,GAAG,CAAC,KAAK,EAAE,CAAC;SACb,CAAC,OAAO,GAAG,EAAE,EAAE;OACjB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;KACjB;;IAED,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE;MACrB,IAAI,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;QACjC,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;OACzC;KACF;;IAED,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;IAEnB,OAAO,GAAG,CAAC;GACZ;;EAED,IAAI,MAAM;IACR,OAAO,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;IAC3D,IAAI,GAAG,SAAS,MAAM,EAAE;MACtB,OAAO,SAAS,GAAG,EAAE,EAAE,EAAE;QACvB,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;QACvB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;QACpB,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;OACtB,CAAC;KACH,CAAC;EACJ,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACnC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;GAC7B;;EAED,IAAI,CAAC,OAAO,GAAG,WAAW;IACxB,OAAO,OAAO,CAAC;GAChB,CAAC;;EAEF,IAAI,CAAC,QAAQ,GAAG,SAAS,SAAS,EAAE;IAClC,IAAI,SAAS,EAAE;MACb,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;KACtD;IACD,OAAO,QAAQ,CAAC;GACjB,CAAC;;EAEF,IAAI,CAAC,GAAG,GAAG,WAAW;IACpB,IAAI,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;GACtD,CAAC;;EAEF,IAAI,CAAC,IAAI,GAAG,WAAW;IACrB,OAAO,OAAO,EAAE,CAAC;GAClB,CAAC;;EAEF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;EACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACzB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;;EAEjC,OAAO,IAAI,CAAC;CACb;;AAED,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;;;;;;AAMzC,SAAS,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;EAC1B,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;;EAE7E,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,WAAW,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;;EAEhF,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;EAClB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;;EAExC,IAAI,IAAI,CAAC;EACT,QAAQ,IAAI;IACV,KAAK,CAAC,CAAC;IACP,KAAK,CAAC;;;MAGJ,IAAI,CAAC,GAAG,EAAE,OAAO;MACjB,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACvC,KAAK,CAAC;;MAEJ,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO;MAClD,IAAI,GAAG,QAAQ,CAAC;MAChB,MAAM;IACR,KAAK,CAAC;MACJ,IAAI,GAAG,QAAQ,CAAC;MAChB,MAAM;IACR;MACE,IAAI,GAAG,MAAM,CAAC;GACjB;EACD,IAAI,GAAG,GAAG,IAAI,GAAG,UAAU;QACrB,kCAAkC,GAAG,GAAG,CAAC,MAAM;QAC/C,oBAAoB;QACpB,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;EACrD,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;CAC9B;;;;;AChND,SAAS,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE;EACpC,IAAI,CAAC,OAAO,EAAE;IACZ,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,GAAG,iBAAiB,CAAC,CAAC;GACzD,MAAM;IACL,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,OAAO,GAAG,6BAA6B,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;GAC7F;CACF;;;;;;;AAOD,SAAS,eAAe,CAAC,GAAG,EAAE;EAC5B,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,GAAG,EAAE;IACvD,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAClE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC;GACb,EAAE,EAAE,CAAC,CAAC;;EAEP,IAAI,KAAK,CAAC,MAAM,EAAE;IAChB,OAAO,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;GAC9B;;EAED,OAAO,EAAE,CAAC;CACX;;AAED,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,CAACC,MAAI,CAAC,CAAC;;AAEnC,SAAS,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE;EAC/B,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM,EAAE;IAC5C,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,GAAG,EAAE,GAAG,EAAE;MACpE,IAAI,GAAG,EAAE;QACP,IAAI,KAAK,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC;QACzH,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;OACf,MAAM;QACL,OAAO,CAAC,GAAG,CAAC,CAAC;OACd;KACF,CAAC,CAAC;GACJ,CAAC,CAAC;CACJ;;AAED,SAASC,KAAG,CAAC,GAAG,EAAE;EAChB,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;CACzB;;AAED,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE;EACvB,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;CAChC;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;EAEnF,OAAOA,KAAG,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;IAC9E,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,EAAE;MACjC,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KAC/B,CAAC,CAAC;GACJ,CAAC,CAAC;CACJ;;AAED,SAAS,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE;EACxC,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;EAEnF,UAAU,CAAC,mDAAmD,EAAE,mCAAmC,CAAC,CAAC;;EAErG,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;CACxE;;AAED,SAAS,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;EAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,GAAG,EAAE;IACzD,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;GAClC,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;;IAExB,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY;MACrB,KAAK,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE;QACnF,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;OAC9B;;MAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;QAC9F,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;OACpC,CAAC,CAAC;KACJ,CAAC;GACH,CAAC,CAAC;;;EAGH,GAAG,CAAC,OAAO,GAAG,YAAY;;IAExB,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;MAC9B,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACrD;;IAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;GAC9B,CAAC;;;;EAIF,GAAG,CAAC,IAAI,GAAG,YAAY;;IAErB,UAAU,CAAC,gBAAgB,CAAC,CAAC;IAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE;MACvC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;MAC1C,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC3C,CAAC,CAAC,CAAC;GACL,CAAC;;;;EAIF,GAAG,CAAC,WAAW,GAAG,YAAY;IAC5B,KAAK,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE;MACzF,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;KAChC;;;IAGD,OAAO,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;GAC9E,CAAC;;EAEF,OAAO,GAAG,CAAC;CACZ;;AAED,SAAS,SAAS,CAAC,KAAK,EAAE;EACxB,KAAK,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE;IACtG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;GAClC;;EAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;IAC7D,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;GACpC,CAAC,CAAC;CACJ;;AAED,SAAS,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE;EACnC,OAAOA,KAAG,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;IAClE,OAAO,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;GACpC,CAAC,CAAC;CACJ;;AAED,SAAS,SAAS,CAAC,KAAK,EAAE;EACxB,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;EAEnF,OAAOA,KAAG,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;IAC1E,OAAO,GAAG,CAAC,IAAI,CAAC;GACjB,CAAC,CAAC;CACJ;;AAED,SAAS,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE;EAC5B,UAAU,CAAC,4BAA4B,EAAE,+BAA+B,CAAC,CAAC;;EAE1E,OAAO,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;CAChC;;AAED,SAAS,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE;EAC5B,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,SAAS,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;EAEnF,UAAU,CAAC,iCAAiC,EAAE,6BAA6B,CAAC,CAAC;;EAE7E,OAAO,YAAY,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;CAC1D;;;AAGD,SAAS,QAAQ,CAAC,GAAG,EAAE;EACrB,OAAOA,KAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE;IAClC,IAAI,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;;IAErB,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpD,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;;IAG9C,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAClD,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;IAExC,OAAO,KAAK,CAAC;GACd,CAAC,CAAC;CACJ;;AAED,SAAS,WAAW,CAAC,GAAG,EAAE;EACxB,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE;IACvF,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;GAC3C,CAAC,CAAC;CACJ;;AAED,AAKA,AAMA,SAAS,QAAQ,CAAC,GAAG,EAAE;EACrB,UAAU,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;;EAEhD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE;IAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,OAAO,OAAO,CAAC;GAChB,CAAC,CAAC;CACJ,AAED,AACA;;AC9Me,SAAS,YAAT,CAAsB,QAAtB,EAAgC;SACtC,QAAQ,GAAR,CAAY,SAAS,GAAT,CAAa,mBAAW;QACrC,CAAC,QAAQ,IAAR,CAAa,KAAlB,EAAyB;aAChB,SAAS,OAAT,EAAkB,IAAlB,CAAuB;eAAO,MAAM,GAAN,EAAW,OAAX,CAAP;OAAvB,CAAP;;WAEK,QAAQ,OAAR,CAAgB,OAAhB,CAAP;GAJiB,CAAZ,CAAP;;;ACJa,SAAS,IAAT,CAAc,aAAd,EAA6B;MACtC,yBAAyB,KAA7B,EAAoC;WAC3B,aAAP;;SAEK,CAAC,aAAD,CAAP;;;ACJa,SAAS,WAAT,CAAqB,MAArB,EAA6B;MACtC,QAAO,MAAP,yCAAO,MAAP,OAAmB,QAAvB,EAAiC;aACtB,KAAK,KAAL,CAAW,MAAX,CAAT;;SAEK,MAAP;;;ACJa,SAAS,OAAT,CAAiB,GAAjB,EAAsB;;;MAC7B,OAAO,YAAG,MAAH,+BAAa,GAAb,EAAb;SACO,KAAK,IAAL,CAAU,MAAM,OAAhB,IAA2B,QAAQ,IAAR,CAA3B,GAA2C,IAAlD;;;ACAa,SAAS,OAAT,CAAiB,WAAjB,EAA8B;SACpC,IAAI,GAAJ,CAAQ,QAAQ,YAAY,GAAZ,CAAgB;WAAW,QAAQ,IAAR,CAAa,IAAb,CAAkB,IAA7B;GAAhB,CAAR,CAAR,CAAP;;;ACKK,IAAM,iBAAiB;YAClB,KADkB;YAElB,GAFkB;mBAGX,GAHW;eAIf,EAAE,OAAO,EAAT,EAAa,QAAQ,EAArB,EAJe;YAAA,wBAKf;QACL,OAAO,IAAb;WACO,EAAE,OAAO,KAAK,WAAL,CAAiB,KAA1B,EAAiC,QAAQ,EAAzC,EAAP;GAP0B;gBAAA,4BASX;WACR,KAAK,WAAL,CAAiB,KAAxB;GAV0B;gBAAA,0BAYb,IAZa,EAYP;WACZ,YAAY,KAAK,IAAL,CAAU,IAAV,CAAe,QAA3B,CAAP;GAb0B;aAAA,uBAehB,IAfgB,EAeV;WACT,KAAK,MAAL,CAAY,IAAZ,CAAiB,IAAjB,CAAsB,IAAtB,CAA2B,MAA3B,IACJ,KAAK,QAAL,SAAoB,KAAK,MAAL,CAAY,IAAZ,CAAiB,IAAjB,CAAsB,IAAtB,CAA2B,SAA3B,CAAqC,IAArC,CAA0C,IAA1C,CAApB,SAAyE,EADrE,CAAP;GAhB0B;SAAA,qBAmBlB,EAnBkB;OAAA,mBAoBpB;CApBH;;IAuBc;4BACP,OAAZ,EAAqB;;;SACd,SAAL,GAAiB,IAAI,SAAJ,CAAc,OAAd,CAAjB;;;;;0BAGI,KAAK,SAAS;;;WACb,KAAL,GAAa,QAAQ,KAArB;UACI,IAAI,EAAJ,IAAU,IAAI,cAAlB,EAAkC;eACzB,KAAK,KAAL,CAAW,GAAX,EAAgB,IAAhB,CAAqB;iBAAY,MAAK,QAAL,CAAc,QAAd,EAAwB,OAAxB,CAAZ;SAArB,CAAP;OADF,MAEO,IAAI,IAAI,WAAJ,IAAmB,IAAI,WAAJ,CAAgB,MAAvC,EAA+C;YAChD;iBACK,aAAa,KAAK,YAAY,IAAI,WAAhB,CAAL,CAAb,EACJ,IADI,CACC;mBAAY,MAAK,QAAL,CAAc,QAAd,EAAwB,OAAxB,CAAZ;WADD,CAAP;SADF,CAGE,OAAO,GAAP,EAAY;iBACL,QAAQ,MAAR,CAAe,GAAf,CAAP;;;aAGG,QAAQ,OAAR,EAAP;;;;6BAGO,UAAU,SAAS;WACrB,SAAL,CAAe,OAAf,CAAuB,QAAvB,eAAsC,cAAtC,EAAyD,OAAzD;WACK,WAAL,CAAiB,QAAjB;aACO,QAAP;;;;gCAGU,aAAa;cACf,WAAR,EAAqB,OAArB,CAA6B,KAAK,KAAlC;;;;0BAGI,KAAK;aACF,SAAS,IAAI,cAAb,EACJ,IADI,CACC;eAAO,IAAI,YAAJ,CAAiB,EAAE,OAAO,IAAI,EAAb,EAAjB,CAAP;OADD,EAEJ,KAFI,CAEE;eAAO,QAAQ,GAAR,CAAY,GAAZ,CAAP;OAFF,CAAP;;;;;;;;;;;;;;ACtDJ,SAAS,CAAC,CAAC,CAAC,EAAE;;IAEV,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;CAC/B;;AAED,IAAI,EAAE,GAAG,0GAA0G;IAC/G,SAAS,GAAG,0HAA0H;IACtI,GAAG;IACH,MAAM;IACN,IAAI,GAAG;QACH,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,KAAK;QACX,GAAG,GAAG,KAAK;QACX,IAAI,EAAE,MAAM;KACf;IACD,GAAG,CAAC;;;AAGR,SAAS,KAAK,CAAC,MAAM,EAAE;;;;;;;IAOnB,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;IACxB,OAAO,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,EAAE;QACzE,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,OAAO,CAAC,KAAK,QAAQ;cACtB,CAAC;cACD,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACnE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;CACjC;;;AAGD,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE;;;;IAItB,IAAI,CAAC;QACD,CAAC;QACD,CAAC;QACD,MAAM;QACN,IAAI,GAAG,GAAG;QACV,OAAO;QACP,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;;;;IAIxB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAC9B,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE;QACxC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;KAC7B;;;;;IAKD,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;QAC3B,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;KACxC;;;;IAID,QAAQ,OAAO,KAAK;IACpB,KAAK,QAAQ;QACT,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;;IAExB,KAAK,QAAQ;;;;QAIT,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;;IAEpD,KAAK,SAAS,CAAC;IACf,KAAK,MAAM;;;;;;QAMP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;;;;;IAKzB,KAAK,QAAQ;;;;;QAKT,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,MAAM,CAAC;SACjB;;;;QAID,GAAG,IAAI,MAAM,CAAC;QACd,OAAO,GAAG,EAAE,CAAC;;;;QAIb,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,gBAAgB,EAAE;;;;;YAK7D,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACtB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC5B,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC;aACxC;;;;;YAKD,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC;kBAClB,IAAI;kBACJ,GAAG;kBACH,KAAK,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG;kBAC3D,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACpC,GAAG,GAAG,IAAI,CAAC;YACX,OAAO,CAAC,CAAC;SACZ;;;;QAID,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAChC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;gBAC5B,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oBAC5B,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;oBACX,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBAClB,IAAI,CAAC,EAAE;wBACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;qBACnD;iBACJ;aACJ;SACJ,MAAM;;;YAGH,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;YAC1C,KAAK,CAAC,IAAI,UAAU,EAAE;gBAClB,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;gBACjB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE;oBAChD,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBAClB,IAAI,CAAC,EAAE;wBACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;qBACnD;iBACJ;aACJ;SACJ;;;;;QAKD,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC;cAClB,IAAI;cACJ,GAAG;cACH,KAAK,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG;cAC3D,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QACpC,GAAG,GAAG,IAAI,CAAC;QACX,OAAO,CAAC,CAAC;KACZ;CACJ;;;AAGD,IAAI,SAAS,GAAG,UAAU,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE;;;;;;;;IAQ9C,IAAI,CAAC,CAAC;IACN,GAAG,GAAG,EAAE,CAAC;IACT,MAAM,GAAG,EAAE,CAAC;;;;;IAKZ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE;YAC3B,MAAM,IAAI,GAAG,CAAC;SACjB;;;;KAIJ,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAClC,MAAM,GAAG,KAAK,CAAC;KAClB;;;;;IAKD,GAAG,GAAG,QAAQ,CAAC;IACf,IAAI,QAAQ,IAAI,OAAO,QAAQ,KAAK,UAAU;aACrC,OAAO,QAAQ,KAAK,QAAQ;YAC7B,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,EAAE;QAC1C,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;KACrC;;;;;IAKD,OAAO,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC;CAC/B,CAAC;;AAEF,MAAM,CAAC,OAAO,GAAG,SAAS;;;;;;;;;;;;;;;ACjN1B,CAAC,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE;EAC1B,YAAY,CAAC;;EAEb,IAAI,OAAO,GAAG,OAAO,MAAM,CAAC,IAAI,WAAW,CAAC;EAC5C,GAAG,OAAO,EAAE;IACV,IAAI,GAAGC,cAAM,CAAC;GACf;EACD,IAAI,WAAW,GAAG,OAAO,UAAU,CAAC,IAAI,WAAW,CAAC;EACpD,IAAI,SAAS,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;EAC7C,IAAI,KAAK,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;EAC/C,IAAI,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;EAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;UAC9F,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;UAC9F,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;UAC9F,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;UAC9F,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;UAC9F,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;UAC9F,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;UAC9F,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;;EAExG,IAAI,MAAM,GAAG,EAAE,CAAC;;EAEhB,IAAI,MAAM,GAAG,SAAS,OAAO,EAAE;IAC7B,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;GAC9B,CAAC;;EAEF,IAAI,MAAM,GAAG,SAAS,OAAO,EAAE,KAAK,EAAE;IACpC,IAAI,SAAS,GAAG,OAAO,OAAO,CAAC,IAAI,QAAQ,CAAC;IAC5C,GAAG,SAAS,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;MACvD,OAAO,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;KACnC;;IAED,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,GAAG,KAAK;QACtE,CAAC,EAAE,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM;QAC9D,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;;IAE5C,GAAG,KAAK,EAAE;MACR,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;KACjB,MAAM;MACL,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;MAChB,EAAE,GAAG,UAAU,CAAC;KACjB;IACD,KAAK,GAAG,CAAC,CAAC;IACV,GAAG;MACD,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;MAClB,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;MAC9C,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;MAC7C,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC;MAC/C,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;MACtD,GAAG,SAAS,EAAE;QACZ,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE;UAChD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;SACpD;OACF,MAAM;QACL,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE;UAChD,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;UACjC,IAAI,IAAI,GAAG,IAAI,EAAE;YACf,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;WAC1C,MAAM,IAAI,IAAI,GAAG,KAAK,EAAE;YACvB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACzD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;WAC5D,MAAM,IAAI,IAAI,GAAG,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE;YAC1C,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;WAC5D,MAAM;YACL,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,EAAE,KAAK,OAAO,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YAClF,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YACnE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;WAC5D;SACF;OACF;MACD,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC;MACnB,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;MACf,GAAG,KAAK,IAAI,MAAM,EAAE;QAClB,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,EAAE,KAAK,CAAC;OACT;MACD,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;MACnB,GAAG,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,EAAE;QAC3B,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QACxB,GAAG,GAAG,IAAI,CAAC;OACZ;;MAED,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;MACnE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE;;QAErB,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACpB,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACzE,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACnB,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;OAC3D;;MAED,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;MACX,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE;QACvB,GAAG,KAAK,EAAE;UACR,GAAG,KAAK,EAAE;YACR,EAAE,GAAG,MAAM,CAAC;YACZ,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;YAC5B,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC;YACxB,CAAC,GAAG,EAAE,GAAG,QAAQ,IAAI,CAAC,CAAC;WACxB,MAAM;YACL,EAAE,GAAG,SAAS,CAAC;YACf,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;YAC3B,CAAC,GAAG,EAAE,GAAG,UAAU,IAAI,CAAC,CAAC;YACzB,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,CAAC,CAAC;WACzB;UACD,KAAK,GAAG,KAAK,CAAC;SACf,MAAM;UACL,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;UACnF,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UAClF,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;UACX,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;UACxB,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;UACxB,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;UACpC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;UACd,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;UAChB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;SAClB;QACD,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnF,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClF,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACxB,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACjB,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnF,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClF,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACxB,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACjB,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnF,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClF,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACX,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACxB,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC;QACd,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAChB,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;OAClB;;MAED,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;MACjB,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;MACjB,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;MACjB,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;MACjB,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;MACjB,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;MACjB,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;MACjB,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;KAClB,OAAO,CAAC,GAAG,EAAE;;IAEd,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;cAC1D,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;cAClD,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;cAC1D,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;cAClD,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;cAC1D,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;cAClD,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;cAC1D,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;cAClD,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;cAC1D,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;cAClD,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;cAC1D,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC;cAClD,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;cAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;cAC1D,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7D,GAAG,CAAC,KAAK,EAAE;MACT,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;aAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC;aAC3D,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC;aAC1D,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;KAC3D;IACD,OAAO,GAAG,CAAC;GACZ,CAAC;;EAEF,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,OAAO,EAAE;IAClC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;GACzB,MAAM,GAAG,IAAI,EAAE;IACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;GACtB;CACF,CAACJ,cAAI,CAAC,EAAE;;;;;ACjOT;;;;AAIA,AAAe,SAAS,QAAT,CAAkB,GAAlB,EAAuB;SAC7BK,SAAO,UAAU,GAAV,CAAP,CAAP;;;ACRE,IAAA,OAAO,CAAA;AAAE,IAAA,WAAW,CAAA;AAAE,IAAA,kBAAkB,CAAA;AAC5C,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAC/d,YAAY;;AAEZ,OAAO,CAAC,WAAW,GAAG,WAAW;AACjC,OAAO,CAAC,aAAa,GAAG,aAAa;;AAErC,IAAI,MAAM,GAAG,EAAE;AACf,IAAI,SAAS,GAAG,EAAE;AAClB,IAAI,GAAG,GAAG,OAAO,UAAU,KAAK,WAAW,GAAG,UAAU,GAAG,KAAK;;AAEhE,SAAS,IAAI,IAAI;EACf,IAAI,IAAI,GAAG,kEAAkE;EAC7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;IAC/C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACnB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;GAClC;;EAED,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;EACjC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;CAClC;;AAED,IAAI,EAAE;;AAEN,SAAS,WAAW,EAAE,GAAG,EAAE;EACzB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG;EACnC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM;;EAEpB,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE;IACf,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC;GAClE;;;;;;;EAOD,YAAY,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;;;EAGtE,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;;;EAGzC,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;;EAEpC,IAAI,CAAC,GAAG,CAAC;;EAET,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;IACxC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClK,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI;IAC7B,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI;IAC5B,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI;GACtB;;EAED,IAAI,YAAY,KAAK,CAAC,EAAE;IACtB,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnF,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI;GACtB,MAAM,IAAI,YAAY,KAAK,CAAC,EAAE;IAC7B,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9H,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI;IAC5B,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI;GACtB;;EAED,OAAO,GAAG;CACX;;AAED,SAAS,eAAe,EAAE,GAAG,EAAE;EAC7B,OAAO,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;CAC1G;;AAED,SAAS,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;EACvC,IAAI,GAAG;EACP,IAAI,MAAM,GAAG,EAAE;EACf,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IACnC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;GAClC;EACD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;CACvB;;AAED,SAAS,aAAa,EAAE,KAAK,EAAE;EAC7B,IAAI,GAAG;EACP,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM;EACtB,IAAI,UAAU,GAAG,GAAG,GAAG,CAAC;EACxB,IAAI,MAAM,GAAG,EAAE;EACf,IAAI,KAAK,GAAG,EAAE;EACd,IAAI,cAAc,GAAG,KAAK;;;EAG1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,GAAG,GAAG,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,cAAc,EAAE;IACtE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;GAC7F;;;EAGD,IAAI,UAAU,KAAK,CAAC,EAAE;IACpB,GAAG,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IACpB,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1B,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,IAAI,IAAI;GACf,MAAM,IAAI,UAAU,KAAK,CAAC,EAAE;IAC3B,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAC9C,MAAM,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IAC3B,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG;GACd;;EAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;;EAElB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;CACtB;;CAEA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AACzC,CAAC,UAAU,MAAM,CAAC;;;;;;;;;AASlB,YAAY;;AAEZ,IAAI,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;AACjC,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;AAChC,IAAI,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;;AAEhC,OAAO,CAAC,MAAM,GAAG,MAAM;AACvB,OAAO,CAAC,UAAU,GAAG,UAAU;AAC/B,OAAO,CAAC,iBAAiB,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AA0B9B,MAAM,CAAC,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,KAAK,SAAS;IACjE,MAAM,CAAC,mBAAmB;IAC1B,iBAAiB,EAAE;;;;;AAKvB,OAAO,CAAC,UAAU,GAAG,UAAU,EAAE;;AAEjC,SAAS,iBAAiB,IAAI;EAC5B,IAAI;IACF,IAAI,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC;IAC3B,GAAG,CAAC,SAAS,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC;IACjF,OAAO,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;QACnB,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU;QAClC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC;GACxC,CAAC,OAAO,CAAC,EAAE;IACV,OAAO,KAAK;GACb;CACF;;AAED,SAAS,UAAU,IAAI;EACrB,OAAO,MAAM,CAAC,mBAAmB;MAC7B,UAAU;MACV,UAAU;CACf;;AAED,SAAS,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;EACnC,IAAI,UAAU,EAAE,GAAG,MAAM,EAAE;IACzB,MAAM,IAAI,UAAU,CAAC,4BAA4B,CAAC;GACnD;EACD,IAAI,MAAM,CAAC,mBAAmB,EAAE;;IAE9B,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC;IAC7B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;GAClC,MAAM;;IAEL,IAAI,IAAI,KAAK,IAAI,EAAE;MACjB,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC;KAC1B;IACD,IAAI,CAAC,MAAM,GAAG,MAAM;GACrB;;EAED,OAAO,IAAI;CACZ;;;;;;;;;;;;AAYD,SAAS,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,EAAE;EAC9C,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,CAAC,CAAC,IAAI,YAAY,MAAM,CAAC,EAAE;IAC5D,OAAO,IAAI,MAAM,CAAC,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC;GACjD;;;EAGD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IAC3B,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;MACxC,MAAM,IAAI,KAAK;QACb,mEAAmE;OACpE;KACF;IACD,OAAO,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;GAC9B;EACD,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC;CACjD;;AAED,MAAM,CAAC,QAAQ,GAAG,IAAI;;;AAGtB,MAAM,CAAC,QAAQ,GAAG,UAAU,GAAG,EAAE;EAC/B,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;EAChC,OAAO,GAAG;CACX;;AAED,SAAS,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE;EACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAC7B,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC;GAC7D;;EAED,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,KAAK,YAAY,WAAW,EAAE;IACtE,OAAO,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC;GAC9D;;EAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;IAC7B,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,CAAC;GACjD;;EAED,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;CAC/B;;;;;;;;;;AAUD,MAAM,CAAC,IAAI,GAAG,UAAU,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE;EACvD,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC;CACnD;;AAED,IAAI,MAAM,CAAC,mBAAmB,EAAE;EAC9B,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS;EACjD,MAAM,CAAC,SAAS,GAAG,UAAU;EAC7B,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO;MAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE;;IAErC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE;MAC5C,KAAK,EAAE,IAAI;MACX,YAAY,EAAE,IAAI;KACnB,CAAC;GACH;CACF;;AAED,SAAS,UAAU,EAAE,IAAI,EAAE;EACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;IAC5B,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC;GACxD;CACF;;AAED,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;EAC1C,UAAU,CAAC,IAAI,CAAC;EAChB,IAAI,IAAI,IAAI,CAAC,EAAE;IACb,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;GAChC;EACD,IAAI,IAAI,KAAK,SAAS,EAAE;;;;IAItB,OAAO,OAAO,QAAQ,KAAK,QAAQ;QAC/B,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC7C,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;GACxC;EACD,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;CAChC;;;;;;AAMD,MAAM,CAAC,KAAK,GAAG,UAAU,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE;EAC7C,OAAO,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC;CACzC;;AAED,SAAS,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;EAChC,UAAU,CAAC,IAAI,CAAC;EAChB,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC3D,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,EAAE;MAC7B,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;KACZ;GACF;EACD,OAAO,IAAI;CACZ;;;;;AAKD,MAAM,CAAC,WAAW,GAAG,UAAU,IAAI,EAAE;EACnC,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;CAC/B;;;;AAID,MAAM,CAAC,eAAe,GAAG,UAAU,IAAI,EAAE;EACvC,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC;CAC/B;;AAED,SAAS,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC3C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,EAAE,EAAE;IACnD,QAAQ,GAAG,MAAM;GAClB;;EAED,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;IAChC,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC;GAClE;;EAED,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC;EAC7C,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;;EAEjC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC;EAC5B,OAAO,IAAI;CACZ;;AAED,SAAS,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE;EACnC,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;EACtC,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;EACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IAClC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG;GACzB;EACD,OAAO,IAAI;CACZ;;AAED,SAAS,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE;EACzD,KAAK,CAAC,UAAU;;EAEhB,IAAI,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;IACnD,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC;GACpD;;EAED,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;IACjD,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC;GACpD;;EAED,IAAI,UAAU,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE;IACpD,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC;GAC9B,MAAM,IAAI,MAAM,KAAK,SAAS,EAAE;IAC/B,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;GAC1C,MAAM;IACL,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC;GAClD;;EAED,IAAI,MAAM,CAAC,mBAAmB,EAAE;;IAE9B,IAAI,GAAG,KAAK;IACZ,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;GAClC,MAAM;;IAEL,IAAI,GAAG,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;GAClC;EACD,OAAO,IAAI;CACZ;;AAED,SAAS,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE;EAC9B,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;IACxB,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;IACjC,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC;;IAE9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;MACrB,OAAO,IAAI;KACZ;;IAED,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC;IACzB,OAAO,IAAI;GACZ;;EAED,IAAI,GAAG,EAAE;IACP,IAAI,CAAC,OAAO,WAAW,KAAK,WAAW;QACnC,GAAG,CAAC,MAAM,YAAY,WAAW,CAAC,IAAI,QAAQ,IAAI,GAAG,EAAE;MACzD,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QACvD,OAAO,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;OAC7B;MACD,OAAO,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC;KAChC;;IAED,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;MAC9C,OAAO,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC;KACrC;GACF;;EAED,MAAM,IAAI,SAAS,CAAC,oFAAoF,CAAC;CAC1G;;AAED,SAAS,OAAO,EAAE,MAAM,EAAE;;;EAGxB,IAAI,MAAM,IAAI,UAAU,EAAE,EAAE;IAC1B,MAAM,IAAI,UAAU,CAAC,iDAAiD;yBACjD,UAAU,GAAG,UAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;GACxE;EACD,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,SAAS,UAAU,EAAE,MAAM,EAAE;EAC3B,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE;IACrB,MAAM,GAAG,CAAC;GACX;EACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;CAC7B;;AAED,MAAM,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,CAAC,EAAE;EACtC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC;CACpC;;AAED,MAAM,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE;EACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;IAC9C,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC;GACjD;;EAED,IAAI,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;;EAErB,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;EAChB,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM;;EAEhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;IAClD,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;MACjB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACR,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;MACR,KAAK;KACN;GACF;;EAED,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;EACpB,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;EACnB,OAAO,CAAC;CACT;;AAED,MAAM,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,QAAQ,EAAE;EACjD,QAAQ,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;IACpC,KAAK,KAAK,CAAC;IACX,KAAK,MAAM,CAAC;IACZ,KAAK,OAAO,CAAC;IACb,KAAK,OAAO,CAAC;IACb,KAAK,QAAQ,CAAC;IACd,KAAK,QAAQ,CAAC;IACd,KAAK,KAAK,CAAC;IACX,KAAK,MAAM,CAAC;IACZ,KAAK,OAAO,CAAC;IACb,KAAK,SAAS,CAAC;IACf,KAAK,UAAU;MACb,OAAO,IAAI;IACb;MACE,OAAO,KAAK;GACf;CACF;;AAED,MAAM,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;EAC7C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;IAClB,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC;GACnE;;EAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;IACrB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;GACvB;;EAED,IAAI,CAAC;EACL,IAAI,MAAM,KAAK,SAAS,EAAE;IACxB,MAAM,GAAG,CAAC;IACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;MAChC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;KACzB;GACF;;EAED,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;EACvC,IAAI,GAAG,GAAG,CAAC;EACX,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;IAChC,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;MACzB,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC;KACnE;IACD,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC;IACrB,GAAG,IAAI,GAAG,CAAC,MAAM;GAClB;EACD,OAAO,MAAM;CACd;;AAED,SAAS,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE;EACrC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC3B,OAAO,MAAM,CAAC,MAAM;GACrB;EACD,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,WAAW,CAAC,MAAM,KAAK,UAAU;MAC9E,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,YAAY,WAAW,CAAC,EAAE;IACjE,OAAO,MAAM,CAAC,UAAU;GACzB;EACD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;IAC9B,MAAM,GAAG,EAAE,GAAG,MAAM;GACrB;;EAED,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM;EACvB,IAAI,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC;;;EAGvB,IAAI,WAAW,GAAG,KAAK;EACvB,SAAS;IACP,QAAQ,QAAQ;MACd,KAAK,OAAO,CAAC;MACb,KAAK,QAAQ,CAAC;MACd,KAAK,KAAK,CAAC;MACX,KAAK,MAAM;QACT,OAAO,GAAG;MACZ,KAAK,MAAM,CAAC;MACZ,KAAK,OAAO,CAAC;MACb,KAAK,SAAS;QACZ,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM;MACnC,KAAK,MAAM,CAAC;MACZ,KAAK,OAAO,CAAC;MACb,KAAK,SAAS,CAAC;MACf,KAAK,UAAU;QACb,OAAO,GAAG,GAAG,CAAC;MAChB,KAAK,KAAK;QACR,OAAO,GAAG,KAAK,CAAC;MAClB,KAAK,QAAQ;QACX,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM;MACrC;QACE,IAAI,WAAW,EAAE,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM;QAClD,QAAQ,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE;QACxC,WAAW,GAAG,IAAI;KACrB;GACF;CACF;AACD,MAAM,CAAC,UAAU,GAAG,UAAU;;AAE9B,SAAS,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;EAC3C,IAAI,WAAW,GAAG,KAAK;;;;;;;;;EASvB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,EAAE;IACpC,KAAK,GAAG,CAAC;GACV;;;EAGD,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;IACvB,OAAO,EAAE;GACV;;EAED,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;IAC1C,GAAG,GAAG,IAAI,CAAC,MAAM;GAClB;;EAED,IAAI,GAAG,IAAI,CAAC,EAAE;IACZ,OAAO,EAAE;GACV;;;EAGD,GAAG,MAAM,CAAC;EACV,KAAK,MAAM,CAAC;;EAEZ,IAAI,GAAG,IAAI,KAAK,EAAE;IAChB,OAAO,EAAE;GACV;;EAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;;EAEhC,OAAO,IAAI,EAAE;IACX,QAAQ,QAAQ;MACd,KAAK,KAAK;QACR,OAAO,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;;MAEnC,KAAK,MAAM,CAAC;MACZ,KAAK,OAAO;QACV,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;;MAEpC,KAAK,OAAO;QACV,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;;MAErC,KAAK,QAAQ;QACX,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;;MAEtC,KAAK,QAAQ;QACX,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;;MAEtC,KAAK,MAAM,CAAC;MACZ,KAAK,OAAO,CAAC;MACb,KAAK,SAAS,CAAC;MACf,KAAK,UAAU;QACb,OAAO,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC;;MAEvC;QACE,IAAI,WAAW,EAAE,MAAM,IAAI,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;QACrE,QAAQ,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;QACxC,WAAW,GAAG,IAAI;KACrB;GACF;CACF;;;;AAID,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI;;AAEjC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;EACtB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACZ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACX,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;CACT;;AAED,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;EACrB,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE;IACjB,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC;GAClE;EACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;GACrB;EACD,OAAO,IAAI;CACZ;;AAED,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC3C,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;EACrB,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE;IACjB,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC;GAClE;EACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;GACzB;EACD,OAAO,IAAI;CACZ;;AAED,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,IAAI;EAC/C,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC;EAC5B,IAAI,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE;EAC3B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC;EAC7D,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;CAC3C;;AAED,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,EAAE;EAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC;EACzE,IAAI,IAAI,KAAK,CAAC,EAAE,OAAO,IAAI;EAC3B,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;CACrC;;AAED,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,IAAI;EAC7C,IAAI,GAAG,GAAG,EAAE;EACZ,IAAI,GAAG,GAAG,OAAO,CAAC,iBAAiB;EACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IACnB,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3D,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI,OAAO;GACtC;EACD,OAAO,UAAU,GAAG,GAAG,GAAG,GAAG;CAC9B;;AAED,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE;EACnF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC5B,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC;GACjD;;EAED,IAAI,KAAK,KAAK,SAAS,EAAE;IACvB,KAAK,GAAG,CAAC;GACV;EACD,IAAI,GAAG,KAAK,SAAS,EAAE;IACrB,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC;GACjC;EACD,IAAI,SAAS,KAAK,SAAS,EAAE;IAC3B,SAAS,GAAG,CAAC;GACd;EACD,IAAI,OAAO,KAAK,SAAS,EAAE;IACzB,OAAO,GAAG,IAAI,CAAC,MAAM;GACtB;;EAED,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,SAAS,GAAG,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE;IAC9E,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;GAC3C;;EAED,IAAI,SAAS,IAAI,OAAO,IAAI,KAAK,IAAI,GAAG,EAAE;IACxC,OAAO,CAAC;GACT;EACD,IAAI,SAAS,IAAI,OAAO,EAAE;IACxB,OAAO,CAAC,CAAC;GACV;EACD,IAAI,KAAK,IAAI,GAAG,EAAE;IAChB,OAAO,CAAC;GACT;;EAED,KAAK,MAAM,CAAC;EACZ,GAAG,MAAM,CAAC;EACV,SAAS,MAAM,CAAC;EAChB,OAAO,MAAM,CAAC;;EAEd,IAAI,IAAI,KAAK,MAAM,EAAE,OAAO,CAAC;;EAE7B,IAAI,CAAC,GAAG,OAAO,GAAG,SAAS;EAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,KAAK;EACnB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;;EAExB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC;EAC7C,IAAI,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;;EAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;IAC5B,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE;MACjC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;MACf,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;MACjB,KAAK;KACN;GACF;;EAED,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;EACpB,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;EACnB,OAAO,CAAC;CACT;;AAED,SAAS,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE;EACrD,IAAI,SAAS,GAAG,CAAC;EACjB,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM;EAC1B,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM;;EAE1B,IAAI,QAAQ,KAAK,SAAS,EAAE;IAC1B,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;IACzC,IAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,OAAO;QAC3C,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU,EAAE;MACrD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;QACpC,OAAO,CAAC,CAAC;OACV;MACD,SAAS,GAAG,CAAC;MACb,SAAS,IAAI,CAAC;MACd,SAAS,IAAI,CAAC;MACd,UAAU,IAAI,CAAC;KAChB;GACF;;EAED,SAAS,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE;IACrB,IAAI,SAAS,KAAK,CAAC,EAAE;MACnB,OAAO,GAAG,CAAC,CAAC,CAAC;KACd,MAAM;MACL,OAAO,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC;KACvC;GACF;;EAED,IAAI,UAAU,GAAG,CAAC,CAAC;EACnB,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;IAC3C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,UAAU,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,EAAE;MACtE,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC;MACrC,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,KAAK,SAAS,EAAE,OAAO,UAAU,GAAG,SAAS;KACpE,MAAM;MACL,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,UAAU;MAC1C,UAAU,GAAG,CAAC,CAAC;KAChB;GACF;;EAED,OAAO,CAAC,CAAC;CACV;;AAED,MAAM,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE;EACtE,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;IAClC,QAAQ,GAAG,UAAU;IACrB,UAAU,GAAG,CAAC;GACf,MAAM,IAAI,UAAU,GAAG,UAAU,EAAE;IAClC,UAAU,GAAG,UAAU;GACxB,MAAM,IAAI,UAAU,GAAG,CAAC,UAAU,EAAE;IACnC,UAAU,GAAG,CAAC,UAAU;GACzB;EACD,UAAU,KAAK,CAAC;;EAEhB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;EAChC,IAAI,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;;EAGxC,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC;;EAEtE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IAC3B,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;GACjC;;EAED,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;IAExB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;MACpB,OAAO,CAAC,CAAC;KACV;IACD,OAAO,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC;GACrD;EACD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IAC3B,IAAI,MAAM,CAAC,mBAAmB,IAAI,UAAU,CAAC,SAAS,CAAC,OAAO,KAAK,UAAU,EAAE;MAC7E,OAAO,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC;KAChE;IACD,OAAO,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC;GACzD;;EAED,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC;CAC5D;;AAED,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE;EACxE,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;CACtD;;AAED,SAAS,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EAC9C,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;EAC5B,IAAI,SAAS,GAAG,GAAG,CAAC,MAAM,GAAG,MAAM;EACnC,IAAI,CAAC,MAAM,EAAE;IACX,MAAM,GAAG,SAAS;GACnB,MAAM;IACL,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACvB,IAAI,MAAM,GAAG,SAAS,EAAE;MACtB,MAAM,GAAG,SAAS;KACnB;GACF;;;EAGD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM;EAC1B,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;;EAE3D,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE;IACvB,MAAM,GAAG,MAAM,GAAG,CAAC;GACpB;EACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;IAC/B,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC3B,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM;GACzB;EACD,OAAO,CAAC;CACT;;AAED,SAAS,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EAC/C,OAAO,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;CACjF;;AAED,SAAS,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EAChD,OAAO,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;CAC7D;;AAED,SAAS,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EACjD,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;CAC/C;;AAED,SAAS,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EACjD,OAAO,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;CAC9D;;AAED,SAAS,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;EAC/C,OAAO,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;CACpF;;AAED,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE;;EAEzE,IAAI,MAAM,KAAK,SAAS,EAAE;IACxB,QAAQ,GAAG,MAAM;IACjB,MAAM,GAAG,IAAI,CAAC,MAAM;IACpB,MAAM,GAAG,CAAC;;GAEX,MAAM,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;IAC7D,QAAQ,GAAG,MAAM;IACjB,MAAM,GAAG,IAAI,CAAC,MAAM;IACpB,MAAM,GAAG,CAAC;;GAEX,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC3B,MAAM,GAAG,MAAM,GAAG,CAAC;IACnB,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE;MACpB,MAAM,GAAG,MAAM,GAAG,CAAC;MACnB,IAAI,QAAQ,KAAK,SAAS,EAAE,QAAQ,GAAG,MAAM;KAC9C,MAAM;MACL,QAAQ,GAAG,MAAM;MACjB,MAAM,GAAG,SAAS;KACnB;;GAEF,MAAM;IACL,MAAM,IAAI,KAAK;MACb,yEAAyE;KAC1E;GACF;;EAED,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,MAAM;EACpC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,EAAE,MAAM,GAAG,SAAS;;EAElE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;IAC7E,MAAM,IAAI,UAAU,CAAC,wCAAwC,CAAC;GAC/D;;EAED,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;;EAEhC,IAAI,WAAW,GAAG,KAAK;EACvB,SAAS;IACP,QAAQ,QAAQ;MACd,KAAK,KAAK;QACR,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;MAE/C,KAAK,MAAM,CAAC;MACZ,KAAK,OAAO;QACV,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;MAEhD,KAAK,OAAO;QACV,OAAO,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;MAEjD,KAAK,QAAQ;QACX,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;MAElD,KAAK,QAAQ;;QAEX,OAAO,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;MAElD,KAAK,MAAM,CAAC;MACZ,KAAK,OAAO,CAAC;MACb,KAAK,SAAS,CAAC;MACf,KAAK,UAAU;QACb,OAAO,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;MAEhD;QACE,IAAI,WAAW,EAAE,MAAM,IAAI,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;QACrE,QAAQ,GAAG,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE;QACxC,WAAW,GAAG,IAAI;KACrB;GACF;CACF;;AAED,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,IAAI;EAC3C,OAAO;IACL,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;GACvD;CACF;;AAED,SAAS,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EACrC,IAAI,KAAK,KAAK,CAAC,IAAI,GAAG,KAAK,GAAG,CAAC,MAAM,EAAE;IACrC,OAAO,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC;GACjC,MAAM;IACL,OAAO,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;GACnD;CACF;;AAED,SAAS,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EACnC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;EAC/B,IAAI,GAAG,GAAG,EAAE;;EAEZ,IAAI,CAAC,GAAG,KAAK;EACb,OAAO,CAAC,GAAG,GAAG,EAAE;IACd,IAAI,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC;IACtB,IAAI,SAAS,GAAG,IAAI;IACpB,IAAI,gBAAgB,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;QACzC,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;QACtB,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC;QACtB,CAAC;;IAEL,IAAI,CAAC,GAAG,gBAAgB,IAAI,GAAG,EAAE;MAC/B,IAAI,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa;;MAEpD,QAAQ,gBAAgB;QACtB,KAAK,CAAC;UACJ,IAAI,SAAS,GAAG,IAAI,EAAE;YACpB,SAAS,GAAG,SAAS;WACtB;UACD,KAAK;QACP,KAAK,CAAC;UACJ,UAAU,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;UACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;YAChC,aAAa,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;YAC/D,IAAI,aAAa,GAAG,IAAI,EAAE;cACxB,SAAS,GAAG,aAAa;aAC1B;WACF;UACD,KAAK;QACP,KAAK,CAAC;UACJ,UAAU,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;UACvB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;UACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;YAC/D,aAAa,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;YAC1F,IAAI,aAAa,GAAG,KAAK,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,aAAa,GAAG,MAAM,CAAC,EAAE;cAC/E,SAAS,GAAG,aAAa;aAC1B;WACF;UACD,KAAK;QACP,KAAK,CAAC;UACJ,UAAU,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;UACvB,SAAS,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;UACtB,UAAU,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;UACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE;YAC/F,aAAa,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;YACxH,IAAI,aAAa,GAAG,MAAM,IAAI,aAAa,GAAG,QAAQ,EAAE;cACtD,SAAS,GAAG,aAAa;aAC1B;WACF;OACJ;KACF;;IAED,IAAI,SAAS,KAAK,IAAI,EAAE;;;MAGtB,SAAS,GAAG,MAAM;MAClB,gBAAgB,GAAG,CAAC;KACrB,MAAM,IAAI,SAAS,GAAG,MAAM,EAAE;;MAE7B,SAAS,IAAI,OAAO;MACpB,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC;MAC3C,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK;KACvC;;IAED,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;IACnB,CAAC,IAAI,gBAAgB;GACtB;;EAED,OAAO,qBAAqB,CAAC,GAAG,CAAC;CAClC;;;;;AAKD,IAAI,oBAAoB,GAAG,MAAM;;AAEjC,SAAS,qBAAqB,EAAE,UAAU,EAAE;EAC1C,IAAI,GAAG,GAAG,UAAU,CAAC,MAAM;EAC3B,IAAI,GAAG,IAAI,oBAAoB,EAAE;IAC/B,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC;GACrD;;;EAGD,IAAI,GAAG,GAAG,EAAE;EACZ,IAAI,CAAC,GAAG,CAAC;EACT,OAAO,CAAC,GAAG,GAAG,EAAE;IACd,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK;MAC9B,MAAM;MACN,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,oBAAoB,CAAC;KAC/C;GACF;EACD,OAAO,GAAG;CACX;;AAED,SAAS,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EACpC,IAAI,GAAG,GAAG,EAAE;EACZ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;;EAE/B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;IAChC,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;GAC1C;EACD,OAAO,GAAG;CACX;;AAED,SAAS,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EACrC,IAAI,GAAG,GAAG,EAAE;EACZ,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;;EAE/B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;IAChC,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;GACnC;EACD,OAAO,GAAG;CACX;;AAED,SAAS,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EAClC,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM;;EAEpB,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;EAClC,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG;;EAE3C,IAAI,GAAG,GAAG,EAAE;EACZ,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;IAChC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;GACrB;EACD,OAAO,GAAG;CACX;;AAED,SAAS,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;EACtC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;EACjC,IAAI,GAAG,GAAG,EAAE;EACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;IACxC,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;GAC1D;EACD,OAAO,GAAG;CACX;;AAED,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;EACnD,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;EACrB,KAAK,GAAG,CAAC,CAAC,KAAK;EACf,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG;;EAErC,IAAI,KAAK,GAAG,CAAC,EAAE;IACb,KAAK,IAAI,GAAG;IACZ,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;GACzB,MAAM,IAAI,KAAK,GAAG,GAAG,EAAE;IACtB,KAAK,GAAG,GAAG;GACZ;;EAED,IAAI,GAAG,GAAG,CAAC,EAAE;IACX,GAAG,IAAI,GAAG;IACV,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC;GACrB,MAAM,IAAI,GAAG,GAAG,GAAG,EAAE;IACpB,GAAG,GAAG,GAAG;GACV;;EAED,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK;;EAE5B,IAAI,MAAM;EACV,IAAI,MAAM,CAAC,mBAAmB,EAAE;IAC9B,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IAClC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;GACpC,MAAM;IACL,IAAI,QAAQ,GAAG,GAAG,GAAG,KAAK;IAC1B,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE;MACjC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;KAC5B;GACF;;EAED,OAAO,MAAM;CACd;;;;;AAKD,SAAS,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE;EACzC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;EAChF,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC,uCAAuC,CAAC;CACzF;;AAED,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EAC/E,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,UAAU,GAAG,UAAU,GAAG,CAAC;EAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;;EAE3D,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EACtB,IAAI,GAAG,GAAG,CAAC;EACX,IAAI,CAAC,GAAG,CAAC;EACT,OAAO,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;IACzC,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG;GAC9B;;EAED,OAAO,GAAG;CACX;;AAED,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EAC/E,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,UAAU,GAAG,UAAU,GAAG,CAAC;EAC3B,IAAI,CAAC,QAAQ,EAAE;IACb,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;GAC7C;;EAED,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,UAAU,CAAC;EACrC,IAAI,GAAG,GAAG,CAAC;EACX,OAAO,UAAU,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;IACvC,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,UAAU,CAAC,GAAG,GAAG;GACzC;;EAED,OAAO,GAAG;CACX;;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE;EACjE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;EAClD,OAAO,IAAI,CAAC,MAAM,CAAC;CACpB;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;EAClD,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;CAC9C;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;EAClD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;CAC9C;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;;EAElD,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MAClB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;MACvB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;MACzB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;CACnC;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;;EAElD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC/B,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CACpB;;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EAC7E,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,UAAU,GAAG,UAAU,GAAG,CAAC;EAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;;EAE3D,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;EACtB,IAAI,GAAG,GAAG,CAAC;EACX,IAAI,CAAC,GAAG,CAAC;EACT,OAAO,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;IACzC,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG;GAC9B;EACD,GAAG,IAAI,IAAI;;EAEX,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;;EAElD,OAAO,GAAG;CACX;;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EAC7E,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,UAAU,GAAG,UAAU,GAAG,CAAC;EAC3B,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;;EAE3D,IAAI,CAAC,GAAG,UAAU;EAClB,IAAI,GAAG,GAAG,CAAC;EACX,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;EAC5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;IAC9B,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,GAAG;GAChC;EACD,GAAG,IAAI,IAAI;;EAEX,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC;;EAElD,OAAO,GAAG;CACX;;AAED,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC/D,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;EAClD,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;EACjD,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACxC;;AAED,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACrE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;EAClD,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;EAChD,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG;CAC/C;;AAED,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACrE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;EAClD,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;EAChD,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG;CAC/C;;AAED,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACrE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;;EAElD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;CAC3B;;AAED,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACrE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;;EAElD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CACrB;;AAED,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACrE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;EAClD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;CAC/C;;AAED,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE;EACrE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;EAClD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;CAChD;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;EAClD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;CAC/C;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE;EACvE,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;EAClD,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;CAChD;;AAED,SAAS,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;EACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC;EAC7F,IAAI,KAAK,GAAG,GAAG,IAAI,KAAK,GAAG,GAAG,EAAE,MAAM,IAAI,UAAU,CAAC,mCAAmC,CAAC;EACzF,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;CAC1E;;AAED,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EACxF,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,UAAU,GAAG,UAAU,GAAG,CAAC;EAC3B,IAAI,CAAC,QAAQ,EAAE;IACb,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;GACvD;;EAED,IAAI,GAAG,GAAG,CAAC;EACX,IAAI,CAAC,GAAG,CAAC;EACT,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI;EAC3B,OAAO,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;IACzC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI;GACxC;;EAED,OAAO,MAAM,GAAG,UAAU;CAC3B;;AAED,MAAM,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EACxF,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,UAAU,GAAG,UAAU,GAAG,CAAC;EAC3B,IAAI,CAAC,QAAQ,EAAE;IACb,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;IAC9C,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;GACvD;;EAED,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC;EACtB,IAAI,GAAG,GAAG,CAAC;EACX,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI;EAC/B,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;IACjC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI;GACxC;;EAED,OAAO,MAAM,GAAG,UAAU;CAC3B;;AAED,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC1E,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EACxD,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;EAC1D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;EAC7B,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,SAAS,iBAAiB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;EAC5D,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC;EACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAChE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACpE,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;GACjC;CACF;;AAED,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;EAC1D,IAAI,MAAM,CAAC,mBAAmB,EAAE;IAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;GACjC,MAAM;IACL,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;GAC7C;EACD,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;EAC1D,IAAI,MAAM,CAAC,mBAAmB,EAAE;IAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;GAClC,MAAM;IACL,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;GAC9C;EACD,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,SAAS,iBAAiB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;EAC5D,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,CAAC;EAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;IAChE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;GACpE;CACF;;AAED,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;EAC9D,IAAI,MAAM,CAAC,mBAAmB,EAAE;IAC9B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;GAC9B,MAAM;IACL,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;GAC7C;EACD,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC;EAC9D,IAAI,MAAM,CAAC,mBAAmB,EAAE;IAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;GAClC,MAAM;IACL,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;GAC9C;EACD,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EACtF,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE;IACb,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;;IAE3C,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;GAC7D;;EAED,IAAI,CAAC,GAAG,CAAC;EACT,IAAI,GAAG,GAAG,CAAC;EACX,IAAI,GAAG,GAAG,CAAC;EACX,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,GAAG,IAAI;EAC3B,OAAO,EAAE,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;IACzC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;MACxD,GAAG,GAAG,CAAC;KACR;IACD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI;GACrD;;EAED,OAAO,MAAM,GAAG,UAAU;CAC3B;;AAED,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE;EACtF,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE;IACb,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC;;IAE3C,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;GAC7D;;EAED,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC;EACtB,IAAI,GAAG,GAAG,CAAC;EACX,IAAI,GAAG,GAAG,CAAC;EACX,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI;EAC/B,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;IACjC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE;MACxD,GAAG,GAAG,CAAC;KACR;IACD,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI;GACrD;;EAED,OAAO,MAAM,GAAG,UAAU;CAC3B;;AAED,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EACxE,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC;EAC5D,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;EAC1D,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,CAAC;EACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;EAC7B,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC9E,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC;EAChE,IAAI,MAAM,CAAC,mBAAmB,EAAE;IAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;GACjC,MAAM;IACL,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;GAC7C;EACD,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC9E,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC;EAChE,IAAI,MAAM,CAAC,mBAAmB,EAAE;IAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;GAClC,MAAM;IACL,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;GAC9C;EACD,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC9E,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC;EACxE,IAAI,MAAM,CAAC,mBAAmB,EAAE;IAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;GAClC,MAAM;IACL,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;GAC7C;EACD,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC9E,KAAK,GAAG,CAAC,KAAK;EACd,MAAM,GAAG,MAAM,GAAG,CAAC;EACnB,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,UAAU,CAAC;EACxE,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,CAAC;EAC7C,IAAI,MAAM,CAAC,mBAAmB,EAAE;IAC9B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;GAClC,MAAM;IACL,iBAAiB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;GAC9C;EACD,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,SAAS,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;EACxD,IAAI,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;EACzE,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;CAC3D;;AAED,SAAS,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;EAC/D,IAAI,CAAC,QAAQ,EAAE;IACb,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,sBAAsB,CAAC;GACrF;EACD,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;EACtD,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC9E,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;CACvD;;AAED,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC9E,OAAO,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;CACxD;;AAED,SAAS,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE;EAChE,IAAI,CAAC,QAAQ,EAAE;IACb,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,uBAAuB,EAAE,CAAC,uBAAuB,CAAC;GACvF;EACD,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;EACtD,OAAO,MAAM,GAAG,CAAC;CAClB;;AAED,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;CACxD;;AAED,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAChF,OAAO,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;CACzD;;;AAGD,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE;EACtE,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC;EACrB,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM;EACxC,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM;EAC7D,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,CAAC;EACjC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,GAAG,GAAG,KAAK;;;EAGvC,IAAI,GAAG,KAAK,KAAK,EAAE,OAAO,CAAC;EAC3B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,OAAO,CAAC;;;EAGtD,IAAI,WAAW,GAAG,CAAC,EAAE;IACnB,MAAM,IAAI,UAAU,CAAC,2BAA2B,CAAC;GAClD;EACD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,UAAU,CAAC,2BAA2B,CAAC;EACxF,IAAI,GAAG,GAAG,CAAC,EAAE,MAAM,IAAI,UAAU,CAAC,yBAAyB,CAAC;;;EAG5D,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM;EACxC,IAAI,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,GAAG,GAAG,KAAK,EAAE;IAC7C,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,WAAW,GAAG,KAAK;GAC1C;;EAED,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK;EACrB,IAAI,CAAC;;EAEL,IAAI,IAAI,KAAK,MAAM,IAAI,KAAK,GAAG,WAAW,IAAI,WAAW,GAAG,GAAG,EAAE;;IAE/D,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;MAC7B,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;KAC1C;GACF,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE;;IAEpD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;MACxB,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;KAC1C;GACF,MAAM;IACL,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI;MAC3B,MAAM;MACN,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC;MACjC,WAAW;KACZ;GACF;;EAED,OAAO,GAAG;CACX;;;;;;AAMD,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE;;EAEhE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;MAC7B,QAAQ,GAAG,KAAK;MAChB,KAAK,GAAG,CAAC;MACT,GAAG,GAAG,IAAI,CAAC,MAAM;KAClB,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;MAClC,QAAQ,GAAG,GAAG;MACd,GAAG,GAAG,IAAI,CAAC,MAAM;KAClB;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;MACpB,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;MAC5B,IAAI,IAAI,GAAG,GAAG,EAAE;QACd,GAAG,GAAG,IAAI;OACX;KACF;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;MAC1D,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC;KACjD;IACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;MAChE,MAAM,IAAI,SAAS,CAAC,oBAAoB,GAAG,QAAQ,CAAC;KACrD;GACF,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IAClC,GAAG,GAAG,GAAG,GAAG,GAAG;GAChB;;;EAGD,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;IACzD,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC;GAC3C;;EAED,IAAI,GAAG,IAAI,KAAK,EAAE;IAChB,OAAO,IAAI;GACZ;;EAED,KAAK,GAAG,KAAK,KAAK,CAAC;EACnB,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,KAAK,CAAC;;EAEjD,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC;;EAEjB,IAAI,CAAC;EACL,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;IAC3B,KAAK,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE;MAC5B,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG;KACd;GACF,MAAM;IACL,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC5B,GAAG;QACH,WAAW,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrD,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM;IACtB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE;MAChC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;KACjC;GACF;;EAED,OAAO,IAAI;CACZ;;;;;AAKD,IAAI,iBAAiB,GAAG,oBAAoB;;AAE5C,SAAS,WAAW,EAAE,GAAG,EAAE;;EAEzB,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;;EAEpD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,EAAE;;EAE7B,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE;IAC3B,GAAG,GAAG,GAAG,GAAG,GAAG;GAChB;EACD,OAAO,GAAG;CACX;;AAED,SAAS,UAAU,EAAE,GAAG,EAAE;EACxB,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,IAAI,EAAE;EAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;CACrC;;AAED,SAAS,KAAK,EAAE,CAAC,EAAE;EACjB,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;EACvC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;CACtB;;AAED,SAAS,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE;EACnC,KAAK,GAAG,KAAK,IAAI,QAAQ;EACzB,IAAI,SAAS;EACb,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM;EAC1B,IAAI,aAAa,GAAG,IAAI;EACxB,IAAI,KAAK,GAAG,EAAE;;EAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;IAC/B,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;;;IAGhC,IAAI,SAAS,GAAG,MAAM,IAAI,SAAS,GAAG,MAAM,EAAE;;MAE5C,IAAI,CAAC,aAAa,EAAE;;QAElB,IAAI,SAAS,GAAG,MAAM,EAAE;;UAEtB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;UACnD,QAAQ;SACT,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE;;UAE3B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;UACnD,QAAQ;SACT;;;QAGD,aAAa,GAAG,SAAS;;QAEzB,QAAQ;OACT;;;MAGD,IAAI,SAAS,GAAG,MAAM,EAAE;QACtB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACnD,aAAa,GAAG,SAAS;QACzB,QAAQ;OACT;;;MAGD,SAAS,GAAG,CAAC,aAAa,GAAG,MAAM,IAAI,EAAE,GAAG,SAAS,GAAG,MAAM,CAAC,GAAG,OAAO;KAC1E,MAAM,IAAI,aAAa,EAAE;;MAExB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;KACpD;;IAED,aAAa,GAAG,IAAI;;;IAGpB,IAAI,SAAS,GAAG,IAAI,EAAE;MACpB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK;MAC3B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC;KACtB,MAAM,IAAI,SAAS,GAAG,KAAK,EAAE;MAC5B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK;MAC3B,KAAK,CAAC,IAAI;QACR,SAAS,IAAI,GAAG,GAAG,IAAI;QACvB,SAAS,GAAG,IAAI,GAAG,IAAI;OACxB;KACF,MAAM,IAAI,SAAS,GAAG,OAAO,EAAE;MAC9B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK;MAC3B,KAAK,CAAC,IAAI;QACR,SAAS,IAAI,GAAG,GAAG,IAAI;QACvB,SAAS,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;QAC9B,SAAS,GAAG,IAAI,GAAG,IAAI;OACxB;KACF,MAAM,IAAI,SAAS,GAAG,QAAQ,EAAE;MAC/B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK;MAC3B,KAAK,CAAC,IAAI;QACR,SAAS,IAAI,IAAI,GAAG,IAAI;QACxB,SAAS,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;QAC9B,SAAS,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI;QAC9B,SAAS,GAAG,IAAI,GAAG,IAAI;OACxB;KACF,MAAM;MACL,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC;KACtC;GACF;;EAED,OAAO,KAAK;CACb;;AAED,SAAS,YAAY,EAAE,GAAG,EAAE;EAC1B,IAAI,SAAS,GAAG,EAAE;EAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;;IAEnC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;GACzC;EACD,OAAO,SAAS;CACjB;;AAED,SAAS,cAAc,EAAE,GAAG,EAAE,KAAK,EAAE;EACnC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;EACb,IAAI,SAAS,GAAG,EAAE;EAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;IACnC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK;;IAE3B,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IACrB,EAAE,GAAG,CAAC,IAAI,CAAC;IACX,EAAE,GAAG,CAAC,GAAG,GAAG;IACZ,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;GACnB;;EAED,OAAO,SAAS;CACjB;;AAED,SAAS,aAAa,EAAE,GAAG,EAAE;EAC3B,OAAO,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;CAC5C;;AAED,SAAS,UAAU,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;EAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,EAAE,CAAC,EAAE;IAC/B,IAAI,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK;IAC1D,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;GACzB;EACD,OAAO,CAAC;CACT;;AAED,SAAS,KAAK,EAAE,GAAG,EAAE;EACnB,OAAO,GAAG,KAAK,GAAG;CACnB;;CAEA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,OAAO,IAAI,KAAK,WAAW,GAAG,IAAI,GAAG,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG,EAAE,CAAC;CACtI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AAC9E,OAAO,CAAC,IAAI,GAAG,UAAU,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;EAC3D,IAAI,CAAC,EAAE,CAAC;EACR,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;EAChC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;EAC1B,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC;EACrB,IAAI,KAAK,GAAG,CAAC,CAAC;EACd,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;EAC/B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC;EACrB,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;;EAE1B,CAAC,IAAI,CAAC;;EAEN,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;EAC7B,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;EACd,KAAK,IAAI,IAAI;EACb,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;;EAE1E,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;EAC7B,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;EACd,KAAK,IAAI,IAAI;EACb,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE;;EAE1E,IAAI,CAAC,KAAK,CAAC,EAAE;IACX,CAAC,GAAG,CAAC,GAAG,KAAK;GACd,MAAM,IAAI,CAAC,KAAK,IAAI,EAAE;IACrB,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;GAC3C,MAAM;IACL,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;IACzB,CAAC,GAAG,CAAC,GAAG,KAAK;GACd;EACD,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;CAChD;;AAED,OAAO,CAAC,KAAK,GAAG,UAAU,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE;EACnE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;EACX,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC;EAChC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;EAC1B,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC;EACrB,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;EAChE,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;EAC/B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;EACrB,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;;EAE3D,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;;EAEvB,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,QAAQ,EAAE;IACtC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACxB,CAAC,GAAG,IAAI;GACT,MAAM;IACL,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;IAC1C,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;MACrC,CAAC,EAAE;MACH,CAAC,IAAI,CAAC;KACP;IACD,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE;MAClB,KAAK,IAAI,EAAE,GAAG,CAAC;KAChB,MAAM;MACL,KAAK,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;KACrC;IACD,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE;MAClB,CAAC,EAAE;MACH,CAAC,IAAI,CAAC;KACP;;IAED,IAAI,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE;MACrB,CAAC,GAAG,CAAC;MACL,CAAC,GAAG,IAAI;KACT,MAAM,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE;MACzB,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;MACvC,CAAC,GAAG,CAAC,GAAG,KAAK;KACd,MAAM;MACL,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC;MACtD,CAAC,GAAG,CAAC;KACN;GACF;;EAED,OAAO,IAAI,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE;;EAEhF,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;EACnB,IAAI,IAAI,IAAI;EACZ,OAAO,IAAI,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE;;EAE/E,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;CAClC;;CAEA,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AACzC,IAAI,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;;AAE3B,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,UAAU,GAAG,EAAE;EAC/C,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC;CAC/C,CAAC;;CAED,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AACzC,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC5B,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;AACrB,WAAW,GAAG,GAAG,CAAC,UAAU,CAAC;AAC7B,kBAAkB,GAAG,GAAG,CAAC,kBAAkB,CAAC;;CAE3C,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,AACzB,AAKA;;AC34De,SAAS,mBAAT,CAA6B,IAA7B,EAAmC,KAAnC,EAA0C;MACnD,KAAJ,EAAW;WACFA,SACLC,QAAO,MAAP,CAAc,CAAC,IAAIA,OAAJ,CAAW,IAAX,EAAiB,KAAjB,CAAD,EAA0B,IAAIA,OAAJ,CAAW,KAAX,EAAkB,KAAlB,CAA1B,CAAd,CADK,CAAP;;SAIK,IAAP;;;ACJF,IAAM,mBAAmB,EAAzB;;IAEqB;4BAEP,OAAZ,EAAqB;;;SACd,OAAL,GAAe,OAAf;;;;;6BAGO,QAAQ;aACR,QAAP,CAAgB,IAAhB,CAAqB,KAAK,iBAAL,EAArB;aACO,SAAP,CAAiB,IAAjB,CAAsB,KAAK,kBAAL,EAAtB;aACO,UAAP,CAAkB,IAAlB,CAAuB,KAAK,mBAAL,EAAvB;aACO,MAAP,CAAc,IAAd,CAAmB,KAAK,eAAL,EAAnB;;;;wCAGkB;UACZ,WAAW,SAAS,KAAK,OAAL,CAAa,IAAtB,CAAjB;UACM,SAAS,KAAK,OAAL,CAAa,IAAb,CAAkB,QAAjC;UACI,aAAa,MAAjB,EAAyB;uCACM,QAA7B,iBAAiD,MAAjD;;aAEK,IAAP;;;;yCAGmB;UACf,KAAK,OAAL,CAAa,IAAb,CAAkB,KAAtB,EAA6B;YACrB,WAAW,SAAS,KAAK,OAAL,CAAa,IAAb,CAAkB,KAA3B,CAAjB;YACM,SAAS,KAAK,OAAL,CAAa,IAAb,CAAkB,IAAlB,CAAuB,SAAtC;YACI,aAAa,MAAjB,EAAyB;0CACO,QAA9B,iBAAkD,MAAlD;;;aAGG,IAAP;;;;0CAGoB;;;UACd,WAAW,KAAK,OAAL,CAAa,IAAb,CAAkB,QAAnC;UACI,QAAJ,EAAc;YACR,SAAS,KAAT,KAAmB,UAAvB,EAAmC;;gBAC7B,WAAW,MAAK,OAAL,CAAa,IAAb,CAAkB,QAAjC;;gBAEI,cAAJ;qBACS,UAAT,CAAoB,KAApB,CAA0B,UAAC,UAAD,EAAgB;kBACpC,WAAW,IAAX,KAAoB,QAApB,IAAgC,WAAW,KAAX,KAAqB,QAAzD,EAAmE;oBAC3D,iBAAiB,oBAAoB,WAAW,IAA/B,EAAqC,WAAW,KAAhD,CAAvB;;oBAEI,mBAAmB,WAAW,MAAlC,EAA0C;0BAChC,yBAAuB,KAAK,SAAL,CAAe,UAAf,CAAvB,iCACgB,cADhB,CAAR;yBAEO,KAAP;;2BAES,WAAW,MAAtB;uBACO,IAAP;;sBAEM,yBAAuB,KAAK,SAAL,CAAe,UAAf,CAAvB,+BACc,QADd,iBAAR;qBAEO,KAAP;aAdF;;gBAiBI,KAAJ,EAAW;;mBACF;;;;gBAGH,iBAAiB,SAAS,UAAT,CAAoB,SAAS,UAAT,CAAoB,MAApB,GAA6B,CAAjD,CAAvB;gBACI,eAAe,MAAf,KAA0B,SAAS,UAAvC,EAAmD;;4CACnB,SAAS,UAAvC;;;;;;;;aAIC,IAAP;;;;sCAGgB;;;UACV,OAAO,KAAK,OAAL,CAAa,IAAb,CAAkB,QAAlB,CAA2B,YAA3B,CAAwC,cAAxC,CAAb;aACO,KAAK,UAAL,CAAgB,IAAhB,EACJ,IADI,CACC,eAAO;YACL,OAAO,KAAK,KAAL,CAAW,IAAI,GAAJ,CAAQ,QAAnB,CAAb;YACI,CAAC,KAAK,OAAL,CAAa,IAAb,CACD;iBAAU,OAAO,QAAP,KAAoB,OAAK,OAAL,CAAa,IAAb,CAAkB,QAAlB,CAA2B,UAAzD;SADC,CAAL,EAC0E;iBACjE,2CAAP;;eAEK,IAAP;OAPG,CAAP;;;;+BAWS,MAAM;UACX,iBAAiB,IAAjB,CAAJ,EAA4B;eACnB,QAAQ,OAAR,CAAgB,iBAAiB,IAAjB,CAAhB,CAAP;;;UAGI,IAAI,IAAI,OAAJ,CAAY,UAAC,OAAD,EAAU,MAAV;eACpB,WAAW,GAAX,kDAA8D,IAA9D,EAAsE,UAAC,GAAD,EAAM,GAAN;iBACnE,MAAM,OAAO,GAAP,CAAN,GAAoB,QAAQ,GAAR,CAD+C;SAAtE,CADoB;OAAZ,CAAV;uBAIiB,IAAjB,IAAyB,CAAzB;aACO,CAAP;;;;;;IC/FiB;0BACP,WAAZ,EAAyB;;;SAClB,WAAL,GAAmB,WAAnB;SACK,MAAL,GAAc;gBACF,EADE;iBAED,EAFC;kBAGA,EAHA;cAIJ;KAJV;;;;;+BAQS;;;UACL;eACK,aAAa,KAAK,YAAY,KAAK,WAAjB,CAAL,CAAb,EACJ,IADI,CACC,oBAAY;eACX,QAAL,EAAe,OAAf,CAAuB;mBAAW,IAAI,gBAAJ,CAAqB,OAArB,EAA8B,QAA9B,CAAuC,MAAK,MAA5C,CAAX;WAAvB;iBACO,MAAK,MAAZ;SAHG,CAAP;OADF,CAME,OAAO,GAAP,EAAY;eACL,QAAQ,MAAR,CAAe,GAAf,CAAP;;;;;;;AClBN,IAAMC,WAAS,EAAE,KAAK,EAAP,EAAW,OAAO,CAAlB,EAAqB,QAAQ,EAA7B,EAAiC,MAAM,CAAvC,EAAf;AACA,IAAMC,WAAS,MAAMD,SAAO,GAAb,GAAmBA,SAAO,MAAzC;AACA,IAAM,QAAQ,MAAMA,SAAO,IAAb,GAAoBA,SAAO,KAAzC;;IAEqB;0BACP,OAAZ,EAAqB;;;SACd,IAAL,GAAYd,mBAAO,IAAP,CAAY,CAAC,KAAD,EAAQe,QAAR,CAAZ,CAAZ;SACK,GAAL,GAAWd,mBAAO,OAAP,EAAgB,MAAhB,CAAuB,KAAvB,EACR,IADQ,CACH,OADG,EACM,QAAQa,SAAO,KAAf,GAAuBA,SAAO,IADpC,EAER,IAFQ,CAEH,QAFG,EAEOC,WAASD,SAAO,GAAhB,GAAsBA,SAAO,MAFpC,CAAX;SAGK,MAAL,GAAc,KAAK,GAAL,CAAS,MAAT,CAAgB,GAAhB,EACX,IADW,CACN,WADM,EACO;aAAM,UAAUA,SAAO,GAAjB,EAAsBA,SAAO,IAA7B,CAAN;KADP,CAAd;SAEK,IAAL,GAAY,IAAZ;;;;;4BAGM,YAAY;UACd,cAAc,WAAW,MAA7B,EAAqC;aAC9B,IAAL,GAAY,KAAK,MAAL,CAAY,UAAZ,CAAZ;aACK,OAAL,CAAa,KAAK,IAAL,CAAU,WAAV,EAAb,EAAsC,KAAK,IAAL,CAAU,KAAV,EAAtC;OAFF,MAGO;aACA,IAAL,GAAY,IAAZ;aACK,OAAL,CAAa,EAAb,EAAiB,EAAjB;;;;;2BAIG,YAAY;UACX,QAAQ,EAAd;;iBAEW,OAAX,CAAmB,UAAC,IAAD,EAAO,KAAP,EAAiB;cAC5B,IAAN,CAAW;cACF,KAAK,IAAZ,SAAoB,KADX;gBAEH,KAAK,IAFF;oBAGI,KAAK,MAAlB,UAA4B,QAAQ,CAApC;SAHF;YAKI,KAAK,KAAT,EAAgB;gBACR,IAAN,CAAW;gBACF,KAAK,KAAZ,SAAqB,KADZ;kBAEH,KAAK,KAFF;sBAGI,KAAK,MAAlB,UAA4B,QAAQ,CAApC;WAHF;;OAPJ;;UAeM,OAAO,WAAW,WAAW,MAAX,GAAoB,CAA/B,EAAkC,MAA/C;YACM,IAAN,CAAW;YACF,IAAP,SAAe,WAAW,MADjB;cAEH;OAFR;;aAKOf,uBAAW,KAAX,CAAP;;;;4BAGM,OAAO,OAAO;;UAEhB,KAAK,IAAT,EAAe;aACR,IAAL,CAAU,KAAK,IAAf;;;;UAII,OAAO,KAAK,MAAL,CAAY,SAAZ,CAAsB,QAAtB,EAAgC,IAAhC,CAAqC,KAArC,EACX,SAAS,GAAT,CAAa,CAAb,EAAgB;eAAS,IAAI,EAAE,EAAN,GAAW,KAAK,EAAvB;OADP,CAAb;;;UAIM,YAAY,KAAK,KAAL,GAAa,MAAb,CAAoB,GAApB,EACf,IADe,CACV,OADU,EACD,MADC,EAEf,IAFe,CAEV,WAFU,EAEG;eAAK,UAAU,EAAE,CAAZ,EAAe,EAAE,CAAjB,CAAL;OAFH,CAAlB;;gBAIU,MAAV,CAAiB,QAAjB,EAA2B,IAA3B,CAAgC,GAAhC,EAAqC,EAArC;;gBAEU,MAAV,CAAiB,MAAjB,EACG,IADH,CACQ,IADR,EACc,CADd,EAEG,IAFH,CAEQ,IAFR,EAEc,CAFd,EAGG,IAHH,CAGQ,aAHR,EAGuB,QAHvB,EAIG,IAJH,CAIQ;eAAK,YAAY,EAAE,IAAF,CAAO,IAAnB,CAAL;OAJR;;gBAOG,EADH,CACM,WADN,EACmB,SAAS,EAAT,CAAY,CAAZ,EAAe;2BACvB,IAAP,EAAa,MAAb,CAAoB,MAApB,EAA4B,IAA5B,CAAiC,EAAE,IAAF,CAAO,IAAxC;OAFJ,EAIG,EAJH,CAIM,UAJN,EAIkB,SAAS,EAAT,CAAY,CAAZ,EAAe;2BACtB,IAAP,EAAa,MAAb,CAAoB,MAApB,EAA4B,IAA5B,CAAiC,YAAY,EAAE,IAAF,CAAO,IAAnB,CAAjC;OALJ;;WAQK,IAAL,GAAY,MAAZ;;;UAGM,OAAO,KAAK,MAAL,CAAY,SAAZ,CAAsB,WAAtB,EAAmC,IAAnC,CAAwC,KAAxC,EACX,SAAS,GAAT,CAAa,CAAb,EAAgB;eAAS,IAAI,EAAE,MAAF,CAAS,EAAb,GAAkB,KAAK,EAA9B;OADP,CAAb;;;WAIK,KAAL,GAAa,MAAb,CAAoB,MAApB,EAA4B,GAA5B,EACG,IADH,CACQ,OADR,EACiB,MADjB,EAEG,IAFH,CAEQ,IAFR,EAEc;eAAK,EAAE,MAAF,CAAS,EAAd;OAFd,EAGG,IAHH,CAGQ,GAHR,EAGa;eAAK,SAAS,EAAE,GAAG,EAAE,MAAF,CAAS,CAAd,EAAiB,GAAG,EAAE,MAAF,CAAS,CAA7B,EAAT,EAA2C,EAAE,GAAG,EAAE,MAAF,CAAS,CAAd,EAAiB,GAAG,EAAE,MAAF,CAAS,CAA7B,EAA3C,CAAL;OAHb;;;WAMK,IAAL,GAAY,MAAZ;;;;;;;;;;;;;;;;;;"}
|