/*******************************************************************************
 * @license
 * Copyright (c) 2012 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 * 
 * Contributors: IBM Corporation - initial API and implementation
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2011, 2012 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2013 VMware, Inc. All Rights Reserved.
 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 * CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 * You can obtain a current copy of the Eclipse Public License from
 * http://www.opensource.org/licenses/eclipse-1.0.php
 *
 * Contributors:
 *     Andrew Eisenberg
 *     Brian Cavalier
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2012 VMware, Inc. All Rights Reserved.
 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 * CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 * You can obtain a current copy of the Eclipse Public License from
 * http://www.opensource.org/licenses/eclipse-1.0.php
 *
 * Contributors:
 *     Andrew Eisenberg (VMware) - initial API and implementation
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2012 VMware, Inc. All Rights Reserved.
 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 * CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 * You can obtain a current copy of the Eclipse Public License from
 * http://www.opensource.org/licenses/eclipse-1.0.php
 *
 * Contributors:
 *     Andy Clement (VMware) - initial API and implementation
 *     Andrew Eisenberg (VMware) - implemented visitor pattern
 ******************************************************************************/

/*
  Copyright (C) 2012-2013 Yusuke Suzuki <utatane.tea@gmail.com>
  Copyright (C) 2013 Andrew Eisenberg <andrew@eisenberg.as>

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/*******************************************************************************
 * @license
 * Copyright (c) 2012 VMware, Inc. All Rights Reserved.
 * Copyright (c) 2013 IBM Corporation.
 *
 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 * CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 * You can obtain a current copy of the Eclipse Public License from
 * http://www.opensource.org/licenses/eclipse-1.0.php
 *
 * Contributors:
 *     Andrew Eisenberg (VMware) - initial API and implementation
 *     Manu Sridharan (IBM) - Various improvements
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2013 IBM Corporation.
 *
 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 * CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 * You can obtain a current copy of the Eclipse Public License from
 * http://www.opensource.org/licenses/eclipse-1.0.php
 *
 * Contributors:
 *     Manu Sridharan (IBM) - Initial API and implementation
 ******************************************************************************/

/*******************************************************************************
 * @license
 * Copyright (c) 2012 VMware, Inc. All Rights Reserved.
 * Copyright (c) 2013 IBM Corporation.
 *
 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 * ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 * CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 * You can obtain a current copy of the Eclipse Public License from
 * http://www.opensource.org/licenses/eclipse-1.0.php
 *
 * Contributors:
 *	 Andy Clement (VMware) - initial API and implementation
 *	 Andrew Eisenberg (VMware) - implemented visitor pattern
 *       Manu Sridharan (IBM) - Various improvements
 ******************************************************************************/

/*

  Original copyright is below.  This is version git tag: 310927be9f.
  Further modifications:
  Author: Andy Clement (VMware) - recovery support


  Original copyright:

  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
  Copyright (C) 2012 Mathias Bynens <mathias@qiwi.be>
  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
  Copyright (C) 2012 Kris Kowal <kris.kowal@cixar.com>
  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>

  Redistribution and use in source and binary forms, with or without
  modification, are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

/*******************************************************************************
 * @license
 * Copyright (c) 2010, 2013 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials are made 
 * available under the terms of the Eclipse Public License v1.0 
 * (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 * License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/

/*

 Copyright (c) 2012 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors: IBM Corporation - initial API and implementation

 Copyright (c) 2011, 2012 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013 VMware, Inc. All Rights Reserved.
 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 You can obtain a current copy of the Eclipse Public License from
 http://www.opensource.org/licenses/eclipse-1.0.php

 Contributors:
 Andrew Eisenberg
 Brian Cavalier

 Copyright (c) 2012 VMware, Inc. All Rights Reserved.
 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 You can obtain a current copy of the Eclipse Public License from
 http://www.opensource.org/licenses/eclipse-1.0.php

 Contributors:
 Andrew Eisenberg (VMware) - initial API and implementation

 Copyright (c) 2012 VMware, Inc. All Rights Reserved.
 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 You can obtain a current copy of the Eclipse Public License from
 http://www.opensource.org/licenses/eclipse-1.0.php

 Contributors:
 Andy Clement (VMware) - initial API and implementation
 Andrew Eisenberg (VMware) - implemented visitor pattern

 Copyright (c) 2012 VMware, Inc. All Rights Reserved.
 Copyright (c) 2013 IBM Corporation.

 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 You can obtain a current copy of the Eclipse Public License from
 http://www.opensource.org/licenses/eclipse-1.0.php

 Contributors:
 Andrew Eisenberg (VMware) - initial API and implementation
 Manu Sridharan (IBM) - Various improvements

 Copyright (c) 2012 VMware, Inc. All Rights Reserved.
 Copyright (c) 2013 IBM Corporation.

 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 You can obtain a current copy of the Eclipse Public License from
 http://www.opensource.org/licenses/eclipse-1.0.php

 Contributors:
 Andy Clement (VMware) - initial API and implementation
 Andrew Eisenberg (VMware) - implemented visitor pattern
 Manu Sridharan (IBM) - Various improvements

 Copyright (c) 2012 VMware, Inc. All Rights Reserved.
 Copyright (c) 2013 IBM Corporation.

 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 You can obtain a current copy of the Eclipse Public License from
 http://www.opensource.org/licenses/eclipse-1.0.php

 Contributors:
 Andy Clement (VMware) - initial API and implementation
 Andrew Eisenberg (VMware) - implemented visitor pattern
 Manu Sridharan (IBM) - Various improvements

 Copyright (c) 2012 VMware, Inc. All Rights Reserved.
 Copyright (c) 2013 IBM Corporation.

 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 You can obtain a current copy of the Eclipse Public License from
 http://www.opensource.org/licenses/eclipse-1.0.php

 Contributors:
 Andy Clement (VMware) - initial API and implementation
 Andrew Eisenberg (VMware) - implemented visitor pattern
 Manu Sridharan (IBM) - Various improvements

 Copyright (c) 2010, 2013 IBM Corporation and others.
 All rights reserved. This program and the accompanying materials are made 
 available under the terms of the Eclipse Public License v1.0 
 (http://www.eclipse.org/legal/epl-v10.html), and the Eclipse Distribution 
 License v1.0 (http://www.eclipse.org/org/documents/edl-v10.html). 

 Contributors:
 IBM Corporation - initial API and implementation

 Copyright (c) 2013 IBM Corporation.

 THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE
 ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE
 CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
 You can obtain a current copy of the Eclipse Public License from
 http://www.opensource.org/licenses/eclipse-1.0.php

 Contributors:
 Manu Sridharan (IBM) - Initial API and implementation
*/
(function(h,b){typeof define==="function"&&define.amd?define("orion/Deferred",b):typeof exports==="object"?module.exports=b():(h.orion=h.orion||{},h.orion.Deferred=b())})(this,function(){function h(){for(var b;b=q.shift();)b();m=!1}function b(b){q.push(b);m||(m=!0,setTimeout(h,0))}function j(b){return function(){b.apply(void 0,arguments)}}function o(){function m(){for(var d;d=c.shift();){var l=d.deferred,b=a==="fulfilled"?"resolve":"reject";if(typeof d[b]==="function")try{var f=(0,d[b])(e),p=f&&(typeof f===
"object"||typeof f==="function")&&f.then;if(typeof p==="function")if(f===l.promise)l.reject(new TypeError);else{var C=f.cancel;typeof C==="function"?l._protected(q).parentCancel=C.bind(f):delete l._protected(q).parentCancel;p.call(f,j(l.resolve),j(l.reject),j(l.progress))}else l.resolve(f)}catch(o){l.reject(o)}else l[b](e)}}function h(d){delete l.parentCancel;a="rejected";e=d;c.length&&b(m)}function t(g){function R(a){return function(f){H||(H=!0,a(f))}}var H=!1;delete l.parentCancel;try{var f=g&&
(typeof g==="object"||typeof g==="function")&&g.then;if(typeof f==="function")if(g===d)h(new TypeError);else{a="assumed";var p=g&&g.cancel;if(typeof p!=="function"){var C=new o,g=C.promise;try{f(C.resolve,C.reject,C.progress)}catch(ca){C.reject(ca)}p=g.cancel;f=g.then}e=g;f.call(g,R(t),R(h));l.parentCancel=p.bind(g)}else a="fulfilled",e=g,c.length&&b(m)}catch(ya){R(h)(ya)}}function y(){var c=l.parentCancel;if(c)delete l.parentCancel,c();else if(!a)c=Error("Cancel"),c.name="Cancel",h(c)}var e,a,c=
[],d=this,l={};Object.defineProperty(this,"_protected",{value:function(a){if(a!==q)throw Error("protected");return l}});this.resolve=function(c){a||t(c);return d};this.reject=function(c){a||h(c);return d};this.progress=function(e){a||c.forEach(function(a){if(a.progress)try{a.progress(e)}catch(c){}});return d.promise};this.cancel=function(){l.parentCancel?setTimeout(y,0):y();return d};this.then=function(e,l,H){e={resolve:e,reject:l,progress:H,deferred:new o};c.push(e);e.deferred._protected(q).parentCancel=
d.promise.cancel.bind(d);(a==="fulfilled"||a==="rejected")&&b(m);return e.deferred.promise};this.promise={then:d.then,cancel:d.cancel}}var q=[],m=!1;o.all=function(b,j){function m(l,g){c||(a[l]=g,--e===0&&d.resolve(a))}function h(a,e){if(!c){if(j)try{m(a,j(e));return}catch(b){e=b}d.reject(e)}}var e=b.length,a=[],c=!1,d=new o;d.then(void 0,function(){c=!0;b.forEach(function(a){a.cancel&&a.cancel()})});e===0?d.resolve(a):b.forEach(function(a,c){a.then(m.bind(void 0,c),h.bind(void 0,c))});return d.promise};
o.when=function(b,j,m,h){var e;if(!(b&&typeof b.then==="function"))e=new o,e.resolve(b),b=e.promise;return b.then(j,m,h)};return o});
(function(h,b){typeof define==="function"&&define.amd?define("orion/plugin",["orion/Deferred"],b):typeof exports==="object"?module.exports=b(require("orion/Deferred")):(h.orion=h.orion||{},h.orion.PluginProvider=b(h.orion.Deferred))})(this,function(h){function b(b,o){this.__objectId=b;this.__methods=o}return function(j){function o(a){d&&(typeof ArrayBuffer==="undefined"&&(a=JSON.stringify(a)),d===self?d.postMessage(a):d.postMessage(a,"*"))}function q(){var f=[];Object.keys(C).forEach(function(a){var c=
C[a];f.push({serviceId:a,names:c.names,methods:c.methods,properties:c.properties})});return{headers:a||{},services:f}}function m(a,f){if(f&&f instanceof XMLHttpRequest){var c,d;try{c=f.status,d=f.statusText}catch(e){c=0,d=""}return{status:c||0,statusText:d}}return f}function M(a){var f=a?JSON.parse(JSON.stringify(a,m)):a;if(a instanceof Error)f.__isError=!0,f.message=f.message||a.message,f.name=f.name||a.name;return f}function w(a){if(!d)return(new h).reject(Error("plugin not connected"));a.id=String(l++);
var n=new h;f[a.id]=n;n.then(null,function(f){c&&f instanceof Error&&f.name==="Cancel"&&ca({requestId:a.id,method:"cancel",params:f.message?[f.message]:[]})});var s=Object.prototype.toString;a.params.forEach(function(f,c){if(s.call(f)==="[object Object]"&&!(f instanceof b)){var d,e;for(d in f)s.call(f[d])==="[object Function]"&&(e=e||[],e.push(d));if(e){var l=g++;p[l]=f;d=function(){delete p[l]};n.then(d,d);a.params[c]=new b(l,e)}}});ca(a);return n.promise}function t(a,f){a||a===0?ca({id:a,result:null,
error:f}):console.log(f)}function y(a,f,c,d){d.forEach(function(a,f){if(a&&typeof a.__objectId!=="undefined"){var c={};a.__methods.forEach(function(f){c[f]=function(){return w({objectId:a.__objectId,method:f,params:Array.prototype.slice.call(arguments)})}});d[f]=c}});var e=typeof a===void 0?null:{id:a,result:null,error:null};try{var p=c.apply(f,d);if(e)p&&typeof p.then==="function"?(H[a]=p,p.then(function(f){delete H[a];e.result=f;ca(e)},function(f){if(H[a])delete H[a],e.error=M(f),ca(e)},function(){ca({responseId:a,
method:"progress",params:Array.prototype.slice.call(arguments)})})):(e.result=p,ca(e))}catch(l){if(e)e.error=M(l),ca(e)}}function e(a){if(a.source===d){a=typeof a.data!=="string"?a.data:JSON.parse(a.data);try{if(a.method){var c=a.method,e=a.params||[];if("serviceId"in a){var l=C[a.serviceId];l||t(a.id,"service not found");l=l.implementation;c in l?y(a.id,l,l[c],e):t(a.id,"method not found")}else if("objectId"in a){var b=p[a.objectId];b||t(a.id,"object not found");!c in b?y(a.id,b,b[c],e):t(a.id,"method not found")}else if("requestId"in
a){var g=H[a.requestId];g&&c==="cancel"&&g.cancel&&g.cancel.apply(g,e)}else if("responseId"in a){var o=f[a.responseId];o&&c==="progress"&&o.progress&&o.progress.apply(o,e)}else throw Error("Bad method: "+a.method);}else{var ka=f[String(a.id)];delete f[String(a.id)];a.error?ka.reject(a.error):ka.resolve(a.result)}}catch(pa){console.log("Plugin._messageHandler "+pa)}}}var a=j,c=!1,d=null,l=0,g=0,R=0,H={},f={},p={},C={},ca=o;this.updateHeaders=function(f){if(c)throw Error("Cannot update headers. Plugin Provider is connected");
a=f};this.registerServiceProvider=this.registerService=function(a,f,d){if(c)throw Error("Cannot register service. Plugin Provider is connected");typeof a==="string"?a=[a]:Array.isArray(a)||(a=[]);var e=null,p=[];for(e in f)typeof f[e]==="function"&&p.push(e);C[R++]={names:a,methods:p,implementation:f,properties:d||{},listeners:{}}};this.connect=function(a,f){if(!c){if(typeof window==="undefined")d=self;else if(window!==window.parent)d=window.parent;else if(window.opener!==null)d=window.opener;else{f&&
f("No valid plugin target");return}addEventListener("message",e,!1);var s={method:"plugin",params:[q()]};o(s);c=!0}a&&a()};this.disconnect=function(){c&&(removeEventListener("message",e),d=null,c=!1)}}});
define("plugins/esprima/scriptedLogger",[],function(){var h;if(typeof console==="undefined"){var b;b=typeof status==="function"?status:typeof onmessage==="function"?onmessage:function(){};h={info:b,debug:b,warn:b,error:b}}else h=console;var j={ALL:!0,OTHER:!0,INDEXER:!1,CONTENT_ASSIST:!0,EXPLORER_TABLE:!0,SETUP:!0,PANE:!0,STORAGE:!0};return{SHOW_CALLER:!1,INFO:!0,DEBUG:!0,WARN:!0,ERROR:!0,info:function(b,j){this.INFO&&this.isEnabled(j)&&(b=this.SHOW_CALLER?b+" --- "+this.info.caller:b,h.info(b))},
debug:function(b,j){this.DEBUG&&this.isEnabled(j)&&(b=this.SHOW_CALLER?b+" --- "+this.debug.caller:b,h.debug(b))},warn:function(b,j){this.WARN&&this.isEnabled(j)&&(b=this.SHOW_CALLER?b+" --- "+this.warn.caller:b,h.warn(b))},error:function(b,j){this.ERROR&&this.isEnabled(j)&&(b=this.SHOW_CALLER?b+" --- "+this.error.caller:b,h.error(b))},isEnabled:function(b){return!j.ALL?!1:!b||j[b]===void 0?j.OTHER:j[b]}}});
define("plugins/esprima/esprimaVisitor",["plugins/esprima/scriptedLogger"],function(h){return{parse:function(b,j){j||(j={});if(!j.range)j.range=!0;if(!j.tolerant)j.tolerant=!0;if(!j.comment)j.comment=!0;try{return esprima.parse(b,j)}catch(o){return typeof h!=="undefined"&&(h.warn("Problem parsing file","CONTENT_ASSIST"),h.warn(o.message,"CONTENT_ASSIST"),h.warn(o.stack,"CONTENT_ASSIST")),null}},visit:function(b,j,o,h){var m,M,w,t;if(o(b,j,!0)){t=[];for(M in b)if(M!=="range"&&M!=="errors"&&M!=="target"&&
M!=="extras"&&M!=="comments")if(w=b[M],w instanceof Array)for(m=0;m<w.length;m++)w[m]&&w[m].hasOwnProperty("type")?t.push(w[m]):M==="properties"&&w[m].hasOwnProperty("key")&&w[m].hasOwnProperty("value")&&(t.push(w[m].key),t.push(w[m].value));else w&&w.hasOwnProperty("type")&&t.push(w);if(t.length>0){t.sort(function(b,e){return b.range&&e.range?b.range[0]-e.range[0]:b.range?1:e.range?-1:0});for(m=0;m<t.length;m++)this.visit(t[m],j,o,h)}h&&h(b,j,!1)}}}});
define("plugins/esprima/proposalUtils",[],function(){function h(b,j,o){return j[0]<=b&&(o?j[1]>=b:j[1]>b)}return{looselyMatches:function(b,j){if(j===null||b===null)return!1;if(b.length===0)return!0;if(b.charAt(0).toLowerCase()!==j.charAt(0).toLowerCase())return!1;if(this.startsWith(j,b))return!0;if(this.startsWith(j.toLowerCase(),b))return!0;if(b===b.toLowerCase())return!1;var o=this.toCamelCaseParts(b),h=this.toCamelCaseParts(j);if(o.length>h.length)return!1;for(var m=0;m<o.length;++m)if(!this.startsWith(h[m],
o[m]))return!1;return!0},toCamelCaseParts:function(b){for(var j=[],o=b.length-1;o>=0;--o)this.isUpperCase(b.charAt(o))&&(j.push(b.substring(o)),b=b.substring(0,o));b.length!==0&&j.push(b);return j.reverse()},startsWith:function(b,j){return b.substr(0,j.length)===j},isUpperCase:function(b){return b>="A"&&b<="Z"},repeatChar:function(b,j){for(var o="",h=0;h<j;h++)o+=b;return o},inRange:h,isBefore:function(b,j){return!j?!0:b<j[0]},afterDot:function(b,j,o){var q;q=j.property?j.property.range[0]:j.range[1]+
2;if(!h(b-1,j.range)||h(b-1,j.object.range)||b>q)return!1;for(j=j.object.range[1];o.charAt(j)!=="."&&j<q;)j++;return o.charAt(j)!=="."?!1:j<b}}});
(function(h){var b,j;function o(a,f,c){return a.slice(f,c)}function q(a){return a==="\n"||a==="\r"||a==="\u2028"||a==="\u2029"}function m(a){return a===" "||a==="\t"||a==="\u000b"||a==="\u000c"||a==="\u00a0"||a.charCodeAt(0)>=5760&&"\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\ufeff".indexOf(a)>=0}function M(a){return"0123456789".indexOf(a)>=0}function w(a){return"01234567".indexOf(a)>=0}function t(a){return a==="$"||a==="_"||a==="\\"||a>="a"&&a<=
"z"||a>="A"&&a<="Z"||a.charCodeAt(0)>=128&&b.test(a)}function y(a){return"><(){}[],:*|?!=".indexOf(a)===-1&&!m(a)&&!q(a)}function e(){}function a(a){return a.replace(/^\s+/,"").replace(/\s+$/,"")}function c(a){var f,c,d,e,b,a=a.replace(/^\/\*\*/,"").replace(/\*\/$/,"");f=0;c=a.length;d=0;for(e="";f<c;){b=a[f];switch(d){case 0:q(b)?e+=b:b==="*"?d=1:m(b)||(e+=b,d=2);break;case 1:m(b)||(e+=b);d=2;break;case 2:e+=b,q(b)&&(d=0)}f+=1}return e}var d,l,g,R;b=RegExp("[\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]");
j=RegExp("[\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]");
d=typeof"doctrine"[0]!==void 0;(R=Array.isArray)||(R=function(a){return Object.prototype.toString.call(a)==="[object Array]"});d||(o=function(a,f,c){return a.slice(f,c).join("")});"0.0.4".slice(-3)==="dev"&&(e=function(a,f){if(!a)throw Error(f);});(function(a){var f,c,b,l,g,n,s,O,L,ba,j,ka,pa,la,R,h,o,Ea,na,sa,ta,ja,za;function F(){var a=G[B];B+=1;return a}function Oa(){var a,f;a="";if(f!=="."){a=F();f=G[B];if(a==="0"){if(f==="x"||f==="X"){for(a+=F();B<S;){f=G[B];if(!("0123456789abcdefABCDEF".indexOf(f)>=
0))break;a+=F()}if(a.length<=2)throw"unexpected token";if(B<S&&(f=G[B],t(f)))throw"unexpected token";Z=parseInt(a,16);return c}if(w(f)){for(a+=F();B<S;){f=G[B];if(!w(f))break;a+=F()}if(B<S&&(f=G[B],t(f)||M(f)))throw"unexpected token";Z=parseInt(a,8);return c}if(M(f))throw"unexpected token";}for(;B<S;){f=G[B];if(!M(f))break;a+=F()}}if(f===".")for(a+=F();B<S;){f=G[B];if(!M(f))break;a+=F()}if(f==="e"||f==="E"){a+=F();f=G[B];if(f==="+"||f==="-")a+=F();f=G[B];if(M(f))for(a+=F();B<S;){f=G[B];if(!M(f))break;
a+=F()}else throw"unexpected token";}if(B<S&&(f=G[B],t(f)))throw"unexpected token";Z=parseFloat(a);return c}function ua(){var a;for(va=B;B<S&&m(G[B]);)F();if(B>=S)return v=l;a=G[B];switch(a){case '"':a="";var c,d,e,p;c=G[B];for(++B;B<S;)if(d=F(),d===c){c="";break}else if(d==="\\")if(d=F(),q(d))d==="\r"&&G[B]==="\n"&&++B;else switch(d){case "n":a+="\n";break;case "r":a+="\r";break;case "t":a+="\t";break;case "u":case "x":e=B;a:{var H=p=void 0,t=void 0,z=0,H=d==="u"?4:2;for(p=0;p<H;++p)if(B<S&&"0123456789abcdefABCDEF".indexOf(G[B])>=
0)t=F(),z=z*16+"0123456789abcdef".indexOf(t.toLowerCase());else{p="";break a}p=String.fromCharCode(z)}p?a+=p:(B=e,a+=d);break;case "b":a+="\u0008";break;case "f":a+="\u000c";break;case "v":a+="\u000b";break;default:w(d)?(e="01234567".indexOf(d),B<S&&w(G[B])&&(e=e*8+"01234567".indexOf(F()),"0123".indexOf(d)>=0&&B<S&&w(G[B])&&(e=e*8+"01234567".indexOf(F()))),a+=String.fromCharCode(e)):a+=d}else if(q(d))break;else a+=d;if(c!=="")throw"unexpected quote";Z=a;return v=f;case ":":return F(),v=g;case ",":return F(),
v=n;case "(":return F(),v=s;case ")":return F(),v=O;case "[":return F(),v=L;case "]":return F(),v=ba;case "{":return F(),v=j;case "}":return F(),v=ka;case ".":F();if(B<S){a=G[B];if(a==="<")return F(),v=pa;if(a==="."&&B+1<S&&G[B+1]===".")return F(),F(),v=la;if(M(a))return v=Oa()}return v=R;case "<":return F(),v=h;case ">":return F(),v=o;case "*":return F(),v=Ea;case "|":return F(),v=na;case "?":return F(),v=sa;case "!":return F(),v=ta;case "=":return F(),v=ja;default:if(M(a))return v=Oa();if(y(a)){for(Z=
F();B<S&&y(G[B]);){a=G[B];if(a==="."&&B+1<S&&(a=G[B+1],a==="<"))break;Z+=F()}return v=b}return v=za}}function K(a,f){e(v===a,f||"consumed token not matched");ua()}function W(a){if(v!==a)throw"unexpected token";ua()}function Fa(){var a;a=Z;if(v===b||v===f)ua();else if(v===c)K(c),a=String(a);else throw"unexpected token";return v===g?(K(g),{type:z.FieldType,key:a,value:$()}):{type:z.FieldType,key:a,value:null}}function Aa(){var a;a=Z;W(b);a={type:z.NameExpression,name:a};if(v===pa||v===h){ua();var f=
[];for(f.push(da());v===n;)K(n),f.push(da());W(o);return{type:z.TypeApplication,expression:a,applications:f}}return a}function U(){for(var a=[],f=!0,c,d=!1;v!==O;){v===la&&(K(la),d=!0);c=$();c.type===z.NameExpression&&v===g&&(K(g),c={type:z.ParameterType,name:c.name,expression:$()});if(v===ja)K(ja),c={type:z.OptionalType,expression:c},f=!1;else if(!f)throw"unexpected token";d&&(c={type:z.RestType,expression:c});a.push(c);v!==O&&W(n)}return a}function ma(){switch(v){case Ea:return K(Ea),{type:z.AllLiteral};
case s:var a;K(s,"UnionType should start with (");a=[];if(v!==O)for(;;){a.push($());if(v===O)break;W(na)}K(O,"UnionType should end with )");return{type:z.UnionType,elements:a};case L:K(L,"ArrayType should start with [");for(a=[];v!==ba;){if(v===la){K(la);a.push({type:z.RestType,expression:$()});break}else a.push($());v!==ba&&W(n)}W(ba);return{type:z.ArrayType,elements:a};case j:K(j,"RecordType should start with {");a=[];if(v===n)K(n);else for(;v!==ka;)a.push(Fa()),v!==ka&&W(n);W(ka);return{type:z.RecordType,
fields:a};case b:if(Z==="null")return K(b),{type:z.NullLiteral};if(Z==="undefined")return K(b),{type:z.UndefinedLiteral};if(Z==="function"){var f,c,d;e(v===b&&Z==="function","FunctionType should start with 'function'");K(b);W(s);a=!1;c=[];f=null;v!==O&&(v===b&&(Z==="this"||Z==="new")?(a=Z==="new",K(b),W(g),f=Aa(),v===n&&(K(n),c=U())):c=U());W(O);d=null;v===g&&(K(g,"ResultType should start with :"),v===b&&Z==="void"?(K(b),d={type:z.VoidLiteral}):d=$());c={type:z.FunctionType,params:c,result:d};f&&
(c["this"]=f,a&&(c["new"]=!0));a=c}else a=Aa();return a;default:throw"unexpected token";}}function $(){var a;if(v===sa)return K(sa),v===n||v===ja||v===ka||v===O||v===na||v===l?{type:z.NullableLiteral}:{type:z.NullableType,expression:ma(),prefix:!0};if(v===ta)return K(ta),{type:z.NonNullableType,expression:ma(),prefix:!0};a=ma();if(v===ta)return K(ta),{type:z.NonNullableType,expression:a,prefix:!1};return v===sa?(K(sa),{type:z.NullableType,expression:a,prefix:!1}):a}function da(){var a;a=$();if(v!==
na)return a;a=[a];for(K(na);;){a.push($());if(v!==na)break;K(na)}return{type:z.UnionType,elements:a}}function Ka(){var a;if(v===la)return K(la),{type:z.RestType,expression:da()};a=da();return v===ja?(K(ja),{type:z.OptionalType,expression:a}):a}function V(a,f,c){var d,e,b;switch(a.type){case z.NullableLiteral:d="?";break;case z.AllLiteral:d="*";break;case z.NullLiteral:d="null";break;case z.UndefinedLiteral:d="undefined";break;case z.VoidLiteral:d="void";break;case z.UnionType:d=c?"":"(";for(e=0,b=
a.elements.length;e<b;++e)d+=V(a.elements[e],f),e+1!==b&&(d+="|");c||(d+=")");break;case z.ArrayType:d="[";for(e=0,b=a.elements.length;e<b;++e)d+=V(a.elements[e],f),e+1!==b&&(d+=f?",":", ");d+="]";break;case z.RecordType:d="{";for(e=0,b=a.fields.length;e<b;++e)d+=V(a.fields[e],f),e+1!==b&&(d+=f?",":", ");d+="}";break;case z.FieldType:d=a.value?a.key+(f?":":": ")+V(a.value,f):a.key;break;case z.FunctionType:d=f?"function(":"function (";a["this"]&&(d+=a["new"]?f?"new:":"new: ":f?"this:":"this: ",d+=
V(a["this"],f),a.params.length!==0&&(d+=f?",":", "));for(e=0,b=a.params.length;e<b;++e)d+=V(a.params[e],f),e+1!==b&&(d+=f?",":", ");d+=")";a.result&&(d+=(f?":":": ")+V(a.result,f));break;case z.ParameterType:d=a.name+(f?":":": ")+V(a.expression,f);break;case z.RestType:d="...";a.expression&&(d+=V(a.expression,f));break;case z.NonNullableType:d=a.prefix?"!"+V(a.expression,f):V(a.expression,f)+"!";break;case z.OptionalType:d=V(a.expression,f)+"=";break;case z.NullableType:d=a.prefix?"?"+V(a.expression,
f):V(a.expression,f)+"?";break;case z.NameExpression:d=a.name;break;case z.TypeApplication:d=V(a.expression,f)+".<";for(e=0,b=a.applications.length;e<b;++e)d+=V(a.applications[e],f),e+1!==b&&(d+=f?",":", ");d+=">";break;default:throw Error("Unknown type "+a.type);}return d}var z,B,va,G,S,v,Z;z={NullableLiteral:"NullableLiteral",AllLiteral:"AllLiteral",NullLiteral:"NullLiteral",UndefinedLiteral:"UndefinedLiteral",VoidLiteral:"VoidLiteral",UnionType:"UnionType",ArrayType:"ArrayType",RecordType:"RecordType",
FieldType:"FieldType",FunctionType:"FunctionType",ParameterType:"ParameterType",RestType:"RestType",NonNullableType:"NonNullableType",OptionalType:"OptionalType",NullableType:"NullableType",NameExpression:"NameExpression",TypeApplication:"TypeApplication"};za=0;R=1;pa=2;la=3;h=4;o=5;s=6;O=7;j=8;ka=9;L=10;ba=11;n=12;g=13;Ea=14;na=15;sa=16;ta=17;ja=18;b=19;f=20;c=21;l=22;a.parseType=function(a,f){var c;G=a;S=G.length;va=B=0;d||(G=G.split(""));ua();c=da();if(f&&f.midstream)return{expression:c,index:va};
if(v!==l)throw"not reach to EOF";return c};a.parseParamType=function(a,f){var c;G=a;S=G.length;va=B=0;d||(G=G.split(""));ua();c=Ka();if(f&&f.midstream)return{expression:c,index:va};if(v!==l)throw"not reach to EOF";return c};a.stringify=function(a,f){f==null&&(f={});return V(a,f.compact,f.topLevel)};a.Syntax=z})(l={});(function(b){function f(){var a=L[s];s+=1;return a}function p(){var a="";for(f();s<O&&(L[s]>="a"&&L[s]<="z"||L[s]>="A"&&L[s]<="Z"||L[s]>="0"&&L[s]<="9");)a+=f();return a}function g(){var a,
f,c=s;for(f=!1;c<O;){a=L[c];if(q(a))f=!0;else if(f){if(a==="@")break;m(a)||(f=!1)}c+=1}return c}function h(a,c){var d,e,b;for(b=!1;s<c;)if(d=L[s],m(d))f();else{d==="{"?f():b=!0;break}if(b){b=o(L,s,c);try{return e=a==="param"?l.parseParamType(b,{midstream:!0}):l.parseType(b,{midstream:!0}),s+=e.index,e.expression}catch(n){}}else{e=0;for(b="";s<c;){d=L[s];if(q(d))return;if(d==="}")if(e===0){f();break}else e-=1;else d==="{"&&(e+=1);b+=f()}try{return a==="param"?l.parseParamType(b):l.parseType(b)}catch(p){}}}
function ya(a,c){for(var d,e,b;s<a&&(m(L[s])||q(L[s]));)f();if(!(s>=a)){if(!t(L[s]))if(c&&L[s]==="[")b=!0;else return;for(e=f();s<a;){d=L[s];if(m(d)||q(d)){f();break}if(b&&L[s]==="]"){e+=f();break}if(!(d==="$"||d==="_"||d==="\\"||d>="a"&&d<="z"||d>="A"&&d<="Z"||d>="0"&&d<="9"||d.charCodeAt(0)>=128&&j.test(d)))return;e+=f()}b&&L[s]==="]"&&(e+=f());return e}}function n(){function c(a){if(!d.errors)d.errors=[];d.errors.push(a)}for(var d,b,n;s<O&&L[s]!=="@";)f();if(!(s>=O)){e(L[s]==="@");b=p();d={title:b,
description:null};if(!b&&(c("Missing or invalid title"),!ba))return;n=g(b);if(b==="define"||b==="enum"||b==="extends"||b==="implements"||b==="param"||b==="return"||b==="this"||b==="type"||b==="typedef"||b==="throws"||b==="returns"||b==="property"||b==="augments")if(d.type=h(b,n),!d.type&&(c("Missing or invalid tag type"),!ba))return;if(b==="param"||b==="property")if(d.name=ya(n,ra&&b==="param"),d.name){if(d.name.charAt(0)==="["&&d.name.charAt(d.name.length-1)==="]")d.name=d.name.substring(1,d.name.length-
1),b={type:"OptionalType",expression:d.type},d.type=b}else if(c("Missing or invalid tag name"),!ba)return;if(b=a(o(L,s,n)))d.description=b;s=n;return d}}var s,O,L,ba,ra;b.parse=function(e,b){var p=[],l,g,C;b===void 0&&(b={});L=typeof b.unwrap==="boolean"&&b.unwrap?c(e):e;if(b.tags)if(R(b.tags)){C={};for(l=0,g=b.tags.length;l<g;l++)if(typeof b.tags[l]==="string")C[b.tags[l]]=!0;else throw Error('Invalid "tags" parameter: '+b.tags);}else throw Error('Invalid "tags" parameter: '+b.tags);d||(L=L.split(""));
O=L.length;s=0;ba=b.recoverable;ra=b.sloppy;for(l="";s<O&&L[s]!=="@";)l+=f();for(g=a(l);;){l=n();if(!l)break;(!C||C.hasOwnProperty(l.title))&&p.push(l)}return{description:g,tags:p}}})(g={});h.version="0.0.4";h.parse=g.parse;h.parseType=l.parseType;h.parseParamType=l.parseParamType;h.unwrapComment=c;h.Syntax=function(a){var f={},d;for(d in a)a.hasOwnProperty(d)&&(f[d]=a[d]);return f}(l.Syntax);h.type={Syntax:h.Syntax,parseType:l.parseType,parseParamType:l.parseParamType,stringify:l.stringify}})(typeof exports===
"undefined"?doctrine={}:exports);define("doctrine/doctrine",function(){});
define("plugins/esprima/typeUtils",["plugins/esprima/proposalUtils","plugins/esprima/scriptedLogger","doctrine/doctrine"],function(h,b){function j(e){if(!e)return e;if(e.type)return e;try{return doctrine.parseParamType(e)}catch(a){return console.error("doctrine failure to parse: "+e),{}}}function o(e){if(typeof e!=="string")throw Error("Expected string, but found: "+JSON.parse(e));return{type:"NameExpression",name:e}}function q(e,a){if(typeof e!=="string")return!1;else if(e==="Object"||e==="undefined")return!0;
else if(e.substring(0,y.length)!==y)return!1;var c=a[e],d=0,b;for(b in c)if(c.hasOwnProperty(b)&&(d++,d>1))break;return d===1?q(c.$$proto.typeObj.name,a):!1}var m=o("Object"),M=/\$\$__JUST_DOTS__\$\$/g,w=/:undefined|:\{\}/g,t=function(e,a,c){this._typeObj=j(e);this.range=a;this.path=c};t.prototype={set typeObj(e){typeof e==="string"&&(e=j(e));this._typeObj=e},get typeObj(){return this._typeObj}};t.revive=function(e){var a=new t,c;for(c in e)if(e.hasOwnProperty(c))c==="typeSig"?a.typeObj=e[c]:a[c]=
e[c];return a};var y="gen~";return{Definition:t,GEN_NAME:y,isArrayType:function(e){return e.type==="ArrayType"||e.type==="TypeApplication"},isFunctionOrConstructor:function(e){return e.type==="FunctionType"},isPrototypeName:function(e){return e.substr(-6,6)==="~proto"},parameterizeArray:function(e){return{type:"ArrayType",elements:[e]}},createFunctionType:function(e,a,c){e={type:"FunctionType",params:e,result:a};if(c)e.params=e.params||[],e.params.push({type:"ParameterType",name:"new",expression:a});
return e},extractArrayParameterType:function(e){if(e.type==="TypeApplication")if(e.expression.name==="Array")e=e.applications;else return e.expression;else if(e.type==="ArrayType")e=e.elements;else return e;return e.length>0?e[0]:m},extractReturnType:function(e){return e.result||(e.type==="FunctionType"?this.UNDEFINED_TYPE:e)},parseJSDocComment:function(e){var a={params:{}};if(e){var c=e.value;if(!c)return a;try{var d=doctrine.parse("/*"+c+"*/",{unwrap:!0,tags:["param","type","return"]}).tags;if(d)for(c=
0;c<d.length;c++)switch(d[c].title){case "typedef":case "define":case "type":a.type=d[c].type;break;case "return":a.rturn=d[c].type;break;case "param":var l=d[c].name;l.charAt(0)==="["&&l.charAt(l.length-1)==="]"&&(l=l.substring(1,l.length-1));a.params[l]=d[c].type}}catch(g){b.error(g.message,"CONTENT_ASSIST"),b.error(g.stack,"CONTENT_ASSIST"),b.error("Error parsing doc comment:\n"+(e&&e.value),"CONTENT_ASSIST")}}return a},convertJsDocType:function(e,a,c,d){typeof d!=="number"&&(d=0);if(!e)return m;
var b=this,g=e.name,j=a.getAllTypes();switch(e.type){case "NullableLiteral":case "AllLiteral":case "NullLiteral":case "UndefinedLiteral":case "VoidLiteral":return{type:e.type};case "UnionType":return{type:e.type,elements:e.elements.map(function(f){return b.convertJsDocType(f,a,c,d)})};case "RestType":return{type:e.type,expression:b.convertJsDocType(e.expression,a,c,d)};case "ArrayType":return{type:e.type,elements:e.elements.map(function(f){return b.convertJsDocType(f,a,c,d)})};case "FunctionType":var h=
{type:e.type,params:e.params.map(function(f){return b.convertJsDocType(f,a,c,d)})};if(e.result)h.result=d>1&&e.result.type==="FunctionType"?{type:"NameExpression",name:"$$__JUST_DOTS__$$"}:b.convertJsDocType(e.result,a,c,d);return h;case "TypeApplication":h={type:e.type,expression:b.convertJsDocType(e.expression,a,c,d)};if(e.applications)h.applications=e.applications.map(function(f){return b.convertJsDocType(f,a,c,d)});return h;case "ParameterType":return{type:e.type,name:g,expression:e.expression?
b.convertJsDocType(e.expression,a,c,d):null};case "NonNullableType":case "OptionalType":case "NullableType":return{prefix:!0,type:e.type,expression:b.convertJsDocType(e.expression,a,c,d)};case "NameExpression":if(c&&a.isSyntheticName(g)){var f=j[g];if(f.$$fntype)return b.convertJsDocType(f.$$fntype,a,c,d);var p=[];Object.keys(f).forEach(function(e){if(e!=="$$proto"&&e!=="$$isBuiltin"){var n=f[e],n=d>0&&n.typeObj.type==="NameExpression"&&a.isSyntheticName(n.typeObj.name)&&!j[n.typeObj.name].$$fntype?
{type:"NameExpression",name:"$$__JUST_DOTS__$$"}:b.convertJsDocType(n.typeObj,a,c,d+1);p.push({type:"FieldType",key:e,value:n})}});return{type:"RecordType",fields:p}}else if(j[g])return{type:"NameExpression",name:g};else if(e=g[0].toUpperCase()+g.substring(1),j[e])return{type:"NameExpression",name:e};break;case "FieldType":return{type:e.type,key:e.key,value:b.convertJsDocType(e.value,a,c,d)};case "RecordType":if(c)return{type:e.type,params:e.fields.map(function(f){return b.convertJsDocType(f,a,c,
d+1)})};else{for(var g={},C=0;C<e.fields.length;C++){var o=b.convertJsDocType(e.fields[C],a,c,d+1);g[o.key]=o.value}e=a.newFleetingObject();for(h in g)g.hasOwnProperty(h)&&a.addVariable(h,e.name,g[h]);return e}}return m},createNameType:o,createParamType:function(b,a){return{type:"ParameterType",name:b,expression:a}},convertToSimpleTypeName:function(b){switch(b.type){case "NullableLiteral":case "AllLiteral":case "NullLiteral":return"Object";case "UndefinedLiteral":case "VoidLiteral":return"undefined";
case "NameExpression":return b.name;case "TypeApplication":case "ArrayType":return"Array";case "FunctionType":return"Function";case "UnionType":return b.expressions&&b.expressions.length>0?this.convertToSimpleTypeName(b.expressions[0]):"Object";case "RecordType":return"Object";case "FieldType":return this.convertToSimpleTypeName(b.value);case "NonNullableType":case "OptionalType":case "NullableType":case "ParameterType":return this.convertToSimpleTypeName(b.expression)}},styleAsProperty:function(b,
a){return a?'<span style="color: blue;font-weight:bold;">'+b+"</span>":b},styleAsType:function(b,a){return a?'<span style="color: black;">'+b+"</span>":b},styleAsOther:function(b,a){return a?'<span style="font-weight:bold; color:purple;">'+b+"</span>":b},createReadableType:function(b,a,c,d,l){if(c){b=this.convertJsDocType(b,a,!0);if(l)return this.convertToHtml(b,0);b=doctrine.type.stringify(b,{compact:!0});b=b.replace(M,"{...}");return b=b.replace(w,"")}else return b=this.extractReturnType(b),this.createReadableType(b,
a,!0,d,l)},convertToHtml:function(b,a){var c=this,d,l=[],a=a||0;switch(b.type){case "NullableLiteral":return this.styleAsType("?",!0);case "AllLiteral":return this.styleAsType("*",!0);case "NullLiteral":return this.styleAsType("null",!0);case "UndefinedLiteral":return this.styleAsType("undefined",!0);case "VoidLiteral":return this.styleAsType("void",!0);case "NameExpression":return this.styleAsType(b.name==="$$__JUST_DOTS__$$"?"{...}":b.name,!0);case "UnionType":return l=[],b.expressions&&b.expressions.forEach(function(f){l.push(c.convertToHtml(f,
a+1))}),"( "+l.join(", ")+" )";case "TypeApplication":b.applications&&b.applications.forEach(function(f){l.push(c.convertToHtml(f,a))});var g=b.expression.name==="Array";g||(d=this.convertToHtml(b.expression,a)+".<");d+=l.join(",");d+=g?"[]":">";return d;case "ArrayType":return b.elements&&b.elements.forEach(function(f){l.push(c.convertToHtml(f,a+1))}),l.join(", ")+"[]";case "NonNullableType":return"!"+this.convertToHtml(b.expression,a);case "OptionalType":return this.convertToHtml(b.expression,a)+
"=";case "NullableType":return"?"+this.convertToHtml(b.expression,a);case "RestType":return"..."+this.convertToHtml(b.expression,a);case "ParameterType":return this.styleAsProperty(b.name,!0)+(b.expression.name==="$$__JUST_DOTS__$$"?"":":"+this.convertToHtml(b.expression,a));case "FunctionType":var j=!1,o;b.params&&b.params.forEach(function(f){f.name==="this"?(j=!0,o=f.expression):f.name==="new"?(j=!0,o=f.expression):l.push(c.convertToHtml(f,a+1))});if(!o&&b.result)o=b.result;g=o&&o.type!=="UndefinedLiteral"&&
o.name!=="undefined"?this.convertToHtml(o,a+1):"";d=this.styleAsOther(j?"new ":"function",!0);j&&(d+=g);d+="("+l.join(",")+")";!j&&g&&(d+="&rarr;"+g);return d;case "RecordType":return b.fields&&b.fields.length>0?(b.fields.forEach(function(f){l.push(h.repeatChar("&nbsp;&nbsp;",a+1)+c.convertToHtml(f,a+1))}),"{<br/>"+l.join(",<br/>")+"<br/>"+h.repeatChar("&nbsp;&nbsp;",a)+"}"):"{ }";case "FieldType":return this.styleAsProperty(b.key,!0)+":"+this.convertToHtml(b.value,a)}},leftTypeIsMoreGeneral:function(b,
a,c){var d=b.name,a=a.name;if(!d&&(b.type==="NullLiteral"||b.type==="UndefinedLiteral"||b.type==="VoidLiteral"))d="undefined";if(!a)return!1;b=d==="undefined"?0:d==="Object"?1:q(d,c.getAllTypes())?2:3;return b===0?a!=="undefined":b===1?a!=="undefined"&&a!=="Object":b===2?a!=="undefined"&&a!=="Object"&&!q(a,c.getAllTypes()):!1},isEmpty:q,ensureTypeObject:j,OBJECT_TYPE:m,UNDEFINED_TYPE:o("undefined"),NUMBER_TYPE:o("Number"),BOOLEAN_TYPE:o("Boolean"),STRING_TYPE:o("String"),ARRAY_TYPE:o("Array"),FUNCTION_TYPE:o("Function")}});
define("plugins/esprima/typesFromIndexFile",["orion/Deferred","plugins/esprima/typeUtils","doctrine/doctrine"],function(h,b){function j(a){if(a.length<1)return!1;a=a.charCodeAt(0);return isNaN(a)?!1:a>=65&&a<=90}function o(a){var b=null;return b=a.typeObj.type==="FunctionType"?doctrine.type.stringify(a.typeObj,{compact:!0}):a.typeObj.name}function q(a,b,d){function c(a){a=a.substring(2,a.length);return o(m(d,a))}var a=function(a){for(var a=a.substring(3,a.length),a=a.replace(/\s+/g,""),f="";a.slice(0,
1)!==")";){var b=a.indexOf(":"),c=a.slice(0,b),e=c[c.length-1]==="?";e&&(c=c.slice(0,c.length-1));var a=a.slice(b+1,a.length),n=b=null;a.slice(0,2)==="fn"?(n=a.indexOf(")"),b=a.indexOf(",",n)):b=a.indexOf(",");var l=null;b!==-1?l=b:(l=null,l=n?a.indexOf("->",a.indexOf(")",n+1)):a.indexOf("->"),l=l!==-1?l-1:a.length-1);n=a.slice(0,l);n=m(d,n);f+=c+":"+o(n);e&&(f+="=");b!==-1?(f+=",",a=a.slice(l+1,a.length)):a=a.slice(l,a.length)}return{args:f,remaining:a.slice(1,a.length)}}(a),e=a.remaining,n;e!==
""?n=c(e):b&&(n=b);b="function(";!e&&n&&j(n)&&(b+="new:"+n,a.args&&(b+=","));b+=a.args+"):"+n;return b}function m(a,e,C){function j(c,e){var n={},g,p;for(p in c)if(Object.prototype.hasOwnProperty.call(c,p))if(p==="!type"){if(g=m(a,c[p],e),b.isFunctionOrConstructor(g.typeObj))n.$$fntype=g.typeObj,g=e?new b.Definition(e):new b.Definition(d+l++)}else if(p==="!proto")n.$$proto=m(a,c[p]);else if(!(p==="!url"||p==="!stdProto"||p==="!effects"||p==="!doc"))if(p[0]==="!")throw"didn't handle special property "+
p;else p==="prototype"?(n.$$prototype=m(a,c[p]),n.$$newtype=n.$$prototype):n[p]=m(a,c[p]);if(n.$$prototype&&n.$$fntype&&typeof c.prototype==="string")n.$$fntype.result.name=n.$$prototype.typeObj.name;g||(g=e?new b.Definition(e):new b.Definition(d+l++));return{propInfo:n,def:g}}if(typeof e==="string"){if(c[e])return new b.Definition(c[e]);else if(e==="?")return C==="undefined"?new b.Definition({name:"undefined",type:"NameExpression"}):C?new b.Definition(C):new b.Definition("Object");else if(e==="<top>")return new b.Definition("Global");
else if(e[0]==="$")return new b.Definition(C);else if(e.slice(0,2)==="fn")return new b.Definition(q(e,C,a));else if(e[0]==="[")return new b.Definition("Array");else if(e.slice(0,7)==="!custom"||e.slice(0,5)==="!this"||e.slice(0,2)==="!0")return new b.Definition("Object");else if(e.slice(0,1)==="!")throw"unhandled special case "+e;e.indexOf(".")!==-1&&(e=e.replace(/\./g,".."));e.slice(0,1)==="+"&&(e=e.slice(1,e.length)+"..prototype");return new b.Definition(e)}else{var C=j(e,C),h=C.def.typeObj.name;
if(h&&h!=="Global"&&(!e["!type"]||!g.test(e["!type"])&&!(e["!type"].slice(0,1)==="["||e["!type"].slice(0,1)==="+")))if(h==="Object"){var e={},n;for(n in C.propInfo)Object.prototype.hasOwnProperty.call(C.propInfo,n)&&(e["$_$"+n]=C.propInfo[n]);e.$$isBuiltin=!0;a[h]=e}else{if(a[h])throw"type "+h+" defined twice in index file";C.propInfo.$$isBuiltin=!0;a[h]=C.propInfo}return C.def}}function M(a,b,d){for(var c in a)if(Object.prototype.hasOwnProperty.call(a,c)&&c!=="!name")if(c==="!define"){var e=a[c],
n;for(n in e)Object.prototype.hasOwnProperty.call(e,n)&&m(d,e[n],n)}else b[c]=typeof a[c]==="string"?m(d,{"!type":a[c]},c):m(d,a[c],c)}function w(a,b){var c={},d=Object.getPrototypeOf(a.Global);Object.keys(d).forEach(function(a){c[a]=d[a]});Object.keys(b.globals).forEach(function(a){c[a]=b.globals[a]});t.prototype=c;a.Global=new t;t.prototype=y;Object.keys(b.types).forEach(function(c){c!=="Global"&&(a[c]=b.types[c])});return a}var t=function(){},y={};t.prototype=y;var e=function(){this.Global=new t},
a={};e.prototype=a;var c={number:"Number",bool:"Boolean",string:"String"},d=b.GEN_NAME+"index~",l=0,g=/^[_$a-zA-Z\xA0-\uFFFF]([_$a-zA-Z0-9\.\xA0-\uFFFF])*$/;y.$$proto=new b.Definition("Object");var R=null,H={};return{Types:e,addLibrary:function(a,b){var c=new h,d=H[b];if(d)c.resolve(d);else{var d={globals:{},types:{}},e;if(b==="browser")e="plugins/esprima/indexFiles/browserIndex";else if(b==="node")e="plugins/esprima/indexFiles/nodeIndex";else throw"unknown library name "+b;require([e],function(a){M(a,
d.globals,d.types);H[b]=d;c.resolve(d)})}return c.then(function(b){return w(a,b)})},ternSig2ClosureSig:function(a,b){return q(a,b,{})},init:function(){if(!R){var b=new h;require(["plugins/esprima/indexFiles/ecma5Index"],function(c){M(c,y,a);b.resolve()});R=b.promise}return R},parseType:function(a,b){var c={};return{def:m(c,a,b),typeInfo:c}},addIndexData:function(a,b){var c={globals:{},types:{}};M(a,c.globals,c.types);w(b,c)}}});
define("plugins/esprima/typeEnvironment",["plugins/esprima/typeUtils","plugins/esprima/typesFromIndexFile","orion/Deferred"],function(h,b,j){function o(b,j){return!(j in b)?!1:Object.hasOwnProperty(j)?!b.hasOwnProperty(j):Object.prototype.hasOwnProperty(j)?b.hasOwnProperty(j):!0}function q(h,o){return b.init().then(function(){var q=new b.Types;o&&o.forEach(function(j){b.addIndexData(j,q)});var t=null;h==="Window"?t=b.addLibrary(q,"browser"):h==="Module"?t=b.addLibrary(q,"node"):(t=new j,t.resolve(q),
t=t.promise);return t})}return{createEnvironment:function(b){function j(a,b,c,d){var e=c[b],c=c.$$proto;return e?d||b==="$$fntype"?e:e.typeObj:c?j(a,b,a.lookupQualifiedType(c.typeObj.name),d):null}var w=b.buffer,t=b.uid,y=b.offset,e=b.indexer,a=b.globalObjName,c=b.indexData;y||(y=w.length+1);var d=[];if(b.comments)for(var l=0;l<b.comments.length;l++)d[l]=b.comments[l];var g=function(a){switch(a){case "prototype":return"$$prototype";case "__proto__":return"$$proto";case "toString":case "hasOwnProperty":case "toLocaleString":case "valueOf":case "isProtoTypeOf":case "propertyIsEnumerable":return"$_$"+
a;default:return a}},R=h.GEN_NAME+function(a){var b=0,c,d;if(a.length===0)return b;for(d=0;d<a.length;d++)c=a.charCodeAt(d),b=(b<<5)-b+c,b&=b;return b}(t)+"~";return q(a,c).then(function(b){return{_scopeStack:["Global"],_allTypes:b,_typeCount:0,_nameStack:[],amdModule:null,commonjsModule:null,nodeJSModule:a==="Module",indexer:e,offset:y,contents:w,uid:t==="local"?null:t,comments:d,newName:function(){return R+this._typeCount++},isSyntheticName:function(a){return a.substr(0,h.GEN_NAME.length)===h.GEN_NAME},
newScope:function(a){var b=this.scope(),c=this.newName();this._allTypes[c]={$$proto:new h.Definition(b,a,this.uid)};this._scopeStack.push(c);return c},newScopeObj:function(a){return h.createNameType(this.newScope(a))},pushScope:function(a){this._scopeStack.push(a)},pushName:function(a){this._nameStack.push(a)},popName:function(){this._nameStack.pop()},getQualifiedName:function(){var a=this._nameStack.join(".");return a.length>0?a+".":a},newObject:function(a,b){this.newScope();a=a?a:this.newName();
this._allTypes[a]={$$proto:new h.Definition("Object",b,this.uid)};var c=h.createNameType(a);this.addVariable("this",null,c,b);return c},newFleetingObject:function(a,b){var c=a?a:this.newName();this._allTypes[c]={$$proto:new h.Definition("Object",b,this.uid)};return h.createNameType(c)},con:function(a,b){var c=a?a:this.newName();this._allTypes[c]={$$proto:new h.Definition("Object",b,this.uid)};return c},popScope:function(){return this._scopeStack.pop()},scope:function(a){if(typeof a==="string")return a;
else if(a&&a.extras.inferredTypeObj)if(a=a.extras.inferredTypeObj,a.type==="NameExpression")return a.name;else if(a.type==="FunctionType"){if(a.params)for(var b=0;b<a.params.length;b++)if((a.params[b].name==="new"||a.params[b].name==="this")&&a.params[b].expression.name)return a.params[b].expression.name;return"Function"}else if(a.type==="ArrayType")return"Array";else if(a.type==="TypeApplication")return a.expression.name;else{if(a.type==="UndefinedLiteral")return"Object"}else return this._scopeStack[this._scopeStack.length-
1]},globalScope:function(){return this._allTypes[this._scopeStack[0]]},globalTypeName:function(){return this._scopeStack[0]},addVariable:function(a,b,c,d,e){if(a==="prototype")a="$$prototype";else if(a==="__proto__")a="$$proto";else if(this._allTypes.Object["$_$"+a])return;b=this._allTypes[this.scope(b)];if(!b.$$isBuiltin&&(!o(b,a)||!h.leftTypeIsMoreGeneral(c,b[a].typeObj,this)))return b[a]=new h.Definition(c?c:h.OBJECT_TYPE,d,this.uid),b[a].docRange=e,b[a]},addOrSetGlobalVariable:function(a,b,c,
d){return this._allTypes.Object["$_$"+a]?void 0:this.addOrSetVariable(a,this.globalTypeName(),b,c,d)},addOrSetVariable:function(a,b,c,d,e){if(a==="prototype")a="$$prototype";else if(a==="__proto__")a="$$proto";else if(this._allTypes.Object["$_$"+a])return;for(var b=this.scope(b),n=this._allTypes[b],l=!1,c=c?c:this.newFleetingObject(),g;n;)if(o(n,a)){g=n[a];if(!n.$$isBuiltin&&n.hasOwnProperty(a)&&!h.leftTypeIsMoreGeneral(c,g.typeObj,this)){g.typeObj=c;if(e)g.docRange=e;if(a==="$$prototype"&&n.$$newtype)this._allTypes[n.$$newtype.typeObj.name].$$proto.typeObj=
c}l=!0;break}else n=n.$$proto?this._allTypes[n.$$proto.typeObj.name||"Function"]:null;if(!l&&(b=this._allTypes[b],!b.$$isBuiltin))g=new h.Definition(c,d,this.uid),g.docRange=e,b[a]=g;return g},lookupQualifiedType:function(a,b){for(var c=a.split(".."),d=this._allTypes[c[0]],e=1;e<c.length;e++)d=this._allTypes[j(this,g(c[e]),d,b).name];return d},lookupTypeObj:function(a,b,c){b=this.lookupQualifiedType(this.scope(b),c);return j(this,g(a),b,c)},removeVariable:function(a,b){var c=this._allTypes[this.scope(b)];
!c.$$isBuiltin&&c[a]&&(!c[a]||c.hasOwnProperty(a))&&delete c[a]},mergeSummary:function(a,b){for(var c in a.types)if(a.types.hasOwnProperty(c)){var d=this._allTypes[c],e=a.types[c];if(!d||d.$$isBuiltin){var d=this._allTypes[c]={},n;for(n in e)d[n]||(d[n]=h.Definition.revive(e[n]))}}c=this._allTypes[b];if(typeof a.provided!=="string")for(var l in a.provided)a.provided.hasOwnProperty(l)&&(c[l]=h.Definition.revive(a.provided[l]))},initFunctionType:function(a,b,c,d){var c=c.name,e=this.newFleetingObject(c+
"~proto");this._allTypes[c].$$proto=new h.Definition("Function",null,this.uid);this._allTypes[c].$$fntype=a;this._allTypes[c].$$prototype=new h.Definition(e,null,this.uid);d||(d=c+"~new");this.newObject(d,b.range);this._allTypes[c].$$newtype=new h.Definition(d,null,this.uid);this._allTypes[d].$$proto=new h.Definition(e,null,this.uid)},updateObjLitFunctionType:function(a,b,c){a=a.extras.inferredTypeObj.name;c=c.extras.inferredTypeObj.name;if(a&&c){var a=this._allTypes[a],c=this._allTypes[this._allTypes[c].$$newtype.typeObj.name],
d;for(d in a)a.hasOwnProperty(d)&&!c.hasOwnProperty(d)&&d!==b&&d.indexOf("$$")!==0&&(c[d]=a[d])}},updateReturnType:function(a,b){if(!a)return b;var c=this._allTypes[a.name].$$fntype;if(c){var d={type:c.type,params:c.params,result:b};c["this"]&&(d["this"]=c["this"]);c["new"]&&(d["new"]=c["new"]);return this._allTypes[a.name].$$fntype=d}else return b},getNewType:function(a){return this.lookupTypeObj("$$newtype",a)},getFnType:function(a){var b=this.lookupTypeObj("$$fntype",a);if(!b)b=a.extras.inferredTypeObj;
return b},findType:function(a){return this._allTypes[h.convertToSimpleTypeName(a)]},getAllTypes:function(){return this._allTypes},storeTarget:function(a){if(!this.targetTypeName)a||(a=this.scope()),this.targetTypeName=a,this.targetFound=!0}}})}}});
define("plugins/esprima/typeInference",["plugins/esprima/esprimaVisitor","plugins/esprima/typeUtils","plugins/esprima/proposalUtils"],function(h,b,j){function o(a){return a?a.type==="Identifier"?a:a.type==="MemberExpression"?a.computed?a.property.type==="Literal"&&typeof a.property.value==="string"?a.property:a:o(a.property):a.type==="ArrayExpression"?a:null:null}function q(a){if(a)if(a.type==="Identifier")return a.name;else if(a.type==="MemberExpression"){var b=q(a.object),a=q(a.property);return b.length>
0&&a.length>0?b+"."+a:b+a}else return a.type==="CallExpression"?q(a.callee):"";else return""}function m(a,b){for(var d;b.length>0&&b[0].range[0]<a.range[0];)d=b.shift();return d||{value:null}}function M(a,c){var d=a.type,e,g,h,H,f,p;if(!a.extras)a.extras={};switch(d){case "Program":a:{if((d=a.body)&&d.length>=1)for(p=0;p<d.length;p++)if(d[p]&&d[p].type==="ExpressionStatement"&&d[p].expression&&d[p].expression.type==="CallExpression"&&d[p].expression.callee.name==="define"&&(h=d[p].expression,h.arguments&&
h.arguments.length===1&&h.arguments[0].type==="FunctionExpression"&&h.arguments[0].params.length===3&&(h=h.arguments[0].params,h[0].name==="require"&&h[1].name==="exports"&&h[2].name==="module"))){d=d[p].expression;break a}d=null}c.commonjsModule=d;if(!c.commonjsModule)d=a.body,c.amdModule=d&&d.length>=1&&d[0]&&d[0].type==="ExpressionStatement"&&d[0].expression&&d[0].expression.type==="CallExpression"&&d[0].expression.callee.name==="define"?d[0].expression:null;break;case "BlockStatement":a.extras.inferredTypeObj=
c.newScopeObj();if(a.extras.stop)return t(a,c),delete a.extras.stop,!1;break;case "ArrayExpression":a.extras.inferredTypeObj=b.ARRAY_TYPE;break;case "ObjectExpression":a.extras.fname&&c.pushName(a.extras.fname);H=c.newObject(null,a.range);a.extras.inferredTypeObj=H;for(g=0;g<a.properties.length;g++)if(e=a.properties[g],e.key&&e.key.name){d=m(e.key,c.comments);f=b.parseJSDocComment(d);p=f.type&&b.convertJsDocType(f.type,c);if(!e.key.extras)e.key.extras={};p?e.key.extras.inferredType=e.key.extras.jsdocType=
h=p:h=b.OBJECT_TYPE;c.addVariable(e.key.name,a,h,e.key.range,d.range);e.key.extras.associatedComment=d;e.key.extras.isLHS=e.key.extras.isDecl=!0;if(e.value.type==="FunctionExpression"||e.value.type==="ObjectExpression"){if(!e.value.extras)e.value.extras={};e.value.extras.fname=e.key.name;e.value.extras.cname=c.getQualifiedName()+e.key.name;if(e.value.type==="FunctionExpression")e.value.extras.jsdocResult=f}}break;case "FunctionDeclaration":case "FunctionExpression":if(a.id)e=a.id.name,p=a.id.range;
else if(a.extras.fname)e=a.extras.fname,p=a.range;h=[];if(a.params)for(g=0;g<a.params.length;g++)h[g]=a.params[g].name;a.extras.jsdocResult?(f=a.extras.jsdocResult,d={range:null}):(d=a.extras.associatedComment||m(a,c.comments),f=b.parseJSDocComment(d));var C;if(H=e)if(H=a.body)e.length<1?H=!1:(H=e.charCodeAt(0),H=isNaN(H)?!1:H>=65&&H<=90);if(H){if(a.extras.cname)e=a.extras.cname;H=b.createNameType(e);C=!0}else{if(f.rturn){var w=b.convertJsDocType(f.rturn,c);H=a.extras.jsdocReturn=w;a.extras.inferredTypeObj=
w}else H=b.UNDEFINED_TYPE;C=!1}var y=Array(h.length);if(a.extras.paramTypeObj&&a.extras.paramTypeObj.type==="FunctionType"){var w=a.extras.paramTypeObj.params,n=Math.min(h.length||0,w.length||0);for(g=0;g<n;g++)y[g]=w[g]}if(!a.body.extras)a.body.extras={};a.body.extras.isConstructor=C;w=[];if(h.length>0){n=[];g=a.params;var s;if(g.length>0){if(!a.extras)a.extras={};if(c.indexer&&a.extras.amdDefn&&(s=a.extras.amdDefn.arguments,s.length>1&&s[s.length-1]===a)){var O=null;if(s.length===3&&s[0].type===
"Literal"&&s[1].type==="ArrayExpression")O=s[1].elements;else if(s.length===2&&s[0].type==="ArrayExpression")O=s[0].elements;if(O)for(s=0;s<g.length;s++)if(s<O.length&&O[s].type==="Literal"){var L=c.indexer.retrieveSummary(O[s].value);if(L){var ba,ra;typeof L.provided==="string"?ra=ba=L.provided:(ra=ba=c.newScope(),c.popScope());c.mergeSummary(L,ra);n.push(ba)}else n.push(c.newFleetingObject())}else n.push(b.OBJECT_TYPE)}}if(n.length===0)for(s=0;s<g.length;s++)n.push(c.newFleetingObject());for(g=
0;g<h.length;g++)O=f.params[h[g]],s=null,s=O?b.convertJsDocType(O,c):n[g],y[g]&&b.leftTypeIsMoreGeneral(s,y[g],c)&&(s=y[g].type==="ParameterType"?y[g].expression:y[g]),w.push(b.createParamType(h[g],s))}f=b.createFunctionType(w,H,C);y=c.newFleetingObject();e&&!j.isBefore(c.offset,a.range)&&c.addVariable(e,a.extras.target,y,p,d.range);c.initFunctionType(f,a,y,C?H.name:void 0);C&&c.addOrSetGlobalVariable(e,y,p,d.range);a.extras.inferredTypeObj=y;c.addVariable("arguments",a.extras.target,b.createNameType("Arguments"),
a.range);if(f=a.extras.appliesTo)if(f=f.extras.target)f=c.scope(f),b.isPrototypeName(f)&&(f=b.extractReturnType(f)),c.addVariable("this",a.extras.target,b.createNameType(f),p,d.range);for(g=0;g<h.length;g++)c.addVariable(h[g],a.extras.target,w[g].expression,a.params[g].range);break;case "VariableDeclarator":if(a.id.name){if(!a.id.extras)a.id.extras={};a.id.extras.isLHS=a.id.extras.isDecl=!0;if(a.init&&!a.init.extras)a.init.extras={};if(a.init&&a.init.type==="FunctionExpression")a.init.extras.fname=
a.id.name,a.init.extras.cname=c.getQualifiedName()+a.id.name,a.init.extras.fnameRange=a.id.range;else if(d=m(a,c.comments),f=b.parseJSDocComment(d),p=f.type&&b.convertJsDocType(f.type,c),a.extras.docRange=d.range,p)a.extras.inferredTypeObj=p,a.extras.jsdocType=p,c.addVariable(a.id.name,a.extras.target,p,a.id.range,d.range)}c.pushName(a.id.name);break;case "AssignmentExpression":h=o(a.left);e=c.getQualifiedName()+q(a.left);if(h&&(h.type==="Identifier"||h.type==="Literal")){if(!h.extras)h.extras={};
if(a.right.type==="FunctionExpression"){if(!a.right.extras)a.right.extras={};a.right.extras.appliesTo=h;a.right.extras.fname=h.name;a.right.extras.cname=e;a.right.extras.fnameRange=h.range;if(!a.left.extras)a.left.extras={}}d=m(a,c.comments);f=b.parseJSDocComment(d);p=f.type&&b.convertJsDocType(f.type,c);a.extras.docRange=d.range;if(p)a.extras.inferredTypeObj=p,a.extras.jsdocType=p,c.addVariable(h.name,a.extras.target,p,h.range,d.range)}c.pushName(e);break;case "CatchClause":a.extras.inferredTypeObj=
c.newScope();if(a.param){if(!a.param.extras)a.param.extras={};d=b.createNameType("Error");a.param.extras.inferredTypeObj=d;c.addVariable(a.param.name,a.extras.target,d,a.param.range)}break;case "MemberExpression":if(a.property&&(!a.computed||a.computed&&a.property.type==="Literal"&&typeof a.property.value==="string")){if(!a.property.extras)a.property.extras={};a.property.extras.target=a.object}break;case "CallExpression":if(a.callee.name==="define"||a.callee.name==="require"){if(d=a.arguments,d.length>
1&&d[d.length-1].type==="FunctionExpression"&&d[d.length-2].type==="ArrayExpression"){if(!d[d.length-1].extras)d[d.length-1].extras={};d[d.length-1].extras.amdDefn=a}}else if((h=o(a.callee))&&h.type==="Identifier")h.extras=h.extras||{},h.extras.callArgs=a.arguments}if(a===c.defer)a.extras.associatedComment=m(a,c.comments),a.extras.inferredTypeObj=a.extras.inferredTypeObj||b.OBJECT_TYPE,a.extras.scope=c.scope(a.extras.target),a.body.extras.stop=!0;return!0}function w(a){if(!a)return null;var b,d;switch(a.type){case "BlockStatement":return a.body&&
a.body.length>0?(b=a.body[a.body.length-1],b.type==="ReturnStatement"?b:w(b)):null;case "WhileStatement":case "DoWhileStatement":case "ForStatement":case "ForInStatement":case "CatchClause":return w(a.body);case "IfStatement":return(b=w(a.alternate))||(b=w(a.consequent)),b;case "TryStatement":b=w(a.finalizer);var e=a.handlers;if(!b&&e)for(d=e.length-1;d>=0;d--)if(b=w(e[d]))break;b||(b=w(a.block));return b;case "SwitchStatement":if(a=a.cases)for(d=a.length-1;d>=0;d--)if(b=w(a[d]))break;return b;case "SwitchCase":return a.consequent&&
a.consequent.length>0?(b=a.consequent[a.consequent.length-1],b.type==="ReturnStatement"?b:w(b)):null;case "ReturnStatement":return a;default:return null}}function t(a,c){var d,e,g,m;switch(a.type){case "Program":if(c.defer)c.comments=c.deferredComments,d=c.defer,c.defer=null,c.targetTypeName=null,c.pushScope(d.extras.scope),h.visit(d.body,c,M,t),c.popScope();c.storeTarget();throw c.targetTypeName;case "BlockStatement":case "CatchClause":j.inRange(c.offset,a.range)&&c.storeTarget();c.popScope();break;
case "MemberExpression":j.afterDot(c.offset,a,c.contents)&&c.storeTarget(c.scope(a.object));a.extras.inferredTypeObj=b.isArrayType(a.object.extras.inferredTypeObj)&&a.computed?b.extractArrayParameterType(a.object.extras.inferredTypeObj):a.computed&&a.property&&a.property.type!=="Literal"?b.OBJECT_TYPE:a.property?a.property.extras.inferredTypeObj:a.object.extras.inferredTypeObj;break;case "CallExpression":a:{if((c.indexer||c.nodeJSModule)&&a.type==="CallExpression"&&a.callee.type==="Identifier"&&a.callee.name===
"require"&&a.arguments.length===1)if(d=a.arguments[0],d.type==="Literal"&&typeof d.value==="string")if(c.nodeJSModule){d=d.value;d.indexOf(".")!==-1||d.indexOf("/")!==-1?d=null:(d=b.ensureTypeObject(d),d=c.findType(d)?d:null);break a}else if(d=c.indexer.retrieveSummary(d.value)){typeof d.provided==="string"?e=g=d.provided:(e=g=c.newScope(),c.popScope());c.mergeSummary(d,e);d=b.ensureTypeObject(g);break a}d=void 0}d||(d=b.extractReturnType(c.getFnType(a.callee)));a.extras.inferredTypeObj=d;break;case "NewExpression":a.extras.inferredTypeObj=
c.getNewType(a.callee);break;case "ObjectExpression":m=a.properties;for(g=0;g<m.length;g++)if(m[g].hasOwnProperty("key")&&(d=m[g].key.name)){var q=null;if(d===m[g].value.name&&(e=c.lookupTypeObj(m[g].value.name,null,!0))&&e.range&&b.isFunctionOrConstructor(e.typeObj))q=e.range;if(!q)q=m[g].key.range;e=m[g].key.extras.jsdocType||m[g].value.extras.inferredTypeObj;c.addVariable(d,a,e,q,m[g].key.extras.associatedComment.range);j.inRange(c.offset-1,m[g].key.range)&&c.storeTarget(c.scope(a))}for(g=0;g<
m.length;g++)if(m[g].hasOwnProperty("key"))(d=m[g].key.name)&&m[g].value.type==="FunctionExpression"&&c.updateObjLitFunctionType(a,d,m[g].value);a.extras.fname&&c.popName();c.popScope();break;case "LogicalExpression":case "BinaryExpression":switch(a.operator){case "+":a.extras.inferredTypeObj=a.left.extras.inferredTypeObj.name==="String"||a.right.extras.inferredTypeObj.name==="String"?b.STRING_TYPE:b.NUMBER_TYPE;break;case "-":case "/":case "*":case "%":case "&":case "|":case "^":case "<<":case ">>":case ">>>":a.extras.inferredTypeObj=
b.NUMBER_TYPE;break;case "&&":case "||":a.extras.inferredTypeObj=a.left.extras.inferredTypeObj;break;case "!==":case "!=":case "===":case "==":case "<":case "<=":case ">":case ">=":a.extras.inferredTypeObj=b.BOOLEAN_TYPE;break;default:a.extras.inferredTypeObj=b.OBJECT_TYPE}break;case "UpdateExpression":case "UnaryExpression":a.extras.inferredTypeObj=a.operator==="!"?b.BOOLEAN_TYPE:b.NUMBER_TYPE;break;case "FunctionDeclaration":case "FunctionExpression":c.popScope();if(a.body)if(a.body.extras.isConstructor)d=
a.id?a.id.range:a.extras.fnameRange,c.addOrSetVariable(b.extractReturnType(a.extras.inferredTypeObj),a.extras.target,a.extras.inferredTypeObj,d);else{a.extras.jsdocReturn||(g=w(a.body),c.updateReturnType(a.extras.inferredTypeObj,g&&g.extras&&g.extras.inferredTypeObj?g.extras.inferredTypeObj:b.UNDEFINED_TYPE));if(a.id)e=a.id.name,d=a.id.range;else if(a.extras.appliesTo)e=a.extras.fname,d=a.extras.fnameRange;e&&c.addOrSetVariable(e,a.extras.target,a.extras.inferredTypeObj,d)}break;case "VariableDeclarator":e=
a.init?a.init.extras.inferredTypeObj:c.newFleetingObject();a.id.extras.inferredTypeObj=e;if(!a.extras.jsdocType)a.extras.inferredTypeObj=e,c.addVariable(a.id.name,a.extras.target,e,a.id.range,a.extras.docRange);j.inRange(c.offset-1,a.id.range)&&c.storeTarget(c.scope(a.id.extras.target));c.popName();break;case "Property":a.extras.inferredTypeObj=a.key.extras.jsdocType?a.key.extras.jsdocType:a.key.extras.inferredTypeObj=a.value.extras.inferredTypeObj;break;case "AssignmentExpression":e=a.extras.jsdocType?
a.extras.jsdocType:a.operator==="="?a.right.extras.inferredTypeObj:a.operator==="+="&&a.left.extras.inferredTypeObj.name==="String"?b.STRING_TYPE:b.NUMBER_TYPE;a.extras.inferredTypeObj=e;if((g=o(a.left))&&(g.type==="Identifier"||g.type==="Literal"))d=g.name?g.name:g.value,g.extras.inferredTypeObj=e,c.addOrSetVariable(d,g.extras.target,e,g.range,a.extras.docRange),j.inRange(c.offset-1,g.range)&&c.storeTarget(c.scope(g.extras.target));else if(a.left.computed&&(g=o(a.left.object))&&!(g.type==="Identifier"&&
g.name==="prototype"))d=b.parameterizeArray(e),a.left.extras.inferredTypeObj=e,a.left.object.extras.inferredTypeObj=d,c.addOrSetVariable(g.name,g.extras.target,d,g.range,a.extras.docRange);c.popName();break;case "Identifier":d=a.name;if((e=c.lookupTypeObj(d,a.extras.target))&&!a.extras.isDecl){a.extras.inferredTypeObj=e;j.inRange(c.offset,a.range,!0)&&c.storeTarget(c.scope(a.extras.target));if(a.extras.callArgs&&e.type==="FunctionType"){m=e.params;var q=a.extras.callArgs,f=Math.min(q.length||0,m.length||
0);for(g=0;g<f;g++)q[g].extras=q[g].extras||{},q[g].extras.paramTypeObj=m[g].type==="ParameterType"?m[g].expression:m[g]}if(a.extras.paramTypeObj&&b.leftTypeIsMoreGeneral(e,a.extras.paramTypeObj,c))a.extras.inferredTypeObj=e=a.extras.paramTypeObj,c.addOrSetVariable(d,a.extras.target,e)}else if(!a.extras.isLHS)!j.inRange(c.offset,a.range,!0)&&y[d]!==!0?a.extras.target?c.addVariable(d,a.extras.target,c.newFleetingObject(),a.range):a.extras.inferredTypeObj=c.addOrSetGlobalVariable(d,null,a.range).typeObj:
c.storeTarget(c.scope(a.extras.target));break;case "ThisExpression":a.extras.inferredTypeObj=c.lookupTypeObj("this");j.inRange(c.offset-1,a.range)&&c.storeTarget(c.scope());break;case "ReturnStatement":if(a.argument)a.extras.inferredTypeObj=a.argument.extras.inferredTypeObj;break;case "Literal":a.extras.target&&typeof a.value==="string"?(d=a.value,e=c.lookupTypeObj(d,a.extras.target),a.extras.inferredTypeObj=e):a.extras.target&&typeof a.value==="number"?a.extras.inferredTypeObj=b.NUMBER_TYPE:(d=typeof a.value,
a.extras.inferredTypeObj=b.createNameType(d[0].toUpperCase()+d.substring(1,d.length)));break;case "ConditionalExpression":if(d=a.consequent?a.consequent:a.alternate)a.extras.inferredTypeObj=d.extras.inferredTypeObj;break;case "ArrayExpression":if(a.elements)for(g=0;g<a.elements.length;g++)if(a.elements[g])a.extras.inferredTypeObj=b.parameterizeArray(a.elements[g].extras.inferredTypeObj)}if(!a.extras.inferredTypeObj)a.extras.inferredTypeObj=b.OBJECT_TYPE}var y={"break":!0,"case":!0,"catch":!0,"continue":!0,
"debugger":!0,"default":!0,"delete":!0,"do":!0,"else":!0,"finally":!0,"for":!0,"function":!0,"if":!0,"in":!0,"instanceof":!0,"new":!0,"return":!0,"switch":!0,"this":!0,"throw":!0,"try":!0,"typeof":!0,"var":!0,"void":!0,"while":!0,"with":!0},e=Array.isArray;e||(e=function(a){return Object.prototype.toString.call(a)==="[object Array]"});return{inferTypes:function(a,b,d){var j,g;if(d&&e(d.global))for(j=0;j<d.global.length;j++)g=d.global[j],b.lookupTypeObj(g)||b.addOrSetVariable(g);if(g=b.comments)for(j=
0;j<g.length;j++)if(d=g[j].range,g[j].type==="Block"&&g[j].value.substring(0,6)==="global"){j=g[j].value.split(/\s+/);for(var o=1;o<j.length;o++)j[o].length>0&&(g=j[o].indexOf(":"),g=g>=0?j[o].substring(0,g).trim():j[o].trim(),b.lookupTypeObj(g)||b.addOrSetVariable(g,null,null,d));break}if(b.indexer){var d=b.indexer.retrieveGlobalSummaries(),m;for(m in d)d.hasOwnProperty(m)&&b.mergeSummary(d[m],b.globalTypeName())}m=[];for(d=0;d<b.comments.length;d++)b.comments[d].value.charAt(0)==="*"&&m.push(b.comments[d]);
b.comments=m;try{h.visit(a,b,M,t)}catch(f){if(typeof f!=="string")throw f;return f}throw Error("The visit function should always end with a throwable");}}});
(function(h){var b,j,o,q,m,M,w,t,y,e,a,c,d,l,g,R,H,f,p,C,ca,ya,n,s,O,L,ba,ra,ka,pa,la,eb,xb,yb,Ea,na,sa,ta,ja,za,F,Oa,ua,K,W,Fa,Aa,U,ma,$,da;function Ka(a,b){if(!a)throw Error("ASSERT: "+b);}function V(a,b){return x.slice(a,b)}function z(a){return"0123456789".indexOf(a)>=0}function B(a){return"01234567".indexOf(a)>=0}function va(a){return a===" "||a==="\t"||a==="\u000b"||a==="\u000c"||a==="\u00a0"||a.charCodeAt(0)>=5760&&"\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\ufeff".indexOf(a)>=
0}function G(a){return a==="\n"||a==="\r"||a==="\u2028"||a==="\u2029"}function S(a){return a==="$"||a==="_"||a==="\\"||a>="a"&&a<="z"||a>="A"&&a<="Z"||a.charCodeAt(0)>=128&&w.test(a)}function v(a){return a==="$"||a==="_"||a==="\\"||a>="a"&&a<="z"||a>="A"&&a<="Z"||a>="0"&&a<="9"||a.charCodeAt(0)>=128&&t.test(a)}function Z(a){switch(a){case "class":case "enum":case "export":case "extends":case "import":case "super":return!0}return!1}function Ja(a){switch(a){case "implements":case "interface":case "package":case "private":case "protected":case "public":case "static":case "yield":case "let":return!0}return!1}
function ga(a){return a==="eval"||a==="arguments"}function Cb(a){var b=!1;switch(a.length){case 2:b=a==="if"||a==="in"||a==="do";break;case 3:b=a==="var"||a==="for"||a==="new"||a==="try";break;case 4:b=a==="this"||a==="else"||a==="case"||a==="void"||a==="with";break;case 5:b=a==="while"||a==="break"||a==="catch"||a==="throw";break;case 6:b=a==="return"||a==="typeof"||a==="delete"||a==="switch";break;case 7:b=a==="default"||a==="finally";break;case 8:b=a==="function"||a==="continue"||a==="debugger";
break;case 10:b=a==="instanceof"}if(b)return!0;switch(a){case "const":return!0;case "yield":case "let":return!0}return Q&&Ja(a)?!0:Z(a)}function P(){return x[i++]}function wa(){var a,b,c;for(c=b=!1;i<I;)if(a=x[i],c)a=P(),G(a)&&(c=!1,a==="\r"&&x[i]==="\n"&&++i,++J,N=i);else if(b)G(a)?(a==="\r"&&x[i+1]==="\n"&&++i,++J,++i,N=i,i>=I&&A({},y,"ILLEGAL")):(a=P(),i>=I&&A({},y,"ILLEGAL"),a==="*"&&(a=x[i],a==="/"&&(++i,b=!1)));else if(a==="/")if(a=x[i+1],a==="/")i+=2,c=!0;else if(a==="*")i+=2,b=!0,i>=I&&A({},
y,"ILLEGAL");else break;else if(va(a))++i;else if(G(a))++i,a==="\r"&&x[i]==="\n"&&++i,++J,N=i;else break}function fb(a){var b,c,d=0;b=a==="u"?4:2;for(a=0;a<b;++a)if(i<I&&"0123456789abcdefABCDEF".indexOf(x[i])>=0)c=P(),d=d*16+"0123456789abcdef".indexOf(c.toLowerCase());else return"";return String.fromCharCode(d)}function Db(){var a,b,c,d;a=x[i];if(S(a)){b=i;if(a==="\\"){++i;if(x[i]!=="u")return;++i;d=i;if(a=fb("u")){if(a==="\\"||!S(a))return;c=a}else i=d,c="u"}else c=P();for(;i<I;){a=x[i];if(!v(a))break;
if(a==="\\"){++i;if(x[i]!=="u")return;++i;d=i;if(a=fb("u")){if(a==="\\"||!v(a))return;c+=a}else i=d,c+="u"}else c+=P()}return c.length===1?{type:K,value:c,lineNumber:J,lineStart:N,range:[b,i]}:Cb(c)?{type:W,value:c,lineNumber:J,lineStart:N,range:[b,i]}:c==="null"?{type:Fa,value:c,lineNumber:J,lineStart:N,range:[b,i]}:c==="true"||c==="false"?{type:Aa,value:c,lineNumber:J,lineStart:N,range:[b,i]}:{type:K,value:c,lineNumber:J,lineStart:N,range:[b,i]}}}function Eb(){var a=i,b=x[i],c,d,e;if(b===";"||b===
"{"||b==="}")return++i,{type:U,value:b,lineNumber:J,lineStart:N,range:[a,i]};if(b===","||b==="("||b===")")return++i,{type:U,value:b,lineNumber:J,lineStart:N,range:[a,i]};c=x[i+1];if(b==="."&&!z(c))return{type:U,value:P(),lineNumber:J,lineStart:N,range:[a,i]};d=x[i+2];e=x[i+3];if(b===">"&&c===">"&&d===">"&&e==="=")return i+=4,{type:U,value:">>>=",lineNumber:J,lineStart:N,range:[a,i]};if(b==="="&&c==="="&&d==="=")return i+=3,{type:U,value:"===",lineNumber:J,lineStart:N,range:[a,i]};if(b==="!"&&c===
"="&&d==="=")return i+=3,{type:U,value:"!==",lineNumber:J,lineStart:N,range:[a,i]};if(b===">"&&c===">"&&d===">")return i+=3,{type:U,value:">>>",lineNumber:J,lineStart:N,range:[a,i]};if(b==="<"&&c==="<"&&d==="=")return i+=3,{type:U,value:"<<=",lineNumber:J,lineStart:N,range:[a,i]};if(b===">"&&c===">"&&d==="=")return i+=3,{type:U,value:">>=",lineNumber:J,lineStart:N,range:[a,i]};if(c==="="&&"<>=!+-*%&|^/".indexOf(b)>=0)return i+=2,{type:U,value:b+c,lineNumber:J,lineStart:N,range:[a,i]};if(b===c&&"+-<>&|".indexOf(b)>=
0&&"+-<>&|".indexOf(c)>=0)return i+=2,{type:U,value:b+c,lineNumber:J,lineStart:N,range:[a,i]};if("[]<>+-*%&|^!~?:=/".indexOf(b)>=0)return{type:U,value:P(),lineNumber:J,lineStart:N,range:[a,i]}}function Fb(){var a,b,c;c=x[i];Ka(z(c)||c===".","Numeric literal must start with a decimal digit or a decimal point");b=i;a="";if(c!=="."){a=P();c=x[i];if(a==="0"){if(c==="x"||c==="X"){for(a+=P();i<I;){c=x[i];if(!("0123456789abcdefABCDEF".indexOf(c)>=0))break;a+=P()}a.length<=2&&A({},y,"ILLEGAL");i<I&&(c=x[i],
S(c)&&A({},y,"ILLEGAL"));return{type:ma,value:parseInt(a,16),lineNumber:J,lineStart:N,range:[b,i]}}else if(B(c)){for(a+=P();i<I;){c=x[i];if(!B(c))break;a+=P()}i<I&&(c=x[i],(S(c)||z(c))&&A({},y,"ILLEGAL"));return{type:ma,value:parseInt(a,8),octal:!0,lineNumber:J,lineStart:N,range:[b,i]}}z(c)&&A({},y,"ILLEGAL")}for(;i<I;){c=x[i];if(!z(c))break;a+=P()}}if(c===".")for(a+=P();i<I;){c=x[i];if(!z(c))break;a+=P()}if(c==="e"||c==="E"){a+=P();c=x[i];if(c==="+"||c==="-")a+=P();c=x[i];if(z(c))for(a+=P();i<I;){c=
x[i];if(!z(c))break;a+=P()}else A({},y,"ILLEGAL")}i<I&&(c=x[i],S(c)&&A({},y,"ILLEGAL"));return{type:ma,value:parseFloat(a),lineNumber:J,lineStart:N,range:[b,i]}}function gb(){var b="",c,d,f,n,g;f=!1;var s;ea=null;wa();d=i;c=x[i];Ka(c==="/","Regular expression literal must start with a slash");for(b=P();i<I;)if(c=P(),b+=c,f)c==="]"&&(f=!1);else if(c==="\\")c=P(),G(c)&&A({},e),b+=c;else if(c==="/")break;else c==="["?f=!0:G(c)&&A({},e);b.length===1&&A({},e);f=b.substr(1,b.length-2);for(n="";i<I;){c=
x[i];if(!v(c))break;++i;if(c==="\\"&&i<I)if(c=x[i],c==="u")if(++i,s=i,c=fb("u")){n+=c;for(b+="\\u";s<i;++s)b+=x[s]}else i=s,n+="u",b+="\\u";else b+="\\";else n+=c,b+=c}try{g=RegExp(f,n)}catch(k){A({},a)}return{literal:b,value:g,range:[d,i]}}function Pa(){var a;wa();if(i>=I)return{type:da,lineNumber:J,lineStart:N,range:[i,i]};a=Eb();if(typeof a!=="undefined")return a;a=x[i];if(a==="'"||a==='"'){a="";var b,c,d,e,f,n=!1;b=x[i];Ka(b==="'"||b==='"',"String literal must starts with a quote");c=i;for(++i;i<
I;)if(d=P(),d===b){b="";break}else if(d==="\\")if(d=P(),G(d))++J,d==="\r"&&x[i]==="\n"&&++i;else switch(d){case "n":a+="\n";break;case "r":a+="\r";break;case "t":a+="\t";break;case "u":case "x":f=i;(e=fb(d))?a+=e:(i=f,a+=d);break;case "b":a+="\u0008";break;case "f":a+="\u000c";break;case "v":a+="\u000b";break;default:B(d)?(e="01234567".indexOf(d),e!==0&&(n=!0),i<I&&B(x[i])&&(n=!0,e=e*8+"01234567".indexOf(P()),"0123".indexOf(d)>=0&&i<I&&B(x[i])&&(e=e*8+"01234567".indexOf(P()))),a+=String.fromCharCode(e)):
a+=d}else if(G(d))break;else a+=d;b!==""&&A({},y,"ILLEGAL");return{type:$,value:a,octal:n,lineNumber:J,lineStart:N,range:[c,i]}}if(a==="."||z(a))return Fb();a=Db();if(typeof a!=="undefined")return a;A({},y,"ILLEGAL")}function D(){var a;if(ea)return i=ea.range[1],J=ea.lineNumber,N=ea.lineStart,a=ea,ea=null,a;ea=null;return Pa()}function aa(){var a,b,c;if(ea!==null)return ea;a=i;b=J;c=N;ea=Pa();i=a;J=b;N=c;return ea}function Qa(){var a,b,c,d;a=i;b=J;c=N;wa();d=J!==b;i=a;J=b;N=c;return d}function A(a,
b){var c,d=Array.prototype.slice.call(arguments,2);c=b.replace(/%(\d)/g,function(a,b){return d[b]||""});typeof a.lineNumber==="number"?(c=Error("Line "+a.lineNumber+": "+c),c.index=a.range[0],c.lineNumber=a.lineNumber,c.column=a.range[0]-N+1):(c=Error("Line "+J+": "+c),c.index=i,c.lineNumber=J,c.column=i-N+1);throw c;}function Ga(){try{A.apply(null,arguments)}catch(a){if(k.errors)k.errors.push(a);else throw a;}}function xa(a){a.type===da&&A(a,c);a.type===ma&&A(a,d);a.type===$&&A(a,l);a.type===K&&
A(a,g);a.type===W&&(Z(a.value)?A(a,R):Q&&Ja(a.value)&&A(a,H),A(a,y,a.value));A(a,y,a.value)}function E(a){var b=D();(b.type!==U||b.value!==a)&&xa(b)}function X(a){var b=D();(b.type!==W||b.value!==a)&&xa(b)}function u(a){var b=aa();return b.type===U&&b.value===a}function Y(a){var b=aa();return b.type===W&&b.value===a}function ha(){var a;if(x[i]===";")D();else if(a=J,wa(),J===a)if(u(";"))D();else if(a=aa(),a.type!==da&&!u("}")){if(k.errors){for(var b=i;b>0&&!(x[b]===";"||x[b]==="\n");)b--;if(!(b<=k.statementStart)){var c=
!1;k.lastRewindLocation?c=!0:k.lastRewindLocation!==b&&(c=!0);if(c)i=b,ea=null,k.lastRewindLocation=i}}xa(a)}}function zb(a){switch(a.type){case "AssignmentExpression":case "BinaryExpression":case "ConditionalExpression":case "LogicalExpression":case "SequenceExpression":case "UnaryExpression":case "UpdateExpression":return!1}return!0}function Ra(a,b){var c,d;c=Q;d=La();b&&Q&&ga(a[0].name)&&A(b,f);Q=c;return{type:r.FunctionExpression,id:null,params:a,body:d}}function Ha(){var a=D();return a.type===
$||a.type===ma?(Q&&a.octal&&A(a,p),Ba(a)):{type:r.Identifier,name:a.value}}function hb(){var a,b,c;a=aa();if(a.type===K)return b=Ha(),a.value==="get"&&!u(":")?(b=Ha(),E("("),E(")"),{type:r.Property,key:b,value:Ra([]),kind:"get"}):a.value==="set"&&!u(":")?(b=Ha(),E("("),a=aa(),a.type!==K&&xa(D()),c=[oa()],E(")"),{type:r.Property,key:b,value:Ra(c,a),kind:"set"}):(E(":"),{type:r.Property,key:b,value:ia(),kind:"init"});else if(a.type===da||a.type===U)xa(a);else return b=Ha(),E(":"),{type:r.Property,key:b,
value:ia(),kind:"init"}}function Sa(){var a;a=aa();var c=a.type;if(c===K)return{type:r.Identifier,name:D().value};if(c===$||c===ma)return Q&&a.octal&&Ga(a,p),Ba(D());if(c===W){if(Y("this"))return D(),{type:r.ThisExpression};if(Y("function"))return ib()}if(c===Aa)return D(),a.value=a.value==="true",Ba(a);if(c===Fa)return D(),a.value=null,Ba(a);if(u("[")){a=[];for(E("[");!u("]");)u(",")?(D(),a.push(void 0)):(a.push(ia()),u("]")||E(","));E("]");return{type:r.ArrayExpression,elements:a}}if(u("{")){a=
[];var d,e,f={},n=String;for(E("{");!u("}");)c=hb(),d=c.key.type===r.Identifier?c.key.name:n(c.key.value),e=c.kind==="init"?F:c.kind==="get"?Oa:ua,Object.prototype.hasOwnProperty.call(f,d)?(f[d]===F?Q&&e===F?Ga({},C):e!==F&&A({},ca):e===F?A({},ca):f[d]&e&&A({},ya),f[d]|=e):f[d]=e,a.push(c),u("}")||E(",");E("}");return{type:r.ObjectExpression,properties:a}}return u("(")?(D(),b=a=T(),E(")"),a):u("/")||u("/=")?Ba(gb()):xa(D())}function Ma(a){for(var b=k.errors.length,c=0;c<b;c++){var d=k.errors[c];if(d.index===
a.index&&d.message===a.message)return}k.errors.push(a)}function Ab(){var a=[];E("(");if(!u(")"))for(;i<I;){a.push(ia());if(u(")"))break;try{E(",")}catch(b){if(k.errors){Ma(b);break}else throw b;}}try{E(")")}catch(c){if(k.errors)Ma(c);else throw c;}return a}function Na(){var a,b,c=D();if(!(c.type===K||c.type===W||c.type===Aa||c.type===Fa)){if(k.errors&&c.value&&c.type===U){a=i-c.value.length-1;var d=!1;b=!1;for(var e;!d;){e=x[a];if(e==="/")if(a>2&&x[a-1]==="*"){a-=2;for(var f=!1;!f;)e=x[a],e==="*"?
a>0&&x[a-1]==="/"&&(f=!0):e==="\n"&&(b=!0),a===0&&(f=!0),a--}else d=!0;else e==="\n"?b=!0:va(e)||(d=!0);d||a--}d=x[a];!(d==="."&&b&&c.value==="(")&&d==="."&&(i=a+1,ea=null)}xa(c)}return{type:r.Identifier,name:c.value}}function Ta(a){return{type:r.MemberExpression,computed:!1,object:a,property:Na()}}function Ua(a){var b;E("[");b=T();a={type:r.MemberExpression,computed:!0,object:a,property:b};E("]");return a}function jb(a){return{type:r.CallExpression,callee:a,arguments:Ab()}}function Va(){var a;X("new");
a=r.NewExpression;var b;for(b=Y("new")?Va():Sa();i<I;)if(u("."))D(),b=Ta(b);else if(u("["))b=Ua(b);else break;a={type:a,callee:b,arguments:[]};u("(")&&(a.arguments=Ab());return a}function kb(){var a;for(a=Y("new")?Va():Sa();i<I;)if(u("."))D(),a=Ta(a);else if(u("["))a=Ua(a);else if(u("("))a=jb(a);else break;if((u("++")||u("--"))&&!Qa())Q&&a.type===r.Identifier&&ga(a.name)&&A({},n),a={type:r.UpdateExpression,operator:D().value,argument:a,prefix:!1};return a}function Ca(){var a,b;if(u("++")||u("--"))return a=
D(),b=Ca(),Q&&b.type===r.Identifier&&ga(b.name)&&A({},s),b={type:r.UpdateExpression,operator:a.value,argument:b,prefix:!0};if(u("+")||u("-")||u("~")||u("!"))return b={type:r.UnaryExpression,operator:D().value,argument:Ca()};return Y("delete")||Y("void")||Y("typeof")?(b={type:r.UnaryExpression,operator:D().value,argument:Ca()},Q&&b.operator==="delete"&&b.argument.type===r.Identifier&&Ga({},O),b):kb()}function Wa(){for(var a=Ca();u("*")||u("/")||u("%");)a={type:r.BinaryExpression,operator:D().value,
left:a,right:Ca()};return a}function Xa(){for(var a=Wa();u("+")||u("-");)a={type:r.BinaryExpression,operator:D().value,left:a,right:Wa()};return a}function lb(){for(var a=Xa();u("<<")||u(">>")||u(">>>");)a={type:r.BinaryExpression,operator:D().value,left:a,right:Xa()};return a}function Da(){var a,b;b=j;j=!0;a=lb();j=b;u("<")||u(">")||u("<=")||u(">=")?a={type:r.BinaryExpression,operator:D().value,left:a,right:Da()}:j&&Y("in")?(D(),a={type:r.BinaryExpression,operator:"in",left:a,right:Da()}):Y("instanceof")&&
(D(),a={type:r.BinaryExpression,operator:"instanceof",left:a,right:Da()});return a}function Ya(){for(var a=Da();u("==")||u("!=")||u("===")||u("!==");)a={type:r.BinaryExpression,operator:D().value,left:a,right:Da()};return a}function Za(){for(var a=Ya();u("&");)D(),a={type:r.BinaryExpression,operator:"&",left:a,right:Ya()};return a}function $a(){for(var a=Za();u("|");)D(),a={type:r.BinaryExpression,operator:"|",left:a,right:Za()};return a}function ab(){for(var a=$a();u("^");)D(),a={type:r.BinaryExpression,
operator:"^",left:a,right:$a()};return a}function bb(){for(var a=ab();u("&&");)D(),a={type:r.LogicalExpression,operator:"&&",left:a,right:ab()};return a}function mb(){for(var a=bb();u("||");)D(),a={type:r.LogicalExpression,operator:"||",left:a,right:bb()};return a}function nb(){var a,b,c;a=mb();u("?")&&(D(),b=j,j=!0,c=ia(),j=b,E(":"),a={type:r.ConditionalExpression,test:a,consequent:c,alternate:ia()});return a}function ia(){var a;a=nb();var c=aa(),d=c.value;if(c.type!==U?0:d==="="||d==="*="||d===
"/="||d==="%="||d==="+="||d==="-="||d==="<<="||d===">>="||d===">>>="||d==="&="||d==="^="||d==="|=")b!==a&&!zb(a)&&A({},L),Q&&a.type===r.Identifier&&ga(a.name)&&A({},ba),a={type:r.AssignmentExpression,operator:D().value,left:a,right:ia()};return a}function T(){var a=ia();if(u(","))for(a={type:r.SequenceExpression,expressions:[a]};i<I;){if(!u(","))break;D();a.expressions.push(ia())}return a}function Ia(){E("{");for(var a=[],b;i<I;){if(u("}"))break;b=cb();if(typeof b==="undefined")break;a.push(b)}Bb();
return{type:r.BlockStatement,body:a}}function oa(){var a=D();a.type!==K&&xa(a);return{type:r.Identifier,name:a.value}}function ob(a){var b=oa(),c=null;Q&&ga(b.name)&&Ga({},ra);a==="const"?(E("="),c=ia()):u("=")&&(D(),c=ia());return{type:r.VariableDeclarator,id:b,init:c}}function ub(a){for(var b=[];i<I;){b.push(ob(a));if(!u(","))break;D()}return b}function pb(a){var b;X(a);b=ub(a);ha();return{type:r.VariableDeclaration,declarations:b,kind:a}}function vb(){try{E(")")}catch(a){if(k.errors){if(Ma(a),
x[a.index]==="{")i=a.index,ea=null}else throw a;}}function qb(){var a=D();return{type:r.VariableDeclaration,declarations:ub(),kind:a.value}}function Gb(){var a=null;X("continue");if(x[i]===";")return D(),o||A({},pa),{type:r.ContinueStatement,label:null};if(Qa())return o||A({},pa),{type:r.ContinueStatement,label:null};aa().type===K&&(a=oa(),Object.prototype.hasOwnProperty.call(q,a.name)||A({},la,a.name));ha();a===null&&!o&&A({},pa);return{type:r.ContinueStatement,label:a}}function Hb(){var a=null;
X("break");if(x[i]===";")return D(),!o&&!m&&A({},eb),{type:r.BreakStatement,label:null};if(Qa())return!o&&!m&&A({},eb),{type:r.BreakStatement,label:null};aa().type===K&&(a=oa(),Object.prototype.hasOwnProperty.call(q,a.name)||A({},la,a.name));ha();a===null&&!o&&!m&&A({},eb);return{type:r.BreakStatement,label:a}}function Ib(){var a,b=null;X("return");M||Ga({},xb);if(x[i]===" "&&S(x[i+1]))return b=T(),ha(),{type:r.ReturnStatement,argument:b};if(Qa())return{type:r.ReturnStatement,argument:null};u(";")||
(a=aa(),!u("}")&&a.type!==da&&(b=T()));ha();return{type:r.ReturnStatement,argument:b}}function rb(){var a,b=[],c;Y("default")?(D(),a=null):(X("case"),a=T());for(E(":");i<I;){if(u("}")||Y("default")||Y("case"))break;c=fa();if(typeof c==="undefined")break;b.push(c)}return{type:r.SwitchCase,test:a,consequent:b}}function sb(){var a;X("catch");E("(");u(")")||(a=T(),Q&&a.type===r.Identifier&&ga(a.name)&&Ga({},na));E(")");return{type:r.CatchClause,param:a,guard:null,body:Ia()}}function fa(){var a=aa(),c,
d;a.type===da&&xa(a);if(a.type===U)switch(a.value){case ";":return E(";"),{type:r.EmptyStatement};case "{":return Ia();case "(":return c=T(),ha(),{type:r.ExpressionStatement,expression:c}}if(a.type===W)switch(a.value){case "break":return Hb();case "continue":return Gb();case "debugger":return X("debugger"),ha(),{type:r.DebuggerStatement};case "do":return X("do"),d=o,o=!0,c=fa(),o=d,X("while"),E("("),d=T(),E(")"),u(";")&&D(),{type:r.DoWhileStatement,body:c,test:d};case "for":var e,f,n,g,a=e=f=null;
X("for");E("(");u(";")?D():(Y("var")||Y("let")?(j=!1,a=qb(),j=!0,a.declarations.length===1&&Y("in")&&(D(),c=a,d=T(),a=null)):(j=!1,a=T(),j=!0,Y("in")&&(Y("in")&&b!==a&&!zb(a)&&A({},ka),D(),c=a,d=T(),a=null)),typeof c==="undefined"&&E(";"));typeof c==="undefined"&&(u(";")||(e=T()),E(";"),u(")")||(f=T()));vb();g=o;o=!0;n=fa();o=g;return typeof c==="undefined"?{type:r.ForStatement,init:a,test:e,update:f,body:n}:{type:r.ForInStatement,left:c,right:d,body:n,each:!1};case "function":return db();case "if":return X("if"),
E("("),c=T(),vb(),(d=fa())||(d=null),Y("else")?(D(),a=fa()):a=null,{type:r.IfStatement,test:c,consequent:d,alternate:a};case "return":return Ib();case "switch":X("switch");E("(");c=T();E(")");E("{");if(u("}"))D(),c={type:r.SwitchStatement,discriminant:c};else{d=[];a=m;for(m=!0;i<I;){if(u("}"))break;d.push(rb())}m=a;E("}");c={type:r.SwitchStatement,discriminant:c,cases:d}}return c;case "throw":return X("throw"),Qa()&&A({},Ea),c=T(),ha(),{type:r.ThrowStatement,argument:c};case "try":return d=[],a=null,
X("try"),c=Ia(),Y("catch")&&d.push(sb()),Y("finally")&&(D(),a=Ia()),d.length===0&&!a&&A({},sa),{type:r.TryStatement,block:c,handlers:d,finalizer:a};case "var":return X("var"),c=ub(),ha(),{type:r.VariableDeclaration,declarations:c,kind:"var"};case "while":return X("while"),E("("),c=T(),vb(),a=o,o=!0,d=fa(),o=a,{type:r.WhileStatement,test:c,body:d};case "with":return Q&&Ga({},yb),X("with"),E("("),c=T(),E(")"),d=fa(),{type:r.WithStatement,object:c,body:d}}if((c=T())&&c.type===r.Identifier&&u(":"))return D(),
Object.prototype.hasOwnProperty.call(q,c.name)&&A({},ta,"Label",c.name),q[c.name]=!0,d=fa(),delete q[c.name],{type:r.LabeledStatement,label:c,body:d};ha();return{type:r.ExpressionStatement,expression:c}}function Bb(){if(k.errors)try{E("}")}catch(a){Ma(a)}else E("}")}function La(){var a,b=[],c,d,e,f;for(E("{");i<I;){c=aa();if(c.type!==$)break;a=cb();b.push(a);if(a.expression.type!==r.Literal)break;a=V(c.range[0]+1,c.range[1]-1);a==="use strict"?(Q=!0,d&&A(d,p)):!d&&c.octal&&(d=c)}c=q;d=o;e=m;f=M;q=
{};m=o=!1;for(M=!0;i<I;){if(u("}"))break;a=cb();if(typeof a==="undefined")break;b.push(a)}Bb();q=c;o=d;m=e;M=f;return{type:r.BlockStatement,body:b}}function db(){var a,b,c=[],d,e,n,g;X("function");d=aa();a=oa();Q?ga(d.value)&&A(d,ja):ga(d.value)?(e=d,n=ja):Ja(d.value)&&(e=d,n=H);E("(");if(!u(")"))for(g={};i<I;){d=aa();b=oa();Q?(ga(d.value)&&A(d,f),Object.prototype.hasOwnProperty.call(g,d.value)&&A(d,za)):e||(ga(d.value)?(e=d,n=f):Ja(d.value)?(e=d,n=H):Object.prototype.hasOwnProperty.call(g,d.value)&&
(e=d,n=za));c.push(b);g[b.name]=!0;if(u(")"))break;E(",")}E(")");d=Q;b=La();Q&&e&&A(e,n);Q=d;return{type:r.FunctionDeclaration,id:a,params:c,body:b}}function ib(){var a,b=null,c,d,e,n=[],g;X("function");u("(")||(a=aa(),b=oa(),Q?ga(a.value)&&A(a,ja):ga(a.value)?(c=a,d=ja):Ja(a.value)&&(c=a,d=H));E("(");if(!u(")"))for(g={};i<I;){a=aa();e=oa();Q?(ga(a.value)&&A(a,f),Object.prototype.hasOwnProperty.call(g,a.value)&&A(a,za)):c||(ga(a.value)?(c=a,d=f):Ja(a.value)?(c=a,d=H):Object.prototype.hasOwnProperty.call(g,
a.value)&&(c=a,d=za));n.push(e);g[e.name]=!0;if(u(")"))break;E(",")}E(")");e=Q;a=La();Q&&c&&A(c,d);Q=e;return{type:r.FunctionExpression,id:b,params:n,body:a}}function cb(){var a=aa();if(a.type===W)switch(a.value){case "const":case "let":return pb(a.value);case "function":return db();default:return fa()}if(a.type!==da)return fa()}function tb(){Q=!1;for(var a=r.Program,b,c=[],d,e;i<I;){d=aa();if(d.type!==$)break;b=cb();c.push(b);if(b.expression.type!==r.Literal)break;b=V(d.range[0]+1,d.range[1]-1);
b==="use strict"?(Q=!0,e&&A(e,p)):!e&&d.octal&&(e=d)}for(;i<I;){b=cb();if(typeof b==="undefined")break;c.push(b)}return{type:a,body:c}}function wb(a,b,c,d){Ka(typeof a==="number","Comment must have valid position");k.comments.length>0&&k.comments[k.comments.length-1].range[1]>a||k.comments.push({range:[a,b],type:c,value:d})}function Jb(){var a,b,c,d,e;a="";for(e=d=!1;i<I;)if(b=x[i],e)b=P(),i>=I?(e=!1,a+=b,wb(c,i,"Line",a)):G(b)?(e=!1,wb(c,i,"Line",a),b==="\r"&&x[i]==="\n"&&++i,++J,N=i,a=""):a+=b;
else if(d)G(b)?(b==="\r"&&x[i+1]==="\n"?(++i,a+="\r\n"):a+=b,++J,++i,N=i,i>=I&&A({},y,"ILLEGAL")):(b=P(),i>=I&&A({},y,"ILLEGAL"),a+=b,b==="*"&&(b=x[i],b==="/"&&(a=a.substr(0,a.length-1),d=!1,++i,wb(c,i,"Block",a),a="")));else if(b==="/")if(b=x[i+1],b==="/")c=i,i+=2,e=!0;else if(b==="*")c=i,i+=2,d=!0,i>=I&&A({},y,"ILLEGAL");else break;else if(va(b))++i;else if(G(b))++i,b==="\r"&&x[i]==="\n"&&++i,++J,N=i;else break}function Kb(){var a=k.advance(),b,c;a.type!==da&&(b=[a.range[0],a.range[1]],c=V(a.range[0],
a.range[1]),k.tokens.push({type:qa[a.type],value:c,range:b}));return a}function Lb(){var a,b,c;wa();a=i;b=k.scanRegExp();k.tokens.length>0&&(c=k.tokens[k.tokens.length-1],c.range[0]===a&&c.type==="Punctuator"&&(c.value==="/"||c.value==="/=")&&k.tokens.pop());k.tokens.push({type:"RegularExpression",value:b.literal,range:[a,i]});return b}function Ba(a){return{type:r.Literal,value:a.value}}function Mb(a){return{type:r.Literal,value:a.value,raw:V(a.range[0],a.range[1])}}function Nb(a,b){return function(c){function d(a){return a.type===
r.LogicalExpression||a.type===r.BinaryExpression}function e(c){d(c.left)&&e(c.left);d(c.right)&&e(c.right);if(a&&typeof c.range==="undefined")c.range=[c.left.range[0],c.right.range[1]];if(b&&typeof c.loc==="undefined")c.loc={start:c.left.loc.start,end:c.right.loc.end}}return function(){var f,n,g;wa();n=[i,0];g={start:{line:J,column:i-N}};f=c.apply(null,arguments);if(typeof f!=="undefined"){if(a)n[1]=i,f.range=n;if(b)g.end={line:J,column:i-N},f.loc=g;d(f)&&e(f);if(f.type===r.MemberExpression&&(typeof f.object.range!==
"undefined"&&(f.range[0]=f.object.range[0]),typeof f.object.loc!=="undefined"))f.loc.start=f.object.loc.start;return f}}}}function Ob(){function a(b){return function(){try{return b.apply(null,arguments)}catch(a){return Ma(a),null}}}function b(a){return function(){k.statementStart=i;try{return a.apply(null,arguments)}catch(b){Ma(b)}}}var c;if(k.comments)k.skipComment=wa,wa=Jb;if(k.raw)k.createLiteral=Ba,Ba=Mb;if(k.range||k.loc||k.errors)c=Nb(k.range,k.loc),k.parseAdditiveExpression=Xa,k.parseAssignmentExpression=
ia,k.parseBitwiseANDExpression=Za,k.parseBitwiseORExpression=$a,k.parseBitwiseXORExpression=ab,k.parseBlock=Ia,k.parseFunctionSourceElements=La,k.parseCallMember=jb,k.parseCatchClause=sb,k.parseComputedMember=Ua,k.parseConditionalExpression=nb,k.parseConstLetDeclaration=pb,k.parseEqualityExpression=Ya,k.parseExpression=T,k.parseForVariableDeclaration=qb,k.parseFunctionDeclaration=db,k.parseFunctionExpression=ib,k.parseLogicalANDExpression=bb,k.parseLogicalORExpression=mb,k.parseMultiplicativeExpression=
Wa,k.parseNewExpression=Va,k.parseNonComputedMember=Ta,k.parseNonComputedProperty=Na,k.parseObjectProperty=hb,k.parseObjectPropertyKey=Ha,k.parsePostfixExpression=kb,k.parsePrimaryExpression=Sa,k.parseProgram=tb,k.parsePropertyFunction=Ra,k.parseRelationalExpression=Da,k.parseStatement=fa,k.parseShiftExpression=lb,k.parseSwitchCase=rb,k.parseUnaryExpression=Ca,k.parseVariableDeclaration=ob,k.parseVariableIdentifier=oa,k.consumeSemicolon=ha,Xa=c(k.parseAdditiveExpression),ia=c(k.parseAssignmentExpression),
Za=c(k.parseBitwiseANDExpression),$a=c(k.parseBitwiseORExpression),ab=c(k.parseBitwiseXORExpression),Ia=c(k.parseBlock),La=c(k.parseFunctionSourceElements),jb=c(k.parseCallMember),sb=c(k.parseCatchClause),Ua=c(k.parseComputedMember),nb=c(k.parseConditionalExpression),pb=c(k.parseConstLetDeclaration),Ya=c(k.parseEqualityExpression),T=c(k.parseExpression),qb=c(k.parseForVariableDeclaration),db=c(k.parseFunctionDeclaration),ib=c(k.parseFunctionExpression),bb=c(k.parseLogicalANDExpression),mb=c(k.parseLogicalORExpression),
Wa=c(k.parseMultiplicativeExpression),Va=c(k.parseNewExpression),Ta=c(k.parseNonComputedMember),Na=c(k.parseNonComputedProperty),hb=c(k.parseObjectProperty),Ha=c(k.parseObjectPropertyKey),kb=c(k.parsePostfixExpression),Sa=c(k.parsePrimaryExpression),tb=c(k.parseProgram),Ra=c(k.parsePropertyFunction),Da=c(k.parseRelationalExpression),fa=c(k.parseStatement),lb=c(k.parseShiftExpression),rb=c(k.parseSwitchCase),Ca=c(k.parseUnaryExpression),ob=c(k.parseVariableDeclaration),oa=c(k.parseVariableIdentifier);
k.errors&&(fa=b(fa),T=a(T),Na=a(Na),ha=a(ha));if(typeof k.tokens!=="undefined")k.advance=Pa,k.scanRegExp=gb,Pa=Kb,gb=Lb}var qa,r,x,Q,i,J,N,I,ea,k;Aa=1;da=2;K=3;W=4;Fa=5;ma=6;U=7;$=8;qa={};qa[Aa]="Boolean";qa[da]="<end>";qa[K]="Identifier";qa[W]="Keyword";qa[Fa]="Null";qa[ma]="Numeric";qa[U]="Punctuator";qa[$]="String";r={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",
CallExpression:"CallExpression",CatchClause:"CatchClause",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",
LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",
VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"};F=1;Oa=2;ua=4;y="Unexpected token %0";d="Unexpected number";l="Unexpected string";g="Unexpected identifier";R="Unexpected reserved word";c="Unexpected end of input";Ea="Illegal newline after throw";a="Invalid regular expression";e="Invalid regular expression: missing /";L="Invalid left-hand side in assignment";ka="Invalid left-hand side in for-in";sa="Missing catch or finally after try";la="Undefined label '%0'";
ta="%0 '%1' has already been declared";pa="Illegal continue statement";eb="Illegal break statement";xb="Illegal return statement";yb="Strict mode code may not include a with statement";na="Catch variable may not be eval or arguments in strict mode";ra="Variable name may not be eval or arguments in strict mode";f="Parameter name eval or arguments is not allowed in strict mode";za="Strict mode function may not have duplicate parameter names";ja="Function name may not be eval or arguments in strict mode";
p="Octal literals are not allowed in strict mode.";O="Delete of an unqualified identifier in strict mode.";C="Duplicate data property in object literal not allowed in strict mode";ca="Object literal may not have data and accessor property with the same name";ya="Object literal may not have multiple get/set accessors with the same name";ba="Assignment to eval or arguments is not allowed in strict mode";n="Postfix increment/decrement may not have eval or arguments operand in strict mode";s="Prefix increment/decrement may not have eval or arguments operand in strict mode";
H="Use of future reserved word in strict mode";w=RegExp("[\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05d0-\u05ea\u05f0-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u08a0\u08a2-\u08ac\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097f\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d\u0c58\u0c59\u0c60\u0c61\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d60\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1877\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191c\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19c1-\u19c7\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4b\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1ce9-\u1cec\u1cee-\u1cf1\u1cf5\u1cf6\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2e2f\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua697\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa80-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]");
t=RegExp("[\u00aa\u00b5\u00ba\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0300-\u0374\u0376\u0377\u037a-\u037d\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u0483-\u0487\u048a-\u0527\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u05d0-\u05ea\u05f0-\u05f2\u0610-\u061a\u0620-\u0669\u066e-\u06d3\u06d5-\u06dc\u06df-\u06e8\u06ea-\u06fc\u06ff\u0710-\u074a\u074d-\u07b1\u07c0-\u07f5\u07fa\u0800-\u082d\u0840-\u085b\u08a0\u08a2-\u08ac\u08e4-\u08fe\u0900-\u0963\u0966-\u096f\u0971-\u0977\u0979-\u097f\u0981-\u0983\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bc-\u09c4\u09c7\u09c8\u09cb-\u09ce\u09d7\u09dc\u09dd\u09df-\u09e3\u09e6-\u09f1\u0a01-\u0a03\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a59-\u0a5c\u0a5e\u0a66-\u0a75\u0a81-\u0a83\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abc-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ad0\u0ae0-\u0ae3\u0ae6-\u0aef\u0b01-\u0b03\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3c-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b56\u0b57\u0b5c\u0b5d\u0b5f-\u0b63\u0b66-\u0b6f\u0b71\u0b82\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd0\u0bd7\u0be6-\u0bef\u0c01-\u0c03\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c33\u0c35-\u0c39\u0c3d-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c58\u0c59\u0c60-\u0c63\u0c66-\u0c6f\u0c82\u0c83\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbc-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0cde\u0ce0-\u0ce3\u0ce6-\u0cef\u0cf1\u0cf2\u0d02\u0d03\u0d05-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d-\u0d44\u0d46-\u0d48\u0d4a-\u0d4e\u0d57\u0d60-\u0d63\u0d66-\u0d6f\u0d7a-\u0d7f\u0d82\u0d83\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0df2\u0df3\u0e01-\u0e3a\u0e40-\u0e4e\u0e50-\u0e59\u0e81\u0e82\u0e84\u0e87\u0e88\u0e8a\u0e8d\u0e94-\u0e97\u0e99-\u0e9f\u0ea1-\u0ea3\u0ea5\u0ea7\u0eaa\u0eab\u0ead-\u0eb9\u0ebb-\u0ebd\u0ec0-\u0ec4\u0ec6\u0ec8-\u0ecd\u0ed0-\u0ed9\u0edc-\u0edf\u0f00\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e-\u0f47\u0f49-\u0f6c\u0f71-\u0f84\u0f86-\u0f97\u0f99-\u0fbc\u0fc6\u1000-\u1049\u1050-\u109d\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u135d-\u135f\u1380-\u138f\u13a0-\u13f4\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f0\u1700-\u170c\u170e-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176c\u176e-\u1770\u1772\u1773\u1780-\u17d3\u17d7\u17dc\u17dd\u17e0-\u17e9\u180b-\u180d\u1810-\u1819\u1820-\u1877\u1880-\u18aa\u18b0-\u18f5\u1900-\u191c\u1920-\u192b\u1930-\u193b\u1946-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u19d0-\u19d9\u1a00-\u1a1b\u1a20-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1aa7\u1b00-\u1b4b\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1bf3\u1c00-\u1c37\u1c40-\u1c49\u1c4d-\u1c7d\u1cd0-\u1cd2\u1cd4-\u1cf6\u1d00-\u1de6\u1dfc-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u200c\u200d\u203f\u2040\u2054\u2071\u207f\u2090-\u209c\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2102\u2107\u210a-\u2113\u2115\u2119-\u211d\u2124\u2126\u2128\u212a-\u212d\u212f-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2c2e\u2c30-\u2c5e\u2c60-\u2ce4\u2ceb-\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d7f-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u2de0-\u2dff\u2e2f\u3005-\u3007\u3021-\u302f\u3031-\u3035\u3038-\u303c\u3041-\u3096\u3099\u309a\u309d-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312d\u3131-\u318e\u31a0-\u31ba\u31f0-\u31ff\u3400-\u4db5\u4e00-\u9fcc\ua000-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua62b\ua640-\ua66f\ua674-\ua67d\ua67f-\ua697\ua69f-\ua6f1\ua717-\ua71f\ua722-\ua788\ua78b-\ua78e\ua790-\ua793\ua7a0-\ua7aa\ua7f8-\ua827\ua840-\ua873\ua880-\ua8c4\ua8d0-\ua8d9\ua8e0-\ua8f7\ua8fb\ua900-\ua92d\ua930-\ua953\ua960-\ua97c\ua980-\ua9c0\ua9cf-\ua9d9\uaa00-\uaa36\uaa40-\uaa4d\uaa50-\uaa59\uaa60-\uaa76\uaa7a\uaa7b\uaa80-\uaac2\uaadb-\uaadd\uaae0-\uaaef\uaaf2-\uaaf6\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uabc0-\uabea\uabec\uabed\uabf0-\uabf9\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe00-\ufe0f\ufe20-\ufe26\ufe33\ufe34\ufe4d-\ufe4f\ufe70-\ufe74\ufe76-\ufefc\uff10-\uff19\uff21-\uff3a\uff3f\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc]");
typeof"esprima"[0]==="undefined"&&(V=function(a,b){return x.slice(a,b).join("")});h.version="1.0.0-dev";h.parse=function(a,c){var d;typeof a!=="string"&&!(a instanceof String)&&(a=String(a));x=a;i=0;J=x.length>0?1:0;N=0;I=x.length;ea=null;j=!0;q={};b=null;M=!1;o=!1;m=!1;k={};if(typeof c!=="undefined"){k.range=typeof c.range==="boolean"&&c.range;k.loc=typeof c.loc==="boolean"&&c.loc;k.raw=typeof c.raw==="boolean"&&c.raw;if(typeof c.tokens==="boolean"&&c.tokens)k.tokens=[];if(typeof c.comment==="boolean"&&
c.comment)k.comments=[];if(typeof c.tolerant==="boolean"&&c.tolerant)k.errors=[]}if(I>0&&typeof x[0]==="undefined"&&(a instanceof String&&(x=a.valueOf()),typeof x[0]==="undefined")){var e=a,f=e.length,n=[],g;for(g=0;g<f;++g)n[g]=e.charAt(g);x=n}Ob();try{d=tb();if(typeof k.comments!=="undefined")d.comments=k.comments;if(typeof k.tokens!=="undefined")d.tokens=k.tokens;if(typeof k.errors!=="undefined")d.errors=k.errors}catch(s){throw s;}finally{if(typeof k.skipComment==="function")wa=k.skipComment;if(k.raw)Ba=
k.createLiteral;if(k.range||k.loc||k.errors)Xa=k.parseAdditiveExpression,ia=k.parseAssignmentExpression,Za=k.parseBitwiseANDExpression,$a=k.parseBitwiseORExpression,ab=k.parseBitwiseXORExpression,Ia=k.parseBlock,La=k.parseFunctionSourceElements,jb=k.parseCallMember,sb=k.parseCatchClause,Ua=k.parseComputedMember,nb=k.parseConditionalExpression,pb=k.parseConstLetDeclaration,Ya=k.parseEqualityExpression,T=k.parseExpression,qb=k.parseForVariableDeclaration,db=k.parseFunctionDeclaration,ib=k.parseFunctionExpression,
bb=k.parseLogicalANDExpression,mb=k.parseLogicalORExpression,Wa=k.parseMultiplicativeExpression,Va=k.parseNewExpression,Ta=k.parseNonComputedMember,Na=k.parseNonComputedProperty,hb=k.parseObjectProperty,Ha=k.parseObjectPropertyKey,Sa=k.parsePrimaryExpression,kb=k.parsePostfixExpression,tb=k.parseProgram,Ra=k.parsePropertyFunction,Da=k.parseRelationalExpression,fa=k.parseStatement,lb=k.parseShiftExpression,rb=k.parseSwitchCase,Ca=k.parseUnaryExpression,ob=k.parseVariableDeclaration,oa=k.parseVariableIdentifier,
ha=k.consumeSemicolon;if(typeof k.scanRegExp==="function")Pa=k.advance,gb=k.scanRegExp;k={}}return d};h.Syntax=function(){var a,b={};typeof Object.create==="function"&&(b=Object.create(null));for(a in r)r.hasOwnProperty(a)&&(b[a]=r[a]);typeof Object.freeze==="function"&&Object.freeze(b);return b}()})(typeof exports==="undefined"?esprima={}:exports);define("esprima/esprima",function(){});
define("plugins/esprima/esprimaJsContentAssist","plugins/esprima/esprimaVisitor,plugins/esprima/typeEnvironment,plugins/esprima/typeInference,plugins/esprima/typeUtils,plugins/esprima/proposalUtils,plugins/esprima/scriptedLogger,orion/Deferred,esprima/esprima".split(","),function(h,b,j,o,q,m,M){function w(a,b,c){var b=b.params||[],d=[];a+="(";for(var e=b.length,f=0;f<e;f++)if(!(b[f].name==="new"||b[f].name==="this")){f>0&&(a+=", ");var g=b[f],h,j;if(g.type==="OptionalType")g=g.expression,h=!0;if(g.type===
"RestType")g=g.expression,j=!0;g=g.name||"arg"+f;j&&(g="..."+g);h&&(g="["+g+"]");d.push({offset:c+a.length+1,length:g.length});a+=g}a+=")";return{completion:a,positions:d.length===0?null:d}}function t(a,b,c,d){var e=function(a,c,e){if(!a.extras)a.extras={};if(!e){if(a.type==="Program"||a.type==="BlockStatement"&&q.inRange(b,a.range))throw"done";c.pop();return!1}if(a.range&&q.inRange(b-1,a.range)||a.type==="Program"){if(a.type==="Identifier")throw"done";c.push(a);if((a.type==="FunctionDeclaration"||
a.type==="FunctionExpression")&&a.nody&&q.isBefore(b,a.body.range))throw"done";if(a.type==="MemberExpression"&&!a.property&&q.afterDot(b,a,d))throw"done";return!0}else return!1},c=[];try{h.visit(a,c,e,e)}catch(f){if(f!=="done")throw f;}var g;if(c&&c.length){a=c.pop();for(e=0;e<c.length;e++)if((c[e].type==="FunctionDeclaration"||c[e].type==="FunctionExpression")&&(!c[e].id||!q.inRange(b,c[e].id.range,!0))){g=c[e];break}if(a.type==="MemberExpression")if(a.property&&q.inRange(b-1,a.property.range))return{kind:"member",
toDefer:g};else{if(q.inRange(b-1,a.range)&&q.afterDot(b,a,d))return{kind:"member",toDefer:g}}else if(!(a.type==="Program"||a.type==="BlockStatement"))if(a.type==="VariableDeclarator"&&(!a.init||q.isBefore(b,a.init.range)))return!1;else if((a.type==="FunctionDeclaration"||a.type==="FunctionExpression")&&q.isBefore(b,a.body.range))return!1}return{kind:"top",toDefer:g}}function y(a,b){var c=0,d=0,e,f,g;for(e=0;e<a.length;e++)if(f=a[e].range[0],g=a[e].range[1],!q.isBefore(f,b)||!q.isBefore(g,b))break;
if(e<a.length){for(c=e;e<a.length;e++)if(f=a[e].range[0],g=a[e].range[1],!q.inRange(f,b,!0)||!q.inRange(g,b,!0))break;d=e}return a.splice(c,d-c)}function e(a,b,c,d,f,g,h){var j,l,m,p=b.lookupQualifiedType(a),t=p.$$proto;h||(h=100);t&&e(t.typeObj.name,b,c,d,f,g,h-10);g["---dummy"+h]={proposal:"",description:"---------------------------------",relevance:h-1,style:"hr",unselectable:!0};var y=Object.getPrototypeOf(p),C=!Object.getPrototypeOf(y);for(j in p)if((p.hasOwnProperty(j)||!C&&y.hasOwnProperty(j))&&
!(j.charAt(0)==="$"&&j.charAt(1)==="$"))if(a=!t&&j.indexOf("$_$")===0?j.substring(3):j,!(a==="this"&&c==="member")&&p[j].typeObj&&q.looselyMatches(d,a)){l=p[j].typeObj;if(b._allTypes[l.name]&&b._allTypes[l.name].$$fntype)l=b._allTypes[l.name].$$fntype;l.type==="FunctionType"?(m=w(a,l,f-1),l=m.completion+" : "+o.createReadableType(l,b),g["$"+a]={proposal:m.completion,description:l,positions:m.positions,escapePosition:f+m.completion.length,relevance:h+5,style:"emphasis",overwrite:!0}):g["$"+a]={proposal:a,
relevance:h,description:a+" : "+o.createReadableType(l,b),style:"emphasis",overwrite:!0}}}function a(a,b,c,d){function e(g){for(var h in g)if(g.hasOwnProperty(h)&&h.indexOf(b)===0&&!d["$"+h]&&h!=="$$proto"&&h!=="$$isBuiltin"&&h!=="$$fntype"&&h!=="$$newtype"&&h!=="$$prototype"){var j=g[h].typeObj;if(j.type==="FunctionType"){var l=w(h,j,c-1);d[h]={proposal:l.completion.substring(b.length),description:h+" : "+o.createReadableType(j,a),positions:l.positions,escapePosition:c+l.completion.length,relevance:-99,
style:"noemphasis"}}else d[h]={proposal:h.substring(b.length),description:h+" : "+o.createReadableType(j,a),relevance:-100,style:"noemphasis"};f=!0}}var f=!1,g=a.getAllTypes(),h;for(h in g)g[h].$$proto&&e(g[h]);f&&(d["---dummy"]={proposal:"",description:"Non-inferred proposals",relevance:-98,style:"noemphasis",unselectable:!0})}function c(a,b){if(typeof a==="object")switch(a.type){case "NameExpression":b(a,b);break;case "ArrayType":c(a.expression,b);case "UnionType":a.elements&&a.elements.forEach(function(a){c(a,
b)});break;case "RecordType":a.fields&&a.fields.forEach(function(a){c(a,b)});break;case "FieldType":c(a.expression,b);break;case "FunctionType":a.params&&a.params.forEach(function(a){c(a,b)});a.result&&c(a.result,b);break;case "ParameterType":c(a.expression,b);break;case "TypeApplication":a.applications&&a.applications.forEach(function(a){c(a,b)});case "RestType":case "NonNullableType":case "OptionalType":case "NullableType":c(a.expression,b)}}function d(a,b,e){var a=b[a],f=function(a){e[a.name]||
(e[a.name]=!0,d(a.name,b,e))};if(a)for(var g in a)a.hasOwnProperty(g)&&g!=="$$isBuiltin"&&g!=="$$newtype"&&c(g==="$$fntype"?a[g]:a[g].typeObj,f)}function l(a,b,d,e){e=e||{};c(a,function(a,f){for(;d[a.name];)if(a.name=b[a.name].$$proto.typeObj.name,!a.name)a.name="Object";if(!e[a.name]){e[a.name]=!0;var g=b[a.name];if(g)for(var h in g)g.hasOwnProperty(h)&&h!=="$$isBuiltin"&&c(h==="$$fntype"?g[h]:g[h].typeObj,f)}})}function g(a,b){return a.type==="NameExpression"&&b[a.name]&&b[a.name].$$fntype}function R(a,
b,c){if(a.params)for(var d=0;d<a.params.length;d++){var e=a.params[d];if(g(e,b))c&&(c[e.name]=!0),R(b[e.name].$$fntype,b,c),a.params[d]=b[e.name].$$fntype}if(a.result&&g(a.result,b))c&&(c[a.result.name]=!0),R(b[a.result.name].$$fntype,b,c),a.result=b[a.result.name].$$fntype}function H(a,b,e,f){var b=doctrine.type.stringify(e,{compact:!0}),h=a.getAllTypes();h.clearDefaultGlobal();var j={},a=!0;e.type!=="NameExpression"?c(e,function(a){j[a.name]||(j[a.name]=!0,d(a.name,h,j))}):(d(b,h,j),j[b]||(j[b]=
!0,a=!1));for(var m in h)h.hasOwnProperty(m)&&!j[m]&&delete h[m];var p={};Object.keys(h).forEach(function(a){o.isEmpty(a,h)&&(p[a]=!0)});l(e,h,p);a||delete h[b];Object.keys(p).forEach(function(a){delete h[a]});var q={};Object.keys(h).forEach(function(a){var a=h[a],b;for(b in a)if(a.hasOwnProperty(b)){var c=a[b];if(b==="$$fntype")R(c,h,q);else{var d=c.typeObj;if(g(d,h))q[d.name]=!0,d=h[d.name].$$fntype;c.typeSig=doctrine.type.stringify(d,{compact:!0});delete c._typeObj}}});if(typeof f==="object")for(var t in f)if(f.hasOwnProperty(t))if(e=
f[t],t==="$$fntype")R(e,h,q);else if(e.typeObj){m=e.typeObj;if(g(m,h))q[m.name]=!0,m=h[m.name].$$fntype;e.typeSig=doctrine.type.stringify(m,{compact:!0});delete e._typeObj}Object.keys(q).forEach(function(a){delete h[a]})}function f(a,b){for(var c=0;c<a.length;c++){var d=a[c];if(d.type==="Block"&&(d.value.substring(0,6)==="jslint"||d.value.substring(0,6)==="jshint"))return d.value.match(ca)?"Window":d.value.match(ya)?"Module":"Global"}if(b&&b.options)if(b.options.browser===!0)return"Window";else if(b.options.node===
!0)return"Module";return"Global"}function p(a){var b=[],c;for(c in a)a.hasOwnProperty(c)&&b.push(a[c]);b.sort(function(a,b){if(a.relevance>b.relevance)return-1;else if(b.relevance>a.relevance)return 1;var c=a.description.toLowerCase(),d=b.description.toLowerCase();if(c<d)return-1;else if(d<c)return 1;return 0});a=[];for(c=b.length-1;c>=0&&b[c].description.indexOf("---")===0;)a[c]=!0,c--;for(c=0;c<b.length&&b[c].description.indexOf("---")===0;)a[c]=!0,c++;for(c+=1;c<b.length;)b[c].description.indexOf("---")===
0&&b[c-1].description.indexOf("---")===0&&(a[c]=!0),c++;var d=[];for(c=0;c<b.length;c++)a[c]||d.push(b[c]);return d}function C(a,b){this.indexer=a;this.lintOptions=b}var ca=/browser\s*:\s*true/,ya=/node\s*:\s*true/;C.prototype={computeContentAssist:function(a,b){var c=this;return M.all([a.getAST(),a.getText()]).then(function(a){return c._computeProposalsFromAST(a[0],a[1],b)})},_computeProposalsFromAST:function(c,d,g){function h(){var a=new M;a.resolve([]);return a.promise}if(g.selection&&g.selection.start!==
g.selection.end)return h();try{if(!c)return h();var l=g.offset,o=t(c,l,g.prefix,d);if(o){var q=this;return b.createEnvironment({buffer:d,uid:"local",offset:l,indexer:this.indexer,globalObjName:f(c.comments,this.lintOptions),comments:c.comments}).then(function(b){b.defer=o.toDefer;if(b.defer)b.deferredComments=y(b.comments,b.defer.range);try{var d=j.inferTypes(c,b,q.lintOptions),f={};e(d,b,o.kind,g.prefix,l-g.prefix.length,f);g.inferredOnly||a(b,g.prefix,l-g.prefix.length,f);return p(f)}catch(h){throw typeof m!==
"undefined"&&(m.error(h.message,"CONTENT_ASSIST"),m.error(h.stack,"CONTENT_ASSIST")),h;}})}else return h()}catch(w){throw typeof m!=="undefined"&&(m.error(w.message,"CONTENT_ASSIST"),m.error(w.stack,"CONTENT_ASSIST")),w;}},_internalFindDefinition:function(a,c,d){var e,l=h.parse(a);if(!l)return null;var m=[],a=b.createEnvironment({buffer:a,uid:"local",offset:c,indexer:this.indexer,globalObjName:f(l.comments,this.lintOptions),comments:l.comments});try{h.visit(l,{},function(a){if((a.type==="Identifier"||
a.type==="ThisExpression")&&q.inRange(c,a.range,!0))throw e=a,"done";if(a.range[0]>c&&(a.type==="ExpressionStatement"||a.type==="ReturnStatement"||a.type==="ifStatement"||a.type==="WhileStatement"||a.type==="Program"))throw"no hover";(a.type==="FunctionDeclaration"||a.type==="FunctionExpression")&&m.push(a);return!0},function(a){a===m[m.length-1]&&m.pop()})}catch(p){if(p==="no hover")return null;else if(p!=="done")throw p;}if(!e)return null;a.defer=m.pop();a.defer&&e===a.defer.id&&delete a.defer;
if(a.defer)a.deferredComments=y(a.comments,a.defer.range);var t=j.inferTypes(l,a,this.lintOptions),l=e.type==="Identifier"?e.name:"this";if(t=a.lookupTypeObj(l,e.extras.target||t,!0)){var w=a.getAllTypes();if(g(t.typeObj,w))R(w[t.typeObj.name].$$fntype,w),t.typeObj=w[t.typeObj.name].$$fntype;d=o.styleAsProperty(l,d)+" : "+o.createReadableType(t.typeObj,a,!0,0,d);t.hoverText=d;return t}else return null},computeHover:function(a,b){return this._internalFindDefinition(a,b,!0)},findDefinition:function(a,
b){return this._internalFindDefinition(a,b,!1)},computeSummary:function(a,c){var d=h.parse(a);if(!d)return null;var e=b.createEnvironment({buffer:a,uid:c,globalObjName:f(d.comments,this.lintOptions),comments:d.comments,indexer:this.indexer});try{j.inferTypes(d,e,this.lintOptions)}catch(g){throw typeof m!=="undefined"&&(m.error("Problem inferring in: "+c,"CONTENT_ASSIST"),m.error(g.message,"CONTENT_ASSIST"),m.error(g.stack,"CONTENT_ASSIST")),g;}var l,p;e.amdModule?(d=(p=e.amdModule.arguments)&&p.length>
0?o.extractReturnType(e.getFnType(p[p.length-1])):o.OBJECT_TYPE,p="AMD"):e.commonjsModule?(d=e.commonjsModule.arguments[0].params[1].extras.inferredTypeObj,l=e.findType(d)):(l=e.globalScope(),(d=l.exports||l.module&&e.getAllTypes()[l.module.typeObj.name]&&e.getAllTypes()[l.module.typeObj.name].exports)?(p="commonjs",d=d.typeObj):(p="global",d=l["this"].typeObj));!o.isFunctionOrConstructor(d)&&!e.findType(d).$$isBuiltin&&(l=e.findType(d));var q=e.getAllTypes();H(e,p,d,l);o.isFunctionOrConstructor(d)||
e.findType(d)&&e.findType(d).$$isBuiltin?l=doctrine.type.stringify(d,{compact:!0}):l.$$fntype&&(l=doctrine.type.stringify(l.$$fntype,{compact:!0}));return{provided:l,types:q,kind:p}}};return{EsprimaJavaScriptContentAssistProvider:C}});
define('built-esprimaJsContentAssistPlugin.js',["orion/plugin","plugins/esprima/esprimaJsContentAssist"],function(h,b){var j=new h({name:"Orion JavaScript Content Assist",version:"1.0",description:"This plugin provides content assist for JavaScript using the Esprima JavaScript parser."});j.registerServiceProvider("orion.edit.contentassist",new b.EsprimaJavaScriptContentAssistProvider,{contentType:["application/javascript"],name:"Esprima based JavaScript content assist",id:"orion.edit.contentassist.esprima"});
j.connect()});